In [ ]:
. ./nbs_header.ps1
. ./core.ps1
In [ ]:
{ . "$ScriptDir/../apps/builder/build.ps1" } | Invoke-Block
── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ # DibParser (Polyglot) │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── #!import ../../lib/fsharp/Notebooks.dib #!import ../../lib/fsharp/Testing.dib ── fsharp - import ───────────────────────────────────────────────────────────── #r "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Asp NetCore.Html.Abstractions.dll" #r "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot Net.Interactive.dll" #r "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot Net.Interactive.FSharp.dll" #r "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot Net.Interactive.Formatting.dll" open System open System.IO open System.Text open Microsoft.DotNet.Interactive.Formatting ── fsharp - import ───────────────────────────────────────────────────────────── #r "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot Net.Interactive.FSharp.dll" open Microsoft.DotNet.Interactive.FSharp.FSharpKernelHelpers #r "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot Net.Interactive.dll" open type Microsoft.DotNet.Interactive.Kernel ── fsharp - import ───────────────────────────────────────────────────────────── //// test Formatter.ListExpansionLimit <- 100 ── fsharp - import ───────────────────────────────────────────────────────────── #r @"../../../../../../../.nuget/packages/expecto/10.1.0/lib/net6.0/Expecto.dll" ── fsharp - import ───────────────────────────────────────────────────────────── //// test type AssertExceptionFormatter (ex) = member _.Text = ex.ToString() .Replace("32m", "<span style=\"color: green;\">") .Replace("36m", "</span>") .Replace("31m", "<span style=\"color: red;\">") .Replace("\n", "<br/>\n") Formatter.Register<AssertExceptionFormatter> ((fun (x : AssertExceptionFormatter) -> x.Text), "text/html") ── fsharp - import ───────────────────────────────────────────────────────────── //// test let inline __expect fn log expected actual = if log then printfn $"{actual.ToDisplayString ()}" try "Testing.__expect" |> fn actual expected with :? Expecto.AssertException as ex -> AssertExceptionFormatter(ex).Display () |> ignore failwith (ex.GetType().FullName) let inline __contains log expected actual = __expect Expecto.Expect.contains log expected actual let inline _contains expected actual = __contains true expected actual let inline __assert_eq log expected actual = __expect Expecto.Expect.equal log expected actual let inline _assert_eq expected actual = __assert_eq true expected actual let inline __isGreaterThan log expected actual = __expect Expecto.Expect.isGreaterThan log expected... ── fsharp - import ───────────────────────────────────────────────────────────── //// test let inline __isBetween log a b actual = let inline isBetween actual (a, b) _ = __isGreaterThanOrEqual log a actual __isLessThanOrEqual log b actual __expect isBetween log (a, b) actual let inline _isBetween a b actual = __isBetween true a b actual ── pwsh ──────────────────────────────────────────────────────────────────────── ls ~/.nuget/packages/argu ╭─[ 198.89ms - stdout ]────────────────────────────────────────────────────────╮ │ 6.2.2 │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── #r @"../../../../../../../.nuget/packages/fsharp.control.asyncseq/3.2.1/lib/netstan dard2.1/FSharp.Control.AsyncSeq.dll" #r @"../../../../../../../.nuget/packages/system.reactive/6.0.1-preview.1/lib/net6. 0/System.Reactive.dll" #r @"../../../../../../../.nuget/packages/system.reactive.linq/6.0.1-preview.1/lib/ netstandard2.0/System.Reactive.Linq.dll" #r @"../../../../../../../.nuget/packages/argu/6.2.2/lib/netstandard2.0/Argu.dll" #r @"../../../../../../../.nuget/packages/system.commandline/2.0.0-beta4.22272.1/li b/net6.0/System.CommandLine.dll" #r @"../../../../../../../.nuget/packages/fparsec/2.0.0-beta2/lib/netstandard2.1/FP arsec.dll" #r @"../../../../../../../.nuget/packages/fparsec/2.0.0-beta2/lib/netstandard2.1/FP arsecCS.dll" ── fsharp ────────────────────────────────────────────────────────────────────── #!import ../../lib/fsharp/Common.fs #!import ../../lib/fsharp/CommonFSharp.fs #!import ../../lib/fsharp/Async.fs #!import ../../lib/fsharp/AsyncSeq.fs #!import ../../lib/fsharp/Runtime.fs #!import ../../lib/fsharp/FileSystem.fs ── fsharp - import ───────────────────────────────────────────────────────────── #if !INTERACTIVE namespace Polyglot #endif module Common = let nl = System.Environment.NewLine let q = @"""" let inline cons head tail = head :: tail module String = let inline contains (value : string) (input : string) = input.Contains value let inline endsWith (value : string) (input : string) = input.EndsWith value let inline padLeft totalWidth paddingChar (input : string) = input.PadLeft (totalWidth, paddingChar) let inline replace (oldValue : string) (newValue : string) (input : string) = input.Replace (oldValue, newValue) let inline split separator (input : string) = input.Split separator let inline spli... ── fsharp - import ───────────────────────────────────────────────────────────── #if !INTERACTIVE namespace Polyglot #endif module CommonFSharp = open Common /// ## getUnionCaseName let inline getUnionCaseName<'T> (x: 'T) = match Reflection.FSharpValue.GetUnionFields(x, typeof<'T>) with | case, _ -> case.Name ── fsharp - import ───────────────────────────────────────────────────────────── #if !INTERACTIVE namespace Polyglot #endif module Async = open Common /// ## choice let inline choice asyncs = async { let e = Event<_> () use cts = new System.Threading.CancellationTokenSource () let fn = asyncs |> Seq.map (fun a -> async { let! x = a e.Trigger x }) |> Async.Parallel |> Async.Ignore Async.Start (fn, cts.Token) let! result = Async.AwaitEvent e.Publish cts.Cancel () return result } /// ## map let inline map fn a = async { let! x = a return fn x } /// ## catch let inline catch a = a |> Async.Catch ... ── fsharp - import ───────────────────────────────────────────────────────────── #if !INTERACTIVE namespace Polyglot #endif module AsyncSeq = open Common /// ## subscribeEvent let inline subscribeEvent (event: IEvent<'H, 'A>) map = let observable = System.Reactive.Linq.Observable.FromEventPattern<'H, 'A>(event.AddHandler, event.RemoveHandler) System.Reactive.Linq.Observable.Select (observable, fun event -> map event.EventArgs) |> FSharp.Control.AsyncSeq.ofObservableBuffered let subscribeToken (token : System.Threading.CancellationToken) = let tcs = new System.Threading.Tasks.TaskCompletionSource () System.Action tcs.SetResult |> token.Register |> ignore let start = System.DateTime.Now.Ticks FSharp.Control.AsyncSeq.unfoldAsync (fun (... ── fsharp - import ───────────────────────────────────────────────────────────── #if !INTERACTIVE namespace Polyglot #endif module Runtime = open Common /// ## isWindows let isWindows = fun () -> System.Runtime.InteropServices.RuntimeInformation.IsOSPlatform System.Runtime.InteropServices.OSPlatform.Windows |> memoize /// ## getExecutableSuffix let inline getExecutableSuffix () = if isWindows () then ".exe" else "" /// ## splitCommand type private CommandParseStep = | Start | Path of quoted: bool | Arguments let splitCommand (command: string) = let rec loop (path, args) chars step = match chars, step with | ('"' | '\'') :: tail, _ when path = "" -> loop (pat... ── fsharp - import ───────────────────────────────────────────────────────────── #if !INTERACTIVE namespace Polyglot #endif module FileSystem = open Common /// ## Operators module Operators = let inline (</>) a b = System.IO.Path.Combine (a, b) open Operators /// ## createTempDirectoryName let inline createTempDirectoryName () = let root = System.Reflection.Assembly.GetEntryAssembly().GetName().Name System.IO.Path.GetTempPath () </> $"!{root}" </> string (newGuidFromDateTime System.DateTime.Now) /// ## createTempDirectory let inline createTempDirectory () = let tempFolder = createTempDirectoryName () let result = System.IO.Directory.CreateDirectory tempFolder if not result.Exists then let ge... ── fsharp ────────────────────────────────────────────────────────────────────── open Common open FParsec ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## escapeCell (test) │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── //// test let inline escapeCell input = input |> String.split [[| '\n' |]] |> Array.map (function | line when line |> String.startsWith "\\#!" || line |> String.startsWith "\\#r" -> System.Text.RegularExpressions.Regex.Replace (line, "^\\\\#", "#") | line -> line ) |> String.concat "\n" ── fsharp ────────────────────────────────────────────────────────────────────── //// test $"a{nl}\\#!magic{nl}b{nl}" |> escapeCell |> _assert_eq ( $"a{nl}#!magic{nl}b{nl}" ) ╭─[ 34.83ms - stdout ]─────────────────────────────────────────────────────────╮ │ a │ │ #!magic │ │ b │ │ │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## magicMarker │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let magicMarker : Parser<string, unit> = pstring "#!" ── fsharp ────────────────────────────────────────────────────────────────────── //// test "#!magic" |> run magicMarker |> _assert_eq ( Success ("#!", (), Position ("", 2, 1, 3)) ) ╭─[ 26.71ms - stdout ]─────────────────────────────────────────────────────────╮ │ Success │ │ Item1: #! │ │ Item2: <null> │ │ Item3: Position │ │ Index: 2 │ │ Line: 1 │ │ Column: 3 │ │ StreamName: │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── //// test "##!magic" |> run magicMarker |> _assert_eq ( Failure ( $"Error in Ln: 1 Col: 1{nl}##!magic{nl}^{nl}Expecting: '#!'{nl}", ParserError ( Position ("", 0, 1, 1), (), ErrorMessageList (ExpectedString "#!") ), () ) ) ╭─[ 33.96ms - stdout ]─────────────────────────────────────────────────────────╮ │ Failure │ │ Item1: Error in Ln: 1 Col: 1 │ │ ##!magic │ │ ^ │ │ Expecting: '#!' │ │ │ │ Item2: ParserError │ │ Position: Position │ │ Index: 0 │ │ Line: 1 │ │ Column: 1 │ │ StreamName: │ │ UserState: <null> │ │ Messages: ErrorMessageList │ │ Head: ExpectedString │ │ String: #! │ │ Type: ExpectedString │ │ Tail: <null> │ │ Item3: <null> │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## magicCommand │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let magicCommand = magicMarker >>. manyTill anyChar newline |>> (System.String.Concat >> String.trim) ── fsharp ────────────────────────────────────────────────────────────────────── //// test "#!magic a" |> run magicCommand |> _assert_eq ( Success ("magic", (), Position ("", 8, 2, 1)) ) ╭─[ 68.75ms - stdout ]─────────────────────────────────────────────────────────╮ │ Success │ │ Item1: magic │ │ Item2: <null> │ │ Item3: Position │ │ Index: 8 │ │ Line: 2 │ │ Column: 1 │ │ StreamName: │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── //// test " #!magic a" |> run magicCommand |> _assert_eq ( Failure ( $"Error in Ln: 1 Col: 1{nl} #!magic{nl}^{nl}Expecting: '#!'{nl}", ParserError ( Position ("", 0, 1, 1), (), ErrorMessageList (ExpectedString "#!") ), () ) ) ╭─[ 18.17ms - stdout ]─────────────────────────────────────────────────────────╮ │ Failure │ │ Item1: Error in Ln: 1 Col: 1 │ │ #!magic │ │ ^ │ │ Expecting: '#!' │ │ │ │ Item2: ParserError │ │ Position: Position │ │ Index: 0 │ │ Line: 1 │ │ Column: 1 │ │ StreamName: │ │ UserState: <null> │ │ Messages: ErrorMessageList │ │ Head: ExpectedString │ │ String: #! │ │ Type: ExpectedString │ │ Tail: <null> │ │ Item3: <null> │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## content │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let content = (newline >>. magicMarker) <|> (eof >>. preturn "") |> attempt |> lookAhead |> manyTill anyChar |>> (System.String.Concat >> String.trim) ── fsharp ────────────────────────────────────────────────────────────────────── //// test "#!magic a " |> run content |> _assert_eq ( Success ("#!magic a", (), Position ("", 14, 7, 1)) ) ╭─[ 14.66ms - stdout ]─────────────────────────────────────────────────────────╮ │ Success │ │ Item1: #!magic │ │ │ │ │ │ a │ │ Item2: <null> │ │ Item3: Position │ │ Index: 14 │ │ Line: 7 │ │ Column: 1 │ │ StreamName: │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## Block │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── type Block = { magic : string content : string } ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## block │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let block = pipe2 magicCommand content (fun magic content -> { magic = magic content = content }) ── fsharp ────────────────────────────────────────────────────────────────────── //// test "#!magic a " |> run block |> _assert_eq ( Success ( { magic = "magic"; content = "a" }, (), Position ("", 14, 7, 1) ) ) ╭─[ 18.38ms - stdout ]─────────────────────────────────────────────────────────╮ │ Success │ │ Item1: Block │ │ magic: magic │ │ content: a │ │ Item2: <null> │ │ Item3: Position │ │ Index: 14 │ │ Line: 7 │ │ Column: 1 │ │ StreamName: │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## blocks │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let blocks = skipMany newline >>. sepEndBy block (skipMany1 newline) ── fsharp ────────────────────────────────────────────────────────────────────── //// test "#!magic1 a \#!magic2 b " |> escapeCell |> run blocks |> _assert_eq ( Success ( [[ { magic = "magic1"; content = "a" } { magic = "magic2"; content = "b" } ]], (), Position ("", 26, 9, 1) ) ) ╭─[ 25.10ms - stdout ]─────────────────────────────────────────────────────────╮ │ Success │ │ Item1: FSharpList<Block> │ │ - magic: magic1 │ │ content: a │ │ - magic: magic2 │ │ content: b │ │ Item2: <null> │ │ Item3: Position │ │ Index: 26 │ │ Line: 9 │ │ Column: 1 │ │ StreamName: │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## Output │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── type Output = | Fs | Md | Spi | Spir let inline kernelOutputs magic = match magic with | "fsharp" -> [[ Fs ]] | "markdown" -> [[ Md ]] | "spiral" -> [[ Spi; Spir ]] | _ -> [[]] ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## formatBlock │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let inline formatBlock output (block : Block) = match output, block with | output, { magic = "markdown"; content = content } -> let markdownComment = match output with | Spi | Spir -> "// // " | Fs -> "/// " | _ -> "" content |> String.split [[| '\n' |]] |> Array.map (String.trimEnd [[||]]) |> Array.filter (String.endsWith " (test)" >> not) |> Array.map (function | "" -> markdownComment |> String.trim | line -> System.Text.RegularExpressions.Regex.Replace (line, "^\\s*", $"$&{markdownComment}") ) |> String.concat "\n" | Fs, { magic = "fsharp"; content = content } -> let trimmedContent = content |> String.trim if trimmedContent |> String.startsWith "//// test" || trimmedContent |> String.startsWith "//// ignore" then "" else content |> String.split [[| '\n' |]] |> Array.filter (String.trimStart [[||]] >> String.startsWith "#r" >> not) |> String.concat "\n" | (Spi | Spir), { magic = "spiral"; content = content } -> let trimmedContent = content |> String.trim if trimmedContent |> String.startsWith "// // test" || trimmedContent |> String.startsWith "// // ignore" then "" else content | _ -> "" ── fsharp ────────────────────────────────────────────────────────────────────── //// test "#!markdown a b c \#!markdown c \#!fsharp let a = 1" |> escapeCell |> run block |> function | Success (block, _, _) -> formatBlock Fs block | Failure (msg, _, _) -> failwith msg |> _assert_eq "/// a /// /// b /// /// c" ╭─[ 32.59ms - stdout ]─────────────────────────────────────────────────────────╮ │ /// a │ │ /// │ │ /// b │ │ /// │ │ /// c │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## formatBlocks │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let inline formatBlocks output blocks = blocks |> List.map (formatBlock output) |> List.filter ((<>) "") |> String.concat "\n\n" |> fun s -> s + "\n" ── fsharp ────────────────────────────────────────────────────────────────────── //// test "#!markdown a b \#!markdown c \#!fsharp let a = 1 \#!markdown d (test) \#!fsharp //// test let a = 2 \#!markdown e \#!fsharp let a = 3" |> escapeCell |> run blocks |> function | Success (blocks, _, _) -> formatBlocks Fs blocks | Failure (msg, _, _) -> failwith msg |> _assert_eq "/// a /// /// b /// c let a = 1 /// e let a = 3 " ╭─[ 33.81ms - stdout ]─────────────────────────────────────────────────────────╮ │ /// a │ │ /// │ │ /// b │ │ │ │ /// c │ │ │ │ let a = 1 │ │ │ │ /// e │ │ │ │ let a = 3 │ │ │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## parse │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let inline parse output input = match run blocks input with | Success (blocks, _, _) -> let blocks = blocks |> List.filter (fun block -> block.magic |> kernelOutputs |> List.contains output || block.magic = "markdown" ) match blocks with | { magic = "markdown"; content = content } :: _ when output = Fs && content |> String.startsWith "# " && content |> String.endsWith ")" -> let inline indentBlock (block : Block) = { block with content = block.content |> String.split [[| '\n' |]] |> Array.fold (fun (lines, isMultiline) line -> let trimmedLine = line |> String.trim if trimmedLine = "" then "" :: lines, isMultiline else let inline singleQuoteLine () = trimmedLine |> Seq.sumBy ((=) '"' >> System.Convert.ToInt32) = 1 && trimmedLine |> String.contains @"'""'" |> not && trimmedLine |> String.endsWith "{" |> not && trimmedLine |> String.endsWith "{|" |> not && trimmedLine |> String.startsWith "}" |> not && trimmedLine |> String.startsWith "|}" |> not match isMultiline, trimmedLine |> String.splitString [[| $"{q}{q}{q}" |]] with | false, [[| _; _ |]] -> $" {line}" :: lines, true | true, [[| _; _ |]] -> line :: lines, false | false, _ when singleQuoteLine () -> $" {line}" :: lines, true | false, _ when line |> String.startsWith "#" && block.magic = "fsharp" -> line :: lines, false | false, _ -> $" {line}" :: lines, false | true, _ when singleQuoteLine () && line |> String.startsWith " " -> $" {line}" :: lines, false | true, _ when singleQuoteLine () -> line :: lines, false | true, _ -> line :: lines, true ) ([[]], false) |> fst |> List.rev |> String.concat "\n" } let moduleName, namespaceName = System.Text.RegularExpressions.Regex.Match (content, @"# (.*) \((.*)\)$") |> fun m -> m.Groups.[[1]].Value, m.Groups.[[2]].Value let moduleBlock = { magic = "fsharp" content = $"#if !INTERACTIVE namespace {namespaceName} #endif module {moduleName} =" } blocks |> List.indexed |> List.fold (fun blocks (index, block) -> match index with | 0 -> blocks | 1 -> indentBlock block :: moduleBlock :: blocks | _ -> indentBlock block :: blocks ) [[]] |> List.rev | _ -> blocks |> Result.Ok | Failure (errorMsg, _, _) -> Result.Error errorMsg ── fsharp ────────────────────────────────────────────────────────────────────── //// test let example1 = $"""#!meta {{"kernelInfo":{{"defaultKernelName":"fsharp","items":[[{{"aliases":[[]],"name": "fsharp"}},{{"aliases":[[]],"name":"fsharp"}}]]}}}} \#!markdown # TestModule (TestNamespace) \#!fsharp \#!import file.dib \#!fsharp \#r "nuget:Expecto" \#!markdown ## ParserLibrary \#!fsharp open System \#!markdown ## x (test) \#!fsharp //// ignore let x = 1 \#!spiral // // test inl x = 0i32 \#!spiral inl x = 0i32 \#!markdown ### TextInput \#!fsharp let str1 = "abc def" let str2 = "abc\ def" let str3 = $"1{{ 1 }}1" let str4 = $"1{{({{| a = 1 |}}).a}}1" let str5 = "abc \ def" let x = match '"' with | '"' -> true | _ -> false let long1 = {q}{q}{q}a{q}{q}{q} let long2 = {q}{q}{q} a {q}{q}{q} \#!fsharp type Position = {{ #if INTERACTIVE line : string #else line : int #endif column : int }}""" |> escapeCell ── fsharp ────────────────────────────────────────────────────────────────────── //// test example1 |> parse Fs |> Result.toOption |> Option.get |> (formatBlocks Fs) |> _assert_eq $"""#if !INTERACTIVE namespace TestNamespace #endif module TestModule = /// ## ParserLibrary open System /// ### TextInput let str1 = "abc def" let str2 = "abc\ def" let str3 = $"1{{ 1 }}1" let str4 = $"1{{({{| a = 1 |}}).a}}1" let str5 = "abc \ def" let x = match '"' with | '"' -> true | _ -> false let long1 = {q}{q}{q}a{q}{q}{q} let long2 = {q}{q}{q} a {q}{q}{q} type Position = {{ #if INTERACTIVE line : string #else line : int #endif column : int }} """ ╭─[ 149.12ms - stdout ]────────────────────────────────────────────────────────╮ │ #if !INTERACTIVE │ │ namespace TestNamespace │ │ #endif │ │ │ │ module TestModule = │ │ │ │ /// ## ParserLibrary │ │ │ │ open System │ │ │ │ /// ### TextInput │ │ │ │ let str1 = "abc │ │ def" │ │ │ │ let str2 = │ │ "abc\ │ │ def" │ │ │ │ let str3 = │ │ $"1{ │ │ 1 │ │ }1" │ │ │ │ let str4 = │ │ $"1{({| │ │ a = 1 │ │ |}).a}1" │ │ │ │ let str5 = │ │ "abc \ │ │ def" │ │ │ │ let x = │ │ match '"' with │ │ | '"' -> true │ │ | _ -> false │ │ │ │ let long1 = """a""" │ │ │ │ let long2 = │ │ """ │ │ a │ │ """ │ │ │ │ type Position = │ │ { │ │ #if INTERACTIVE │ │ line : string │ │ #else │ │ line : int │ │ #endif │ │ column : int │ │ } │ │ │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── //// test example1 |> parse Md |> Result.toOption |> Option.get |> (formatBlocks Md) |> _assert_eq "# TestModule (TestNamespace) ## ParserLibrary ### TextInput " ╭─[ 86.12ms - stdout ]─────────────────────────────────────────────────────────╮ │ # TestModule (TestNamespace) │ │ │ │ ## ParserLibrary │ │ │ │ ### TextInput │ │ │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── //// test example1 |> parse Spi |> Result.toOption |> Option.get |> (formatBlocks Spi) |> _assert_eq "// // # TestModule (TestNamespace) // // ## ParserLibrary inl x = 0i32 // // ### TextInput " ╭─[ 86.32ms - stdout ]─────────────────────────────────────────────────────────╮ │ // // # TestModule (TestNamespace) │ │ │ │ // // ## ParserLibrary │ │ │ │ inl x = 0i32 │ │ │ │ // // ### TextInput │ │ │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## parseDibCode │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let inline parseDibCode output file = async { let getLocals () = $"output: {output} / file: {file} / {getLocals ()}" trace Debug (fun () -> "parseDibCode") getLocals let! input = file |> FileSystem.readAllTextAsync match parse output input with | Result.Ok blocks -> return blocks |> formatBlocks output | Result.Error msg -> return failwith msg } ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## writeDibCode │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let inline writeDibCode output path = async { let getLocals () = $"output: {output} / path: {path} / {getLocals ()}" trace Debug (fun () -> "writeDibCode") getLocals let! result = parseDibCode output path let outputPath = path |> String.replace ".dib" $".{output |> string |> String.toLower}" do! result |> FileSystem.writeAllTextAsync outputPath } ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## Arguments │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── [[<RequireQualifiedAccess>]] type Arguments = | [[<Argu.ArguAttributes.MainCommand; Argu.ArguAttributes.Mandatory>]] File of file : string * Output interface Argu.IArgParserTemplate with member s.Usage = match s with | File _ -> nameof File ── fsharp ────────────────────────────────────────────────────────────────────── //// test Argu.ArgumentParser.Create<Arguments>().PrintUsage () ╭─[ 75.34ms - return value ]───────────────────────────────────────────────────╮ │ USAGE: dotnet-repl [--help] <file> <fs|md|spi|spir> │ │ │ │ FILE: │ │ │ │ <file> <fs|md|spi|spir> │ │ File │ │ │ │ OPTIONS: │ │ │ │ --help display this list of options. │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## main │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let main args = let argsMap = args |> Runtime.parseArgsMap<Arguments> let files = argsMap.[[nameof Arguments.File]] |> List.map (function | Arguments.File (path, output) -> path, output ) files |> List.map (fun (path, output) -> path |> writeDibCode output) |> Async.Parallel |> Async.Ignore |> Async.runWithTimeout 30000 |> function | Some () -> 0 | None -> 1 ── fsharp ────────────────────────────────────────────────────────────────────── //// test let args = System.Environment.GetEnvironmentVariable "ARGS" |> Runtime.splitArgs |> Seq.toArray match args with | [[||]] -> 0 | args -> if main args = 0 then 0 else failwith "main failed" ╭─[ 109.08ms - return value ]──────────────────────────────────────────────────╮ │ <div class="dni-plaintext"><pre>0</pre></div><style> │ │ .dni-code-hint { │ │ font-style: italic; │ │ overflow: hidden; │ │ white-space: nowrap; │ │ } │ │ .dni-treeview { │ │ white-space: nowrap; │ │ } │ │ .dni-treeview td { │ │ vertical-align: top; │ │ text-align: start; │ │ } │ │ details.dni-treeview { │ │ padding-left: 1em; │ │ } │ │ table td { │ │ text-align: start; │ │ } │ │ table tr { │ │ vertical-align: top; │ │ margin: 0em 0px; │ │ } │ │ table tr td pre │ │ { │ │ vertical-align: top !important; │ │ margin: 0em 0px !important; │ │ } │ │ table th { │ │ text-align: start; │ │ } │ │ </style> │ ╰──────────────────────────────────────────────────────────────────────────────╯ ╭─[ 110.36ms - stdout ]────────────────────────────────────────────────────────╮ │ 00:00:00 #1 [Debug] writeDibCode / output: Fs / path: Builder.dib │ │ 00:00:00 #2 [Debug] parseDibCode / output: Fs / file: Builder.dib │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ # Builder (Polyglot) │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── #!import ../../lib/fsharp/Notebooks.dib #!import ../../lib/fsharp/Testing.dib ── fsharp - import ───────────────────────────────────────────────────────────── #r "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Asp NetCore.Html.Abstractions.dll" #r "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot Net.Interactive.dll" #r "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot Net.Interactive.FSharp.dll" #r "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot Net.Interactive.Formatting.dll" open System open System.IO open System.Text open Microsoft.DotNet.Interactive.Formatting ── fsharp - import ───────────────────────────────────────────────────────────── #r "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot Net.Interactive.FSharp.dll" open Microsoft.DotNet.Interactive.FSharp.FSharpKernelHelpers #r "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot Net.Interactive.dll" open type Microsoft.DotNet.Interactive.Kernel ── fsharp - import ───────────────────────────────────────────────────────────── //// test Formatter.ListExpansionLimit <- 100 ── fsharp - import ───────────────────────────────────────────────────────────── #r @"../../../../../../../.nuget/packages/expecto/10.1.0/lib/net6.0/Expecto.dll" ── fsharp - import ───────────────────────────────────────────────────────────── //// test type AssertExceptionFormatter (ex) = member _.Text = ex.ToString() .Replace("32m", "<span style=\"color: green;\">") .Replace("36m", "</span>") .Replace("31m", "<span style=\"color: red;\">") .Replace("\n", "<br/>\n") Formatter.Register<AssertExceptionFormatter> ((fun (x : AssertExceptionFormatter) -> x.Text), "text/html") ── fsharp - import ───────────────────────────────────────────────────────────── //// test let inline __expect fn log expected actual = if log then printfn $"{actual.ToDisplayString ()}" try "Testing.__expect" |> fn actual expected with :? Expecto.AssertException as ex -> AssertExceptionFormatter(ex).Display () |> ignore failwith (ex.GetType().FullName) let inline __contains log expected actual = __expect Expecto.Expect.contains log expected actual let inline _contains expected actual = __contains true expected actual let inline __assert_eq log expected actual = __expect Expecto.Expect.equal log expected actual let inline _assert_eq expected actual = __assert_eq true expected actual let inline __isGreaterThan log expected actual = __expect Expecto.Expect.isGreaterThan log expected... ── fsharp - import ───────────────────────────────────────────────────────────── //// test let inline __isBetween log a b actual = let inline isBetween actual (a, b) _ = __isGreaterThanOrEqual log a actual __isLessThanOrEqual log b actual __expect isBetween log (a, b) actual let inline _isBetween a b actual = __isBetween true a b actual ── fsharp ────────────────────────────────────────────────────────────────────── #r @"../../../../../../../.nuget/packages/fsharp.control.asyncseq/3.2.1/lib/netstan dard2.1/FSharp.Control.AsyncSeq.dll" #r @"../../../../../../../.nuget/packages/system.reactive/6.0.1-preview.1/lib/net6. 0/System.Reactive.dll" #r @"../../../../../../../.nuget/packages/system.reactive.linq/6.0.1-preview.1/lib/ netstandard2.0/System.Reactive.Linq.dll" #r @"../../../../../../../.nuget/packages/argu/6.2.2/lib/netstandard2.0/Argu.dll" #r @"../../../../../../../.nuget/packages/system.commandline/2.0.0-beta4.22272.1/li b/net6.0/System.CommandLine.dll" ── fsharp ────────────────────────────────────────────────────────────────────── #!import ../../lib/fsharp/Common.fs #!import ../../lib/fsharp/CommonFSharp.fs #!import ../../lib/fsharp/Async.fs #!import ../../lib/fsharp/AsyncSeq.fs #!import ../../lib/fsharp/Networking.fs #!import ../../lib/fsharp/Runtime.fs #!import ../../lib/fsharp/FileSystem.fs ── fsharp - import ───────────────────────────────────────────────────────────── #if !INTERACTIVE namespace Polyglot #endif module Common = let nl = System.Environment.NewLine let q = @"""" let inline cons head tail = head :: tail module String = let inline contains (value : string) (input : string) = input.Contains value let inline endsWith (value : string) (input : string) = input.EndsWith value let inline padLeft totalWidth paddingChar (input : string) = input.PadLeft (totalWidth, paddingChar) let inline replace (oldValue : string) (newValue : string) (input : string) = input.Replace (oldValue, newValue) let inline split separator (input : string) = input.Split separator let inline spli... ── fsharp - import ───────────────────────────────────────────────────────────── #if !INTERACTIVE namespace Polyglot #endif module CommonFSharp = open Common /// ## getUnionCaseName let inline getUnionCaseName<'T> (x: 'T) = match Reflection.FSharpValue.GetUnionFields(x, typeof<'T>) with | case, _ -> case.Name ── fsharp - import ───────────────────────────────────────────────────────────── #if !INTERACTIVE namespace Polyglot #endif module Async = open Common /// ## choice let inline choice asyncs = async { let e = Event<_> () use cts = new System.Threading.CancellationTokenSource () let fn = asyncs |> Seq.map (fun a -> async { let! x = a e.Trigger x }) |> Async.Parallel |> Async.Ignore Async.Start (fn, cts.Token) let! result = Async.AwaitEvent e.Publish cts.Cancel () return result } /// ## map let inline map fn a = async { let! x = a return fn x } /// ## catch let inline catch a = a |> Async.Catch ... ── fsharp - import ───────────────────────────────────────────────────────────── #if !INTERACTIVE namespace Polyglot #endif module AsyncSeq = open Common /// ## subscribeEvent let inline subscribeEvent (event: IEvent<'H, 'A>) map = let observable = System.Reactive.Linq.Observable.FromEventPattern<'H, 'A>(event.AddHandler, event.RemoveHandler) System.Reactive.Linq.Observable.Select (observable, fun event -> map event.EventArgs) |> FSharp.Control.AsyncSeq.ofObservableBuffered let subscribeToken (token : System.Threading.CancellationToken) = let tcs = new System.Threading.Tasks.TaskCompletionSource () System.Action tcs.SetResult |> token.Register |> ignore let start = System.DateTime.Now.Ticks FSharp.Control.AsyncSeq.unfoldAsync (fun (... ── fsharp - import ───────────────────────────────────────────────────────────── #if !INTERACTIVE namespace Polyglot #endif module Networking = open Common /// ## testPortOpen let inline testPortOpen port = async { let! ct = Async.CancellationToken use client = new System.Net.Sockets.TcpClient () try do! client.ConnectAsync ("127.0.0.1", port, ct) |> Async.awaitValueTaskUnit return true with ex -> trace Verbose (fun () -> $"testPortOpen / ex: {ex |> printException}") getLocals return false } let inline testPortOpenTimeout timeout port = async { let! result = testPortOpen port |> Async.runWithTimeoutAsync timeout return match result with | None -> false ... ── fsharp - import ───────────────────────────────────────────────────────────── #if !INTERACTIVE namespace Polyglot #endif module Runtime = open Common /// ## isWindows let isWindows = fun () -> System.Runtime.InteropServices.RuntimeInformation.IsOSPlatform System.Runtime.InteropServices.OSPlatform.Windows |> memoize /// ## getExecutableSuffix let inline getExecutableSuffix () = if isWindows () then ".exe" else "" /// ## splitCommand type private CommandParseStep = | Start | Path of quoted: bool | Arguments let splitCommand (command: string) = let rec loop (path, args) chars step = match chars, step with | ('"' | '\'') :: tail, _ when path = "" -> loop (pat... ── fsharp - import ───────────────────────────────────────────────────────────── #if !INTERACTIVE namespace Polyglot #endif module FileSystem = open Common /// ## Operators module Operators = let inline (</>) a b = System.IO.Path.Combine (a, b) open Operators /// ## createTempDirectoryName let inline createTempDirectoryName () = let root = System.Reflection.Assembly.GetEntryAssembly().GetName().Name System.IO.Path.GetTempPath () </> $"!{root}" </> string (newGuidFromDateTime System.DateTime.Now) /// ## createTempDirectory let inline createTempDirectory () = let tempFolder = createTempDirectoryName () let result = System.IO.Directory.CreateDirectory tempFolder if not result.Exists then let ge... ── fsharp ────────────────────────────────────────────────────────────────────── open Common open FileSystem.Operators ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## buildProject │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let inline buildProject runtime outputDir path = async { let fullPath = path |> System.IO.Path.GetFullPath let fileDir = fullPath |> System.IO.Path.GetDirectoryName let extension = fullPath |> System.IO.Path.GetExtension let getLocals () = $"fullPath: {fullPath} / {getLocals ()}" trace Debug (fun () -> "buildProject") getLocals match extension with | ".fsproj" -> () | _ -> failwith "Invalid project file" let runtimes = runtime |> Option.map List.singleton |> Option.defaultValue [[ "linux-x64"; "win-x64" ]] let outputDir = outputDir |> Option.defaultValue "dist" return! runtimes |> List.map (fun runtime -> async { let! exitCode, _result = Runtime.executeWithOptionsAsync { Command = $@"dotnet publish ""{path}"" --configuration Release --output ""{outputDir}"" --runtime {runtime}" CancellationToken = None OnLine = None WorkingDirectory = Some fileDir } return exitCode }) |> Async.Sequential |> Async.map Array.sum } ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## persistCodeProject │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let inline persistCodeProject packages modules name code = async { let getLocals () = $"packages: {packages} / modules: {modules} / name: {name} / code.Length: {code |> String.length} / {getLocals ()}" trace Debug (fun () -> "persistCodeProject") getLocals let repositoryRoot = FileSystem.getSourceDirectory () |> FileSystem.findParent ".paket" false let targetDir = repositoryRoot </> "target/polyglot/builder" </> name System.IO.Directory.CreateDirectory targetDir |> ignore let filePath = targetDir </> $"{name}.fs" |> System.IO.Path.GetFullPath do! code |> FileSystem.writeAllTextExists filePath let modulesCode = modules |> List.map (fun path -> $"""<Compile Include="{repositoryRoot </> path}" />""") |> String.concat "\n " let fsprojPath = targetDir </> $"{name}.fsproj" let fsprojCode = $"""<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFramework>net9.0</TargetFramework> <LangVersion>preview</LangVersion> <RollForward>Major</RollForward> <TargetLatestRuntimePatch>true</TargetLatestRuntimePatch> <PublishAot>false</PublishAot> <PublishTrimmed>false</PublishTrimmed> <PublishSingleFile>true</PublishSingleFile> <SelfContained>true</SelfContained> <Version>0.0.1-alpha.1</Version> <OutputType>Exe</OutputType> </PropertyGroup> <ItemGroup> {modulesCode} <Compile Include="{filePath}" /> </ItemGroup> <Import Project="{repositoryRoot}/.paket/Paket.Restore.targets" /> </Project> """ do! fsprojCode |> FileSystem.writeAllTextExists fsprojPath let paketReferencesPath = targetDir </> "paket.references" let paketReferencesCode = "FSharp.Core" :: packages |> String.concat "\n" do! paketReferencesCode |> FileSystem.writeAllTextExists paketReferencesPath return fsprojPath } ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## buildCode │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let inline buildCode runtime packages modules outputDir name code = async { let! fsprojPath = code |> persistCodeProject packages modules name return! fsprojPath |> buildProject runtime outputDir } ── fsharp ────────────────────────────────────────────────────────────────────── //// test "1 + 1 |> ignore" |> buildCode None [[]] [[]] None "test1" |> Async.runWithTimeout 180000 |> _assert_eq (Some 0) ╭─[ 11.19s - stdout ]──────────────────────────────────────────────────────────╮ │ 00:00:00 #1 [Debug] persistCodeProject / packages: [] / modules: [] / name: │ │ test1 / code.Length: 15 │ │ 00:00:00 #2 [Debug] buildProject / fullPath: │ │ /home/runner/work/polyglot/polyglot/target/polyglot/builder/test1/test1.fspr │ │ oj │ │ 00:00:00 #3 [Debug] executeAsync / options: { Command = │ │ "dotnet publish │ │ "/home/runner/work/polyglot/polyglot/target/polyglot/builder/test1/test1.fsp │ │ roj" --configuration Release --output "dist" --runtime linux-x64" │ │ WorkingDirectory = │ │ Some "/home/runner/work/polyglot/polyglot/target/polyglot/builder/test1" │ │ CancellationToken = None │ │ OnLine = None } │ │ 00:00:00 #4 [Verbose] > MSBuild version 17.10.0-preview-24101-01+07fd5d51f │ │ for .NET │ │ 00:00:00 #5 [Verbose] > Determining projects to restore... │ │ 00:00:01 #6 [Verbose] > Paket version │ │ 8.1.0-alpha001+27cb9f111f156e8b68d08dc293857425c0ade23d │ │ 00:00:01 #7 [Verbose] > The last full restore is still up to date. Nothing │ │ left to do. │ │ 00:00:01 #8 [Verbose] > Total time taken: 0 milliseconds │ │ 00:00:01 #9 [Verbose] > Paket version │ │ 8.1.0-alpha001+27cb9f111f156e8b68d08dc293857425c0ade23d │ │ 00:00:01 #10 [Verbose] > Restoring │ │ /home/runner/work/polyglot/polyglot/target/polyglot/builder/test1/test1.fspr │ │ oj │ │ 00:00:01 #11 [Verbose] > Starting restore process. │ │ 00:00:02 #12 [Verbose] > Total time taken: 0 milliseconds │ │ 00:00:04 #13 [Verbose] > Restored │ │ /home/runner/work/polyglot/polyglot/target/polyglot/builder/test1/test1.fspr │ │ oj (in 1.68 sec). │ │ 00:00:04 #14 [Verbose] > │ │ /usr/share/dotnet/sdk/9.0.100-preview.1.24101.2/Sdks/Microsoft.NET.Sdk/targe │ │ ts/Microsoft.NET.RuntimeIdentifierInference.targets(313,5): message │ │ NETSDK1057: You are using a preview version of .NET. See: │ │ https://aka.ms/dotnet-support-policy [ │ │ /home/runner/work/polyglot/polyglot/target/polyglot/builder/test1/test1.fspr │ │ oj] │ │ 00:00:05 #15 [Verbose] > │ │ /home/runner/work/polyglot/polyglot/target/polyglot/builder/test1/test1.fs(1 │ │ ,16): warning FS0988: Main module of program is empty: nothing will happen │ │ when it is run [ │ │ /home/runner/work/polyglot/polyglot/target/polyglot/builder/test1/test1.fspr │ │ oj] │ │ 00:00:05 #16 [Verbose] > test1 -> │ │ /home/runner/work/polyglot/polyglot/target/polyglot/builder/test1/bin/Releas │ │ e/net9.0/linux-x64/test1.dll │ │ 00:00:06 #17 [Verbose] > test1 -> │ │ /home/runner/work/polyglot/polyglot/target/polyglot/builder/test1/dist │ │ 00:00:06 #18 [Debug] executeAsync / exitCode: 0 / output.Length: 1365 │ │ 00:00:06 #19 [Debug] executeAsync / options: { Command = │ │ "dotnet publish │ │ "/home/runner/work/polyglot/polyglot/target/polyglot/builder/test1/test1.fsp │ │ roj" --configuration Release --output "dist" --runtime win-x64" │ │ WorkingDirectory = │ │ Some "/home/runner/work/polyglot/polyglot/target/polyglot/builder/test1" │ │ CancellationToken = None │ │ OnLine = None } │ │ 00:00:06 #20 [Verbose] > MSBuild version 17.10.0-preview-24101-01+07fd5d51f │ │ for .NET │ │ 00:00:06 #21 [Verbose] > Determining projects to restore... │ │ 00:00:08 #22 [Verbose] > Restored │ │ /home/runner/work/polyglot/polyglot/target/polyglot/builder/test1/test1.fspr │ │ oj (in 1.64 sec). │ │ 00:00:08 #23 [Verbose] > │ │ /usr/share/dotnet/sdk/9.0.100-preview.1.24101.2/Sdks/Microsoft.NET.Sdk/targe │ │ ts/Microsoft.NET.RuntimeIdentifierInference.targets(313,5): message │ │ NETSDK1057: You are using a preview version of .NET. See: │ │ https://aka.ms/dotnet-support-policy [ │ │ /home/runner/work/polyglot/polyglot/target/polyglot/builder/test1/test1.fspr │ │ oj] │ │ 00:00:10 #24 [Verbose] > │ │ /home/runner/work/polyglot/polyglot/target/polyglot/builder/test1/test1.fs(1 │ │ ,16): warning FS0988: Main module of program is empty: nothing will happen │ │ when it is run [ │ │ /home/runner/work/polyglot/polyglot/target/polyglot/builder/test1/test1.fspr │ │ oj] │ │ 00:00:10 #25 [Verbose] > test1 -> │ │ /home/runner/work/polyglot/polyglot/target/polyglot/builder/test1/bin/Releas │ │ e/net9.0/win-x64/test1.dll │ │ 00:00:10 #26 [Verbose] > test1 -> │ │ /home/runner/work/polyglot/polyglot/target/polyglot/builder/test1/dist │ │ 00:00:10 #27 [Debug] executeAsync / exitCode: 0 / output.Length: 965 │ │ FSharpOption<Int32> │ │ Value: 0 │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── //// test "1 + a |> ignore" |> buildCode None [[]] [[]] None "test2" |> Async.runWithTimeout 180000 |> _assert_eq (Some 2) ╭─[ 5.92s - stdout ]───────────────────────────────────────────────────────────╮ │ 00:00:11 #28 [Debug] persistCodeProject / packages: [] / modules: [] / name: │ │ test2 / code.Length: 15 │ │ 00:00:11 #29 [Debug] buildProject / fullPath: │ │ /home/runner/work/polyglot/polyglot/target/polyglot/builder/test2/test2.fspr │ │ oj │ │ 00:00:11 #30 [Debug] executeAsync / options: { Command = │ │ "dotnet publish │ │ "/home/runner/work/polyglot/polyglot/target/polyglot/builder/test2/test2.fsp │ │ roj" --configuration Release --output "dist" --runtime linux-x64" │ │ WorkingDirectory = │ │ Some "/home/runner/work/polyglot/polyglot/target/polyglot/builder/test2" │ │ CancellationToken = None │ │ OnLine = None } │ │ 00:00:11 #31 [Verbose] > MSBuild version 17.10.0-preview-24101-01+07fd5d51f │ │ for .NET │ │ 00:00:11 #32 [Verbose] > Determining projects to restore... │ │ 00:00:11 #33 [Verbose] > Paket version │ │ 8.1.0-alpha001+27cb9f111f156e8b68d08dc293857425c0ade23d │ │ 00:00:12 #34 [Verbose] > The last full restore is still up to date. │ │ Nothing left to do. │ │ 00:00:12 #35 [Verbose] > Total time taken: 0 milliseconds │ │ 00:00:12 #36 [Verbose] > Paket version │ │ 8.1.0-alpha001+27cb9f111f156e8b68d08dc293857425c0ade23d │ │ 00:00:12 #37 [Verbose] > Restoring │ │ /home/runner/work/polyglot/polyglot/target/polyglot/builder/test2/test2.fspr │ │ oj │ │ 00:00:12 #38 [Verbose] > Starting restore process. │ │ 00:00:12 #39 [Verbose] > Total time taken: 0 milliseconds │ │ 00:00:13 #40 [Verbose] > Restored │ │ /home/runner/work/polyglot/polyglot/target/polyglot/builder/test2/test2.fspr │ │ oj (in 253 ms). │ │ 00:00:13 #41 [Verbose] > │ │ /usr/share/dotnet/sdk/9.0.100-preview.1.24101.2/Sdks/Microsoft.NET.Sdk/targe │ │ ts/Microsoft.NET.RuntimeIdentifierInference.targets(313,5): message │ │ NETSDK1057: You are using a preview version of .NET. See: │ │ https://aka.ms/dotnet-support-policy [ │ │ /home/runner/work/polyglot/polyglot/target/polyglot/builder/test2/test2.fspr │ │ oj] │ │ 00:00:14 #42 [Verbose] > │ │ /home/runner/work/polyglot/polyglot/target/polyglot/builder/test2/test2.fs(1 │ │ ,5): error FS0039: The value or constructor 'a' is not defined. [ │ │ /home/runner/work/polyglot/polyglot/target/polyglot/builder/test2/test2.fspr │ │ oj] │ │ 00:00:14 #43 [Debug] executeAsync / exitCode: 1 / output.Length: 1138 │ │ 00:00:14 #44 [Debug] executeAsync / options: { Command = │ │ "dotnet publish │ │ "/home/runner/work/polyglot/polyglot/target/polyglot/builder/test2/test2.fsp │ │ roj" --configuration Release --output "dist" --runtime win-x64" │ │ WorkingDirectory = │ │ Some "/home/runner/work/polyglot/polyglot/target/polyglot/builder/test2" │ │ CancellationToken = None │ │ OnLine = None } │ │ 00:00:14 #45 [Verbose] > MSBuild version 17.10.0-preview-24101-01+07fd5d51f │ │ for .NET │ │ 00:00:15 #46 [Verbose] > Determining projects to restore... │ │ 00:00:15 #47 [Verbose] > Restored │ │ /home/runner/work/polyglot/polyglot/target/polyglot/builder/test2/test2.fspr │ │ oj (in 257 ms). │ │ 00:00:15 #48 [Verbose] > │ │ /usr/share/dotnet/sdk/9.0.100-preview.1.24101.2/Sdks/Microsoft.NET.Sdk/targe │ │ ts/Microsoft.NET.RuntimeIdentifierInference.targets(313,5): message │ │ NETSDK1057: You are using a preview version of .NET. See: │ │ https://aka.ms/dotnet-support-policy [ │ │ /home/runner/work/polyglot/polyglot/target/polyglot/builder/test2/test2.fspr │ │ oj] │ │ 00:00:16 #49 [Verbose] > │ │ /home/runner/work/polyglot/polyglot/target/polyglot/builder/test2/test2.fs(1 │ │ ,5): error FS0039: The value or constructor 'a' is not defined. [ │ │ /home/runner/work/polyglot/polyglot/target/polyglot/builder/test2/test2.fspr │ │ oj] │ │ 00:00:16 #50 [Debug] executeAsync / exitCode: 1 / output.Length: 740 │ │ FSharpOption<Int32> │ │ Value: 2 │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## readFile │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let inline readFile path = async { let! code = path |> FileSystem.readAllTextAsync let code = System.Text.RegularExpressions.Regex.Replace ( code, @"( *)(let\s+main\s+.*?\s*=)", fun m -> m.Groups.[[1]].Value + "[[<EntryPoint>]]\n" + m.Groups.[[1]].Value + m.Groups.[[2]].Value ) let codeTrim = code |> String.trimEnd [[||]] return if codeTrim |> String.endsWith "\n()" then codeTrim |> String.substring 0 ((codeTrim |> String.length) - 2) else code } ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## buildFile │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let inline buildFile runtime packages modules path = async { let fullPath = path |> System.IO.Path.GetFullPath let dir = fullPath |> System.IO.Path.GetDirectoryName let name = fullPath |> System.IO.Path.GetFileNameWithoutExtension let! code = fullPath |> readFile return! code |> buildCode runtime packages modules (dir </> "dist" |> Some) name } ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## persistFile │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let inline persistFile packages modules path = async { let fullPath = path |> System.IO.Path.GetFullPath let name = fullPath |> System.IO.Path.GetFileNameWithoutExtension let! code = fullPath |> readFile return! code |> persistCodeProject packages modules name } ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## Arguments │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── [[<RequireQualifiedAccess>]] type Arguments = | [[<Argu.ArguAttributes.MainCommand; Argu.ArguAttributes.ExactlyOnce>]] Path of path : string | [[<Argu.ArguAttributes.Unique>]] Packages of packages : string list | [[<Argu.ArguAttributes.Unique>]] Modules of modules : string list | [[<Argu.ArguAttributes.Unique>]] Runtime of runtime : string | [[<Argu.ArguAttributes.Unique>]] Persist_Only interface Argu.IArgParserTemplate with member s.Usage = match s with | Path _ -> nameof Path | Packages _ -> nameof Packages | Modules _ -> nameof Modules | Runtime _ -> nameof Runtime | Persist_Only -> nameof Persist_Only ── fsharp ────────────────────────────────────────────────────────────────────── //// test Argu.ArgumentParser.Create<Arguments>().PrintUsage () ╭─[ 80.69ms - return value ]───────────────────────────────────────────────────╮ │ USAGE: dotnet-repl [--help] [--packages [<packages>...]] │ │ [--modules [<modules>...]] [--runtime <runtime>] │ │ [--persist-only] <path> │ │ │ │ PATH: │ │ │ │ <path> Path │ │ │ │ OPTIONS: │ │ │ │ --packages [<packages>...] │ │ Packages │ │ --modules [<modules>...] │ │ Modules │ │ --runtime <runtime> Runtime │ │ --persist-only Persist_Only │ │ --help display this list of options. │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## main │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let main args = let argsMap = args |> Runtime.parseArgsMap<Arguments> let path = match argsMap.[[nameof Arguments.Path]] with | [[ Arguments.Path path ]] -> Some path | _ -> None |> Option.get let packages = match argsMap |> Map.tryFind (nameof Arguments.Packages) with | Some [[ Arguments.Packages packages ]] -> packages | _ -> [[]] let modules = match argsMap |> Map.tryFind (nameof Arguments.Modules) with | Some [[ Arguments.Modules modules ]] -> modules | _ -> [[]] let runtime = match argsMap |> Map.tryFind (nameof Arguments.Runtime) with | Some [[ Arguments.Runtime runtime ]] -> Some runtime | _ -> None let persistOnly = argsMap |> Map.containsKey (nameof Arguments.Persist_Only) if persistOnly then path |> persistFile packages modules |> Async.map (fun _ -> 0) else path |> buildFile runtime packages modules |> Async.runWithTimeout (60000 * 60) |> function | Some exitCode -> exitCode | None -> 1 ── fsharp ────────────────────────────────────────────────────────────────────── //// test let args = System.Environment.GetEnvironmentVariable "ARGS" |> Runtime.splitArgs |> Seq.toArray match args with | [[||]] -> 0 | args -> if main args = 0 then 0 else failwith "main failed" ╭─[ 13.25s - return value ]────────────────────────────────────────────────────╮ │ <div class="dni-plaintext"><pre>0</pre></div><style> │ │ .dni-code-hint { │ │ font-style: italic; │ │ overflow: hidden; │ │ white-space: nowrap; │ │ } │ │ .dni-treeview { │ │ white-space: nowrap; │ │ } │ │ .dni-treeview td { │ │ vertical-align: top; │ │ text-align: start; │ │ } │ │ details.dni-treeview { │ │ padding-left: 1em; │ │ } │ │ table td { │ │ text-align: start; │ │ } │ │ table tr { │ │ vertical-align: top; │ │ margin: 0em 0px; │ │ } │ │ table tr td pre │ │ { │ │ vertical-align: top !important; │ │ margin: 0em 0px !important; │ │ } │ │ table th { │ │ text-align: start; │ │ } │ │ </style> │ ╰──────────────────────────────────────────────────────────────────────────────╯ ╭─[ 13.25s - stdout ]──────────────────────────────────────────────────────────╮ │ 00:00:17 #51 [Debug] persistCodeProject / packages: [Argu; │ │ FSharp.Control.AsyncSeq; System.CommandLine; ... ] / modules: [ │ │ lib/fsharp/Common.fs; lib/fsharp/CommonFSharp.fs; lib/fsharp/Async.fs; ... ] │ │ / name: Builder / code.Length: 7086 │ │ 00:00:17 #52 [Debug] buildProject / fullPath: │ │ /home/runner/work/polyglot/polyglot/target/polyglot/builder/Builder/Builder. │ │ fsproj │ │ 00:00:17 #53 [Debug] executeAsync / options: { Command = │ │ "dotnet publish │ │ "/home/runner/work/polyglot/polyglot/target/polyglot/builder/Builder/Builder │ │ .fsproj" --configuration Release --output │ │ "/home/runner/work/polyglot/polyglot/apps/builder/dist" --runtime linux-x64" │ │ WorkingDirectory = │ │ Some │ │ "/home/runner/work/polyglot/polyglot/target/polyglot/builder/Builder" │ │ CancellationToken = None │ │ OnLine = None } │ │ 00:00:17 #54 [Verbose] > MSBuild version 17.10.0-preview-24101-01+07fd5d51f │ │ for .NET │ │ 00:00:18 #55 [Verbose] > Determining projects to restore... │ │ 00:00:18 #56 [Verbose] > Paket version │ │ 8.1.0-alpha001+27cb9f111f156e8b68d08dc293857425c0ade23d │ │ 00:00:18 #57 [Verbose] > The last full restore is still up to date. │ │ Nothing left to do. │ │ 00:00:18 #58 [Verbose] > Total time taken: 0 milliseconds │ │ 00:00:19 #59 [Verbose] > Paket version │ │ 8.1.0-alpha001+27cb9f111f156e8b68d08dc293857425c0ade23d │ │ 00:00:19 #60 [Verbose] > Restoring │ │ /home/runner/work/polyglot/polyglot/target/polyglot/builder/Builder/Builder. │ │ fsproj │ │ 00:00:19 #61 [Verbose] > Starting restore process. │ │ 00:00:19 #62 [Verbose] > Total time taken: 0 milliseconds │ │ 00:00:20 #63 [Verbose] > Restored │ │ /home/runner/work/polyglot/polyglot/target/polyglot/builder/Builder/Builder. │ │ fsproj (in 288 ms). │ │ 00:00:20 #64 [Verbose] > │ │ /usr/share/dotnet/sdk/9.0.100-preview.1.24101.2/Sdks/Microsoft.NET.Sdk/targe │ │ ts/Microsoft.NET.RuntimeIdentifierInference.targets(313,5): message │ │ NETSDK1057: You are using a preview version of .NET. See: │ │ https://aka.ms/dotnet-support-policy [ │ │ /home/runner/work/polyglot/polyglot/target/polyglot/builder/Builder/Builder. │ │ fsproj] │ │ 00:00:24 #65 [Verbose] > Builder -> │ │ /home/runner/work/polyglot/polyglot/target/polyglot/builder/Builder/bin/Rele │ │ ase/net9.0/linux-x64/Builder.dll │ │ 00:00:25 #66 [Verbose] > Builder -> │ │ /home/runner/work/polyglot/polyglot/apps/builder/dist │ │ 00:00:25 #67 [Debug] executeAsync / exitCode: 0 / output.Length: 1119 │ │ 00:00:25 #68 [Debug] executeAsync / options: { Command = │ │ "dotnet publish │ │ "/home/runner/work/polyglot/polyglot/target/polyglot/builder/Builder/Builder │ │ .fsproj" --configuration Release --output │ │ "/home/runner/work/polyglot/polyglot/apps/builder/dist" --runtime win-x64" │ │ WorkingDirectory = │ │ Some │ │ "/home/runner/work/polyglot/polyglot/target/polyglot/builder/Builder" │ │ CancellationToken = None │ │ OnLine = None } │ │ 00:00:25 #69 [Verbose] > MSBuild version 17.10.0-preview-24101-01+07fd5d51f │ │ for .NET │ │ 00:00:25 #70 [Verbose] > Determining projects to restore... │ │ 00:00:26 #71 [Verbose] > Restored │ │ /home/runner/work/polyglot/polyglot/target/polyglot/builder/Builder/Builder. │ │ fsproj (in 281 ms). │ │ 00:00:26 #72 [Verbose] > │ │ /usr/share/dotnet/sdk/9.0.100-preview.1.24101.2/Sdks/Microsoft.NET.Sdk/targe │ │ ts/Microsoft.NET.RuntimeIdentifierInference.targets(313,5): message │ │ NETSDK1057: You are using a preview version of .NET. See: │ │ https://aka.ms/dotnet-support-policy [ │ │ /home/runner/work/polyglot/polyglot/target/polyglot/builder/Builder/Builder. │ │ fsproj] │ │ 00:00:30 #73 [Verbose] > Builder -> │ │ /home/runner/work/polyglot/polyglot/target/polyglot/builder/Builder/bin/Rele │ │ ase/net9.0/win-x64/Builder.dll │ │ 00:00:30 #74 [Verbose] > Builder -> │ │ /home/runner/work/polyglot/polyglot/apps/builder/dist │ │ 00:00:30 #75 [Debug] executeAsync / exitCode: 0 / output.Length: 715 │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ [NbConvertApp] Converting notebook Builder.dib.ipynb to html /opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. validate(nb) /opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 return _pygments_highlight( [NbConvertApp] Writing 329777 bytes to Builder.dib.html
In [ ]:
{ . "$ScriptDir/../apps/parser/build.ps1" } | Invoke-Block
── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ # DibParser (Polyglot) │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── #!import ../../lib/fsharp/Notebooks.dib #!import ../../lib/fsharp/Testing.dib ── fsharp - import ───────────────────────────────────────────────────────────── #r "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Asp NetCore.Html.Abstractions.dll" #r "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot Net.Interactive.dll" #r "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot Net.Interactive.FSharp.dll" #r "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot Net.Interactive.Formatting.dll" open System open System.IO open System.Text open Microsoft.DotNet.Interactive.Formatting ── fsharp - import ───────────────────────────────────────────────────────────── #r "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot Net.Interactive.FSharp.dll" open Microsoft.DotNet.Interactive.FSharp.FSharpKernelHelpers #r "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot Net.Interactive.dll" open type Microsoft.DotNet.Interactive.Kernel ── fsharp - import ───────────────────────────────────────────────────────────── //// test Formatter.ListExpansionLimit <- 100 ── fsharp - import ───────────────────────────────────────────────────────────── #r @"../../../../../../../.nuget/packages/expecto/10.1.0/lib/net6.0/Expecto.dll" ── fsharp - import ───────────────────────────────────────────────────────────── //// test type AssertExceptionFormatter (ex) = member _.Text = ex.ToString() .Replace("32m", "<span style=\"color: green;\">") .Replace("36m", "</span>") .Replace("31m", "<span style=\"color: red;\">") .Replace("\n", "<br/>\n") Formatter.Register<AssertExceptionFormatter> ((fun (x : AssertExceptionFormatter) -> x.Text), "text/html") ── fsharp - import ───────────────────────────────────────────────────────────── //// test let inline __expect fn log expected actual = if log then printfn $"{actual.ToDisplayString ()}" try "Testing.__expect" |> fn actual expected with :? Expecto.AssertException as ex -> AssertExceptionFormatter(ex).Display () |> ignore failwith (ex.GetType().FullName) let inline __contains log expected actual = __expect Expecto.Expect.contains log expected actual let inline _contains expected actual = __contains true expected actual let inline __assert_eq log expected actual = __expect Expecto.Expect.equal log expected actual let inline _assert_eq expected actual = __assert_eq true expected actual let inline __isGreaterThan log expected actual = __expect Expecto.Expect.isGreaterThan log expected... ── fsharp - import ───────────────────────────────────────────────────────────── //// test let inline __isBetween log a b actual = let inline isBetween actual (a, b) _ = __isGreaterThanOrEqual log a actual __isLessThanOrEqual log b actual __expect isBetween log (a, b) actual let inline _isBetween a b actual = __isBetween true a b actual ── pwsh ──────────────────────────────────────────────────────────────────────── ls ~/.nuget/packages/argu ╭─[ 197.18ms - stdout ]────────────────────────────────────────────────────────╮ │ 6.2.2 │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── #r @"../../../../../../../.nuget/packages/fsharp.control.asyncseq/3.2.1/lib/netstan dard2.1/FSharp.Control.AsyncSeq.dll" #r @"../../../../../../../.nuget/packages/system.reactive/6.0.1-preview.1/lib/net6. 0/System.Reactive.dll" #r @"../../../../../../../.nuget/packages/system.reactive.linq/6.0.1-preview.1/lib/ netstandard2.0/System.Reactive.Linq.dll" #r @"../../../../../../../.nuget/packages/argu/6.2.2/lib/netstandard2.0/Argu.dll" #r @"../../../../../../../.nuget/packages/system.commandline/2.0.0-beta4.22272.1/li b/net6.0/System.CommandLine.dll" #r @"../../../../../../../.nuget/packages/fparsec/2.0.0-beta2/lib/netstandard2.1/FP arsec.dll" #r @"../../../../../../../.nuget/packages/fparsec/2.0.0-beta2/lib/netstandard2.1/FP arsecCS.dll" ── fsharp ────────────────────────────────────────────────────────────────────── #!import ../../lib/fsharp/Common.fs #!import ../../lib/fsharp/CommonFSharp.fs #!import ../../lib/fsharp/Async.fs #!import ../../lib/fsharp/AsyncSeq.fs #!import ../../lib/fsharp/Runtime.fs #!import ../../lib/fsharp/FileSystem.fs ── fsharp - import ───────────────────────────────────────────────────────────── #if !INTERACTIVE namespace Polyglot #endif module Common = let nl = System.Environment.NewLine let q = @"""" let inline cons head tail = head :: tail module String = let inline contains (value : string) (input : string) = input.Contains value let inline endsWith (value : string) (input : string) = input.EndsWith value let inline padLeft totalWidth paddingChar (input : string) = input.PadLeft (totalWidth, paddingChar) let inline replace (oldValue : string) (newValue : string) (input : string) = input.Replace (oldValue, newValue) let inline split separator (input : string) = input.Split separator let inline spli... ── fsharp - import ───────────────────────────────────────────────────────────── #if !INTERACTIVE namespace Polyglot #endif module CommonFSharp = open Common /// ## getUnionCaseName let inline getUnionCaseName<'T> (x: 'T) = match Reflection.FSharpValue.GetUnionFields(x, typeof<'T>) with | case, _ -> case.Name ── fsharp - import ───────────────────────────────────────────────────────────── #if !INTERACTIVE namespace Polyglot #endif module Async = open Common /// ## choice let inline choice asyncs = async { let e = Event<_> () use cts = new System.Threading.CancellationTokenSource () let fn = asyncs |> Seq.map (fun a -> async { let! x = a e.Trigger x }) |> Async.Parallel |> Async.Ignore Async.Start (fn, cts.Token) let! result = Async.AwaitEvent e.Publish cts.Cancel () return result } /// ## map let inline map fn a = async { let! x = a return fn x } /// ## catch let inline catch a = a |> Async.Catch ... ── fsharp - import ───────────────────────────────────────────────────────────── #if !INTERACTIVE namespace Polyglot #endif module AsyncSeq = open Common /// ## subscribeEvent let inline subscribeEvent (event: IEvent<'H, 'A>) map = let observable = System.Reactive.Linq.Observable.FromEventPattern<'H, 'A>(event.AddHandler, event.RemoveHandler) System.Reactive.Linq.Observable.Select (observable, fun event -> map event.EventArgs) |> FSharp.Control.AsyncSeq.ofObservableBuffered let subscribeToken (token : System.Threading.CancellationToken) = let tcs = new System.Threading.Tasks.TaskCompletionSource () System.Action tcs.SetResult |> token.Register |> ignore let start = System.DateTime.Now.Ticks FSharp.Control.AsyncSeq.unfoldAsync (fun (... ── fsharp - import ───────────────────────────────────────────────────────────── #if !INTERACTIVE namespace Polyglot #endif module Runtime = open Common /// ## isWindows let isWindows = fun () -> System.Runtime.InteropServices.RuntimeInformation.IsOSPlatform System.Runtime.InteropServices.OSPlatform.Windows |> memoize /// ## getExecutableSuffix let inline getExecutableSuffix () = if isWindows () then ".exe" else "" /// ## splitCommand type private CommandParseStep = | Start | Path of quoted: bool | Arguments let splitCommand (command: string) = let rec loop (path, args) chars step = match chars, step with | ('"' | '\'') :: tail, _ when path = "" -> loop (pat... ── fsharp - import ───────────────────────────────────────────────────────────── #if !INTERACTIVE namespace Polyglot #endif module FileSystem = open Common /// ## Operators module Operators = let inline (</>) a b = System.IO.Path.Combine (a, b) open Operators /// ## createTempDirectoryName let inline createTempDirectoryName () = let root = System.Reflection.Assembly.GetEntryAssembly().GetName().Name System.IO.Path.GetTempPath () </> $"!{root}" </> string (newGuidFromDateTime System.DateTime.Now) /// ## createTempDirectory let inline createTempDirectory () = let tempFolder = createTempDirectoryName () let result = System.IO.Directory.CreateDirectory tempFolder if not result.Exists then let ge... ── fsharp ────────────────────────────────────────────────────────────────────── open Common open FParsec ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## escapeCell (test) │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── //// test let inline escapeCell input = input |> String.split [[| '\n' |]] |> Array.map (function | line when line |> String.startsWith "\\#!" || line |> String.startsWith "\\#r" -> System.Text.RegularExpressions.Regex.Replace (line, "^\\\\#", "#") | line -> line ) |> String.concat "\n" ── fsharp ────────────────────────────────────────────────────────────────────── //// test $"a{nl}\\#!magic{nl}b{nl}" |> escapeCell |> _assert_eq ( $"a{nl}#!magic{nl}b{nl}" ) ╭─[ 36.28ms - stdout ]─────────────────────────────────────────────────────────╮ │ a │ │ #!magic │ │ b │ │ │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## magicMarker │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let magicMarker : Parser<string, unit> = pstring "#!" ── fsharp ────────────────────────────────────────────────────────────────────── //// test "#!magic" |> run magicMarker |> _assert_eq ( Success ("#!", (), Position ("", 2, 1, 3)) ) ╭─[ 26.51ms - stdout ]─────────────────────────────────────────────────────────╮ │ Success │ │ Item1: #! │ │ Item2: <null> │ │ Item3: Position │ │ Index: 2 │ │ Line: 1 │ │ Column: 3 │ │ StreamName: │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── //// test "##!magic" |> run magicMarker |> _assert_eq ( Failure ( $"Error in Ln: 1 Col: 1{nl}##!magic{nl}^{nl}Expecting: '#!'{nl}", ParserError ( Position ("", 0, 1, 1), (), ErrorMessageList (ExpectedString "#!") ), () ) ) ╭─[ 33.05ms - stdout ]─────────────────────────────────────────────────────────╮ │ Failure │ │ Item1: Error in Ln: 1 Col: 1 │ │ ##!magic │ │ ^ │ │ Expecting: '#!' │ │ │ │ Item2: ParserError │ │ Position: Position │ │ Index: 0 │ │ Line: 1 │ │ Column: 1 │ │ StreamName: │ │ UserState: <null> │ │ Messages: ErrorMessageList │ │ Head: ExpectedString │ │ String: #! │ │ Type: ExpectedString │ │ Tail: <null> │ │ Item3: <null> │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## magicCommand │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let magicCommand = magicMarker >>. manyTill anyChar newline |>> (System.String.Concat >> String.trim) ── fsharp ────────────────────────────────────────────────────────────────────── //// test "#!magic a" |> run magicCommand |> _assert_eq ( Success ("magic", (), Position ("", 8, 2, 1)) ) ╭─[ 15.96ms - stdout ]─────────────────────────────────────────────────────────╮ │ Success │ │ Item1: magic │ │ Item2: <null> │ │ Item3: Position │ │ Index: 8 │ │ Line: 2 │ │ Column: 1 │ │ StreamName: │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── //// test " #!magic a" |> run magicCommand |> _assert_eq ( Failure ( $"Error in Ln: 1 Col: 1{nl} #!magic{nl}^{nl}Expecting: '#!'{nl}", ParserError ( Position ("", 0, 1, 1), (), ErrorMessageList (ExpectedString "#!") ), () ) ) ╭─[ 21.37ms - stdout ]─────────────────────────────────────────────────────────╮ │ Failure │ │ Item1: Error in Ln: 1 Col: 1 │ │ #!magic │ │ ^ │ │ Expecting: '#!' │ │ │ │ Item2: ParserError │ │ Position: Position │ │ Index: 0 │ │ Line: 1 │ │ Column: 1 │ │ StreamName: │ │ UserState: <null> │ │ Messages: ErrorMessageList │ │ Head: ExpectedString │ │ String: #! │ │ Type: ExpectedString │ │ Tail: <null> │ │ Item3: <null> │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## content │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let content = (newline >>. magicMarker) <|> (eof >>. preturn "") |> attempt |> lookAhead |> manyTill anyChar |>> (System.String.Concat >> String.trim) ── fsharp ────────────────────────────────────────────────────────────────────── //// test "#!magic a " |> run content |> _assert_eq ( Success ("#!magic a", (), Position ("", 14, 7, 1)) ) ╭─[ 16.77ms - stdout ]─────────────────────────────────────────────────────────╮ │ Success │ │ Item1: #!magic │ │ │ │ │ │ a │ │ Item2: <null> │ │ Item3: Position │ │ Index: 14 │ │ Line: 7 │ │ Column: 1 │ │ StreamName: │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## Block │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── type Block = { magic : string content : string } ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## block │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let block = pipe2 magicCommand content (fun magic content -> { magic = magic content = content }) ── fsharp ────────────────────────────────────────────────────────────────────── //// test "#!magic a " |> run block |> _assert_eq ( Success ( { magic = "magic"; content = "a" }, (), Position ("", 14, 7, 1) ) ) ╭─[ 20.66ms - stdout ]─────────────────────────────────────────────────────────╮ │ Success │ │ Item1: Block │ │ magic: magic │ │ content: a │ │ Item2: <null> │ │ Item3: Position │ │ Index: 14 │ │ Line: 7 │ │ Column: 1 │ │ StreamName: │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## blocks │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let blocks = skipMany newline >>. sepEndBy block (skipMany1 newline) ── fsharp ────────────────────────────────────────────────────────────────────── //// test "#!magic1 a \#!magic2 b " |> escapeCell |> run blocks |> _assert_eq ( Success ( [[ { magic = "magic1"; content = "a" } { magic = "magic2"; content = "b" } ]], (), Position ("", 26, 9, 1) ) ) ╭─[ 28.28ms - stdout ]─────────────────────────────────────────────────────────╮ │ Success │ │ Item1: FSharpList<Block> │ │ - magic: magic1 │ │ content: a │ │ - magic: magic2 │ │ content: b │ │ Item2: <null> │ │ Item3: Position │ │ Index: 26 │ │ Line: 9 │ │ Column: 1 │ │ StreamName: │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## Output │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── type Output = | Fs | Md | Spi | Spir let inline kernelOutputs magic = match magic with | "fsharp" -> [[ Fs ]] | "markdown" -> [[ Md ]] | "spiral" -> [[ Spi; Spir ]] | _ -> [[]] ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## formatBlock │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let inline formatBlock output (block : Block) = match output, block with | output, { magic = "markdown"; content = content } -> let markdownComment = match output with | Spi | Spir -> "// // " | Fs -> "/// " | _ -> "" content |> String.split [[| '\n' |]] |> Array.map (String.trimEnd [[||]]) |> Array.filter (String.endsWith " (test)" >> not) |> Array.map (function | "" -> markdownComment |> String.trim | line -> System.Text.RegularExpressions.Regex.Replace (line, "^\\s*", $"$&{markdownComment}") ) |> String.concat "\n" | Fs, { magic = "fsharp"; content = content } -> let trimmedContent = content |> String.trim if trimmedContent |> String.startsWith "//// test" || trimmedContent |> String.startsWith "//// ignore" then "" else content |> String.split [[| '\n' |]] |> Array.filter (String.trimStart [[||]] >> String.startsWith "#r" >> not) |> String.concat "\n" | (Spi | Spir), { magic = "spiral"; content = content } -> let trimmedContent = content |> String.trim if trimmedContent |> String.startsWith "// // test" || trimmedContent |> String.startsWith "// // ignore" then "" else content | _ -> "" ── fsharp ────────────────────────────────────────────────────────────────────── //// test "#!markdown a b c \#!markdown c \#!fsharp let a = 1" |> escapeCell |> run block |> function | Success (block, _, _) -> formatBlock Fs block | Failure (msg, _, _) -> failwith msg |> _assert_eq "/// a /// /// b /// /// c" ╭─[ 35.36ms - stdout ]─────────────────────────────────────────────────────────╮ │ /// a │ │ /// │ │ /// b │ │ /// │ │ /// c │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## formatBlocks │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let inline formatBlocks output blocks = blocks |> List.map (formatBlock output) |> List.filter ((<>) "") |> String.concat "\n\n" |> fun s -> s + "\n" ── fsharp ────────────────────────────────────────────────────────────────────── //// test "#!markdown a b \#!markdown c \#!fsharp let a = 1 \#!markdown d (test) \#!fsharp //// test let a = 2 \#!markdown e \#!fsharp let a = 3" |> escapeCell |> run blocks |> function | Success (blocks, _, _) -> formatBlocks Fs blocks | Failure (msg, _, _) -> failwith msg |> _assert_eq "/// a /// /// b /// c let a = 1 /// e let a = 3 " ╭─[ 36.87ms - stdout ]─────────────────────────────────────────────────────────╮ │ /// a │ │ /// │ │ /// b │ │ │ │ /// c │ │ │ │ let a = 1 │ │ │ │ /// e │ │ │ │ let a = 3 │ │ │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## parse │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let inline parse output input = match run blocks input with | Success (blocks, _, _) -> let blocks = blocks |> List.filter (fun block -> block.magic |> kernelOutputs |> List.contains output || block.magic = "markdown" ) match blocks with | { magic = "markdown"; content = content } :: _ when output = Fs && content |> String.startsWith "# " && content |> String.endsWith ")" -> let inline indentBlock (block : Block) = { block with content = block.content |> String.split [[| '\n' |]] |> Array.fold (fun (lines, isMultiline) line -> let trimmedLine = line |> String.trim if trimmedLine = "" then "" :: lines, isMultiline else let inline singleQuoteLine () = trimmedLine |> Seq.sumBy ((=) '"' >> System.Convert.ToInt32) = 1 && trimmedLine |> String.contains @"'""'" |> not && trimmedLine |> String.endsWith "{" |> not && trimmedLine |> String.endsWith "{|" |> not && trimmedLine |> String.startsWith "}" |> not && trimmedLine |> String.startsWith "|}" |> not match isMultiline, trimmedLine |> String.splitString [[| $"{q}{q}{q}" |]] with | false, [[| _; _ |]] -> $" {line}" :: lines, true | true, [[| _; _ |]] -> line :: lines, false | false, _ when singleQuoteLine () -> $" {line}" :: lines, true | false, _ when line |> String.startsWith "#" && block.magic = "fsharp" -> line :: lines, false | false, _ -> $" {line}" :: lines, false | true, _ when singleQuoteLine () && line |> String.startsWith " " -> $" {line}" :: lines, false | true, _ when singleQuoteLine () -> line :: lines, false | true, _ -> line :: lines, true ) ([[]], false) |> fst |> List.rev |> String.concat "\n" } let moduleName, namespaceName = System.Text.RegularExpressions.Regex.Match (content, @"# (.*) \((.*)\)$") |> fun m -> m.Groups.[[1]].Value, m.Groups.[[2]].Value let moduleBlock = { magic = "fsharp" content = $"#if !INTERACTIVE namespace {namespaceName} #endif module {moduleName} =" } blocks |> List.indexed |> List.fold (fun blocks (index, block) -> match index with | 0 -> blocks | 1 -> indentBlock block :: moduleBlock :: blocks | _ -> indentBlock block :: blocks ) [[]] |> List.rev | _ -> blocks |> Result.Ok | Failure (errorMsg, _, _) -> Result.Error errorMsg ── fsharp ────────────────────────────────────────────────────────────────────── //// test let example1 = $"""#!meta {{"kernelInfo":{{"defaultKernelName":"fsharp","items":[[{{"aliases":[[]],"name": "fsharp"}},{{"aliases":[[]],"name":"fsharp"}}]]}}}} \#!markdown # TestModule (TestNamespace) \#!fsharp \#!import file.dib \#!fsharp \#r "nuget:Expecto" \#!markdown ## ParserLibrary \#!fsharp open System \#!markdown ## x (test) \#!fsharp //// ignore let x = 1 \#!spiral // // test inl x = 0i32 \#!spiral inl x = 0i32 \#!markdown ### TextInput \#!fsharp let str1 = "abc def" let str2 = "abc\ def" let str3 = $"1{{ 1 }}1" let str4 = $"1{{({{| a = 1 |}}).a}}1" let str5 = "abc \ def" let x = match '"' with | '"' -> true | _ -> false let long1 = {q}{q}{q}a{q}{q}{q} let long2 = {q}{q}{q} a {q}{q}{q} \#!fsharp type Position = {{ #if INTERACTIVE line : string #else line : int #endif column : int }}""" |> escapeCell ── fsharp ────────────────────────────────────────────────────────────────────── //// test example1 |> parse Fs |> Result.toOption |> Option.get |> (formatBlocks Fs) |> _assert_eq $"""#if !INTERACTIVE namespace TestNamespace #endif module TestModule = /// ## ParserLibrary open System /// ### TextInput let str1 = "abc def" let str2 = "abc\ def" let str3 = $"1{{ 1 }}1" let str4 = $"1{{({{| a = 1 |}}).a}}1" let str5 = "abc \ def" let x = match '"' with | '"' -> true | _ -> false let long1 = {q}{q}{q}a{q}{q}{q} let long2 = {q}{q}{q} a {q}{q}{q} type Position = {{ #if INTERACTIVE line : string #else line : int #endif column : int }} """ ╭─[ 109.14ms - stdout ]────────────────────────────────────────────────────────╮ │ #if !INTERACTIVE │ │ namespace TestNamespace │ │ #endif │ │ │ │ module TestModule = │ │ │ │ /// ## ParserLibrary │ │ │ │ open System │ │ │ │ /// ### TextInput │ │ │ │ let str1 = "abc │ │ def" │ │ │ │ let str2 = │ │ "abc\ │ │ def" │ │ │ │ let str3 = │ │ $"1{ │ │ 1 │ │ }1" │ │ │ │ let str4 = │ │ $"1{({| │ │ a = 1 │ │ |}).a}1" │ │ │ │ let str5 = │ │ "abc \ │ │ def" │ │ │ │ let x = │ │ match '"' with │ │ | '"' -> true │ │ | _ -> false │ │ │ │ let long1 = """a""" │ │ │ │ let long2 = │ │ """ │ │ a │ │ """ │ │ │ │ type Position = │ │ { │ │ #if INTERACTIVE │ │ line : string │ │ #else │ │ line : int │ │ #endif │ │ column : int │ │ } │ │ │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── //// test example1 |> parse Md |> Result.toOption |> Option.get |> (formatBlocks Md) |> _assert_eq "# TestModule (TestNamespace) ## ParserLibrary ### TextInput " ╭─[ 171.06ms - stdout ]────────────────────────────────────────────────────────╮ │ # TestModule (TestNamespace) │ │ │ │ ## ParserLibrary │ │ │ │ ### TextInput │ │ │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── //// test example1 |> parse Spi |> Result.toOption |> Option.get |> (formatBlocks Spi) |> _assert_eq "// // # TestModule (TestNamespace) // // ## ParserLibrary inl x = 0i32 // // ### TextInput " ╭─[ 97.25ms - stdout ]─────────────────────────────────────────────────────────╮ │ // // # TestModule (TestNamespace) │ │ │ │ // // ## ParserLibrary │ │ │ │ inl x = 0i32 │ │ │ │ // // ### TextInput │ │ │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## parseDibCode │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let inline parseDibCode output file = async { let getLocals () = $"output: {output} / file: {file} / {getLocals ()}" trace Debug (fun () -> "parseDibCode") getLocals let! input = file |> FileSystem.readAllTextAsync match parse output input with | Result.Ok blocks -> return blocks |> formatBlocks output | Result.Error msg -> return failwith msg } ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## writeDibCode │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let inline writeDibCode output path = async { let getLocals () = $"output: {output} / path: {path} / {getLocals ()}" trace Debug (fun () -> "writeDibCode") getLocals let! result = parseDibCode output path let outputPath = path |> String.replace ".dib" $".{output |> string |> String.toLower}" do! result |> FileSystem.writeAllTextAsync outputPath } ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## Arguments │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── [[<RequireQualifiedAccess>]] type Arguments = | [[<Argu.ArguAttributes.MainCommand; Argu.ArguAttributes.Mandatory>]] File of file : string * Output interface Argu.IArgParserTemplate with member s.Usage = match s with | File _ -> nameof File ── fsharp ────────────────────────────────────────────────────────────────────── //// test Argu.ArgumentParser.Create<Arguments>().PrintUsage () ╭─[ 77.90ms - return value ]───────────────────────────────────────────────────╮ │ USAGE: dotnet-repl [--help] <file> <fs|md|spi|spir> │ │ │ │ FILE: │ │ │ │ <file> <fs|md|spi|spir> │ │ File │ │ │ │ OPTIONS: │ │ │ │ --help display this list of options. │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## main │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let main args = let argsMap = args |> Runtime.parseArgsMap<Arguments> let files = argsMap.[[nameof Arguments.File]] |> List.map (function | Arguments.File (path, output) -> path, output ) files |> List.map (fun (path, output) -> path |> writeDibCode output) |> Async.Parallel |> Async.Ignore |> Async.runWithTimeout 30000 |> function | Some () -> 0 | None -> 1 ── fsharp ────────────────────────────────────────────────────────────────────── //// test let args = System.Environment.GetEnvironmentVariable "ARGS" |> Runtime.splitArgs |> Seq.toArray match args with | [[||]] -> 0 | args -> if main args = 0 then 0 else failwith "main failed" ╭─[ 110.43ms - return value ]──────────────────────────────────────────────────╮ │ <div class="dni-plaintext"><pre>0</pre></div><style> │ │ .dni-code-hint { │ │ font-style: italic; │ │ overflow: hidden; │ │ white-space: nowrap; │ │ } │ │ .dni-treeview { │ │ white-space: nowrap; │ │ } │ │ .dni-treeview td { │ │ vertical-align: top; │ │ text-align: start; │ │ } │ │ details.dni-treeview { │ │ padding-left: 1em; │ │ } │ │ table td { │ │ text-align: start; │ │ } │ │ table tr { │ │ vertical-align: top; │ │ margin: 0em 0px; │ │ } │ │ table tr td pre │ │ { │ │ vertical-align: top !important; │ │ margin: 0em 0px !important; │ │ } │ │ table th { │ │ text-align: start; │ │ } │ │ </style> │ ╰──────────────────────────────────────────────────────────────────────────────╯ ╭─[ 111.77ms - stdout ]────────────────────────────────────────────────────────╮ │ 00:00:00 #1 [Debug] writeDibCode / output: Fs / path: DibParser.dib │ │ 00:00:00 #2 [Debug] parseDibCode / output: Fs / file: DibParser.dib │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ [NbConvertApp] Converting notebook DibParser.dib.ipynb to html /opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. validate(nb) /opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 return _pygments_highlight( [NbConvertApp] Writing 367636 bytes to DibParser.dib.html 00:00:00 #1 [Debug] persistCodeProject / packages: [Argu; FParsec; FSharp.Control.AsyncSeq; ... ] / modules: [lib/fsharp/Common.fs; lib/fsharp/CommonFSharp.fs; lib/fsharp/Async.fs; ... ] / name: DibParser / code.Length: 9066 00:00:00 #2 [Debug] buildProject / fullPath: /home/runner/work/polyglot/polyglot/target/polyglot/builder/DibParser/DibParser.fsproj 00:00:00 #3 [Debug] executeAsync / options: { Command = "dotnet publish "/home/runner/work/polyglot/polyglot/target/polyglot/builder/DibParser/DibParser.fsproj" --configuration Release --output "/home/runner/work/polyglot/polyglot/apps/parser/dist" --runtime linux-x64" WorkingDirectory = Some "/home/runner/work/polyglot/polyglot/target/polyglot/builder/DibParser" CancellationToken = None OnLine = None } 00:00:00 #4 [Verbose] > MSBuild version 17.10.0-preview-24101-01+07fd5d51f for .NET 00:00:00 #5 [Verbose] > Determining projects to restore... 00:00:00 #6 [Verbose] > Paket version 8.1.0-alpha001+27cb9f111f156e8b68d08dc293857425c0ade23d 00:00:00 #7 [Verbose] > The last full restore is still up to date. Nothing left to do. 00:00:00 #8 [Verbose] > Total time taken: 0 milliseconds 00:00:01 #9 [Verbose] > Paket version 8.1.0-alpha001+27cb9f111f156e8b68d08dc293857425c0ade23d 00:00:01 #10 [Verbose] > Restoring /home/runner/work/polyglot/polyglot/target/polyglot/builder/DibParser/DibParser.fsproj 00:00:01 #11 [Verbose] > Starting restore process. 00:00:01 #12 [Verbose] > Total time taken: 0 milliseconds 00:00:02 #13 [Verbose] > Restored /home/runner/work/polyglot/polyglot/target/polyglot/builder/DibParser/DibParser.fsproj (in 300 ms). 00:00:02 #14 [Verbose] > /usr/share/dotnet/sdk/9.0.100-preview.1.24101.2/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.RuntimeIdentifierInference.targets(313,5): message NETSDK1057: You are using a preview version of .NET. See: https://aka.ms/dotnet-support-policy [/home/runner/work/polyglot/polyglot/target/polyglot/builder/DibParser/DibParser.fsproj] 00:00:06 #15 [Verbose] > DibParser -> /home/runner/work/polyglot/polyglot/target/polyglot/builder/DibParser/bin/Release/net9.0/linux-x64/DibParser.dll 00:00:07 #16 [Verbose] > DibParser -> /home/runner/work/polyglot/polyglot/apps/parser/dist 00:00:07 #17 [Debug] executeAsync / exitCode: 0 / output.Length: 1138 00:00:07 #18 [Debug] executeAsync / options: { Command = "dotnet publish "/home/runner/work/polyglot/polyglot/target/polyglot/builder/DibParser/DibParser.fsproj" --configuration Release --output "/home/runner/work/polyglot/polyglot/apps/parser/dist" --runtime win-x64" WorkingDirectory = Some "/home/runner/work/polyglot/polyglot/target/polyglot/builder/DibParser" CancellationToken = None OnLine = None } 00:00:07 #19 [Verbose] > MSBuild version 17.10.0-preview-24101-01+07fd5d51f for .NET 00:00:07 #20 [Verbose] > Determining projects to restore... 00:00:08 #21 [Verbose] > Restored /home/runner/work/polyglot/polyglot/target/polyglot/builder/DibParser/DibParser.fsproj (in 296 ms). 00:00:08 #22 [Verbose] > /usr/share/dotnet/sdk/9.0.100-preview.1.24101.2/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.RuntimeIdentifierInference.targets(313,5): message NETSDK1057: You are using a preview version of .NET. See: https://aka.ms/dotnet-support-policy [/home/runner/work/polyglot/polyglot/target/polyglot/builder/DibParser/DibParser.fsproj] 00:00:12 #23 [Verbose] > DibParser -> /home/runner/work/polyglot/polyglot/target/polyglot/builder/DibParser/bin/Release/net9.0/win-x64/DibParser.dll 00:00:12 #24 [Verbose] > DibParser -> /home/runner/work/polyglot/polyglot/apps/parser/dist 00:00:12 #25 [Debug] executeAsync / exitCode: 0 / output.Length: 730 ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ # JsonParser (Polyglot) │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── #!import ../../lib/fsharp/Notebooks.dib #!import ../../lib/fsharp/Testing.dib ── fsharp - import ───────────────────────────────────────────────────────────── #r "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Asp NetCore.Html.Abstractions.dll" #r "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot Net.Interactive.dll" #r "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot Net.Interactive.FSharp.dll" #r "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot Net.Interactive.Formatting.dll" open System open System.IO open System.Text open Microsoft.DotNet.Interactive.Formatting ── fsharp - import ───────────────────────────────────────────────────────────── #r "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot Net.Interactive.FSharp.dll" open Microsoft.DotNet.Interactive.FSharp.FSharpKernelHelpers #r "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot Net.Interactive.dll" open type Microsoft.DotNet.Interactive.Kernel ── fsharp - import ───────────────────────────────────────────────────────────── //// test Formatter.ListExpansionLimit <- 100 ── fsharp - import ───────────────────────────────────────────────────────────── #r @"../../../../../../../.nuget/packages/expecto/10.1.0/lib/net6.0/Expecto.dll" ── fsharp - import ───────────────────────────────────────────────────────────── //// test type AssertExceptionFormatter (ex) = member _.Text = ex.ToString() .Replace("32m", "<span style=\"color: green;\">") .Replace("36m", "</span>") .Replace("31m", "<span style=\"color: red;\">") .Replace("\n", "<br/>\n") Formatter.Register<AssertExceptionFormatter> ((fun (x : AssertExceptionFormatter) -> x.Text), "text/html") ── fsharp - import ───────────────────────────────────────────────────────────── //// test let inline __expect fn log expected actual = if log then printfn $"{actual.ToDisplayString ()}" try "Testing.__expect" |> fn actual expected with :? Expecto.AssertException as ex -> AssertExceptionFormatter(ex).Display () |> ignore failwith (ex.GetType().FullName) let inline __contains log expected actual = __expect Expecto.Expect.contains log expected actual let inline _contains expected actual = __contains true expected actual let inline __assert_eq log expected actual = __expect Expecto.Expect.equal log expected actual let inline _assert_eq expected actual = __assert_eq true expected actual let inline __isGreaterThan log expected actual = __expect Expecto.Expect.isGreaterThan log expected... ── fsharp - import ───────────────────────────────────────────────────────────── //// test let inline __isBetween log a b actual = let inline isBetween actual (a, b) _ = __isGreaterThanOrEqual log a actual __isLessThanOrEqual log b actual __expect isBetween log (a, b) actual let inline _isBetween a b actual = __isBetween true a b actual ── fsharp ────────────────────────────────────────────────────────────────────── #!import ../../lib/fsharp/Common.fs #!import Parser.fs ── fsharp - import ───────────────────────────────────────────────────────────── #if !INTERACTIVE namespace Polyglot #endif module Common = let nl = System.Environment.NewLine let q = @"""" let inline cons head tail = head :: tail module String = let inline contains (value : string) (input : string) = input.Contains value let inline endsWith (value : string) (input : string) = input.EndsWith value let inline padLeft totalWidth paddingChar (input : string) = input.PadLeft (totalWidth, paddingChar) let inline replace (oldValue : string) (newValue : string) (input : string) = input.Replace (oldValue, newValue) let inline split separator (input : string) = input.Split separator let inline spli... ── fsharp - import ───────────────────────────────────────────────────────────── #if !INTERACTIVE namespace Polyglot #endif module Parser = open Common /// ### TextInput type Position = { line : int column : int } let initialPos = { line = 0; column = 0 } let inline incrCol (pos : Position) = { pos with column = pos.column + 1 } let inline incrLine pos = { line = pos.line + 1; column = 0 } type InputState = { lines : string[[]] position : Position } let inline fromStr str = { lines = if str |> String.IsNullOrEmpty then [[||]] else str |> String.splitString [[| "\r\n"; "\n" |]] position = initialPos } ... ── fsharp ────────────────────────────────────────────────────────────────────── open Common open Parser ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## JsonParser │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── (* // -------------------------------- JSON spec from http://www.json.org/ // -------------------------------- The JSON spec is available at [[json.org]](http://www.json.org/). I'll paraphase it here: * A `value` can be a `string` or a `number` or a `bool` or `null` or an `object` or an `array`. * These structures can be nested. * A `string` is a sequence of zero or more Unicode characters, wrapped in double quotes, using backslash escapes. * A `number` is very much like a C or Java number, except that the octal and hexadecimal formats are not used. * A `boolean` is the literal `true` or `false` * A `null` is the literal `null` * An `object` is an unordered set of name/value pairs. * An object begins with { (left brace) and ends with } (right brace). * Each name is followed by : (colon) and the name/value pairs are separated by , (comma). * An `array` is an ordered collection of values. * An array begins with [[ (left bracket) and ends with ]] (right bracket). * Values are separated by , (comma). * Whitespace can be inserted between any pair of tokens. *) ── fsharp ────────────────────────────────────────────────────────────────────── //// test let inline parserEqual (expected : ParseResult<'a>) (actual : ParseResult<'a * Input>) = match actual, expected with | Success (_actual, _), Success _expected -> printResult actual _actual |> _assert_eq _expected | Failure (l1, e1, p1), Failure (l2, e2, p2) when l1 = l2 && e1 = e2 && p1 = p2 -> printResult actual | _ -> printfn $"Actual: {actual}" printfn $"Expected: {expected}" failwith "Parse failed" actual ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ### JValue │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── type JValue = | JString of string | JNumber of float | JBool of bool | JNull | JObject of Map<string, JValue> | JArray of JValue list ── fsharp ────────────────────────────────────────────────────────────────────── let jValue, jValueRef = createParserForwardedToRef<JValue> () ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ### jNull │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let jNull = pstring "null" >>% JNull <?> "null" ── fsharp ────────────────────────────────────────────────────────────────────── //// test jValueRef <| choice [[ jNull ]] ── fsharp ────────────────────────────────────────────────────────────────────── //// test run jValue "null" |> parserEqual (Success JNull) ╭─[ 173.85ms - return value ]──────────────────────────────────────────────────╮ │ <details open="open" class="dni-treeview"><summary><span │ │ class="dni-code-hint"><code>Success (JNull, { lines = [ │ │ |"null"|]<br/> position = { line = 0<br/> │ │ column = 4 } │ │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ │ >Item</td><td><details class="dni-treeview"><summary><span │ │ class="dni-code-hint"><code>(JNull, { lines = [|"null"|]<br/> │ │ position = { line = 0<br/> column = 4 } │ │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ │ >Item1</td><td><details class="dni-treeview"><summary><span │ │ class="dni-code-hint"><code>JNull</code></span></summary><div><table><thead> │ │ <tr></tr></thead><tbody><tr><td>IsJString</td><td><d... │ ╰──────────────────────────────────────────────────────────────────────────────╯ ╭─[ 177.36ms - stdout ]────────────────────────────────────────────────────────╮ │ JNull │ │ JValue │ │ IsJString: False │ │ IsJNumber: False │ │ IsJBool: False │ │ IsJNull: True │ │ IsJObject: False │ │ IsJArray: False │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── //// test run jNull "nulp" |> parserEqual ( Failure ( "null", "Unexpected 'p'", { currentLine = "nulp"; line = 0; column = 3 } ) ) ╭─[ 37.88ms - return value ]───────────────────────────────────────────────────╮ │ <details open="open" class="dni-treeview"><summary><span │ │ class="dni-code-hint"><code>Failure ("null", "Unexpected │ │ 'p'", { currentLine = "nulp"<br/> │ │ line = 0<br/> column = 3 │ │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ │ >Item1</td><td><div │ │ class="dni-plaintext"><pre>null</pre></div></td></tr><tr><td>Item2</td><td>< │ │ div class="dni-plaintext"><pre>Unexpected │ │ 'p'</pre></div></td></tr><tr><td>Item3</td><td><details │ │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ │ │ currentLine = "nulp"<br/> line = 0<br/> column = 3 │ │ }</code></span></summary><div><table><thead><tr></tr></thead... │ ╰──────────────────────────────────────────────────────────────────────────────╯ ╭─[ 39.01ms - stdout ]─────────────────────────────────────────────────────────╮ │ Line:0 Col:3 Error parsing null │ │ nulp │ │ ^Unexpected 'p' │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ### jBool │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let jBool = let jtrue = pstring "true" >>% JBool true let jfalse = pstring "false" >>% JBool false jtrue <|> jfalse <?> "bool" ── fsharp ────────────────────────────────────────────────────────────────────── //// test jValueRef <| choice [[ jNull jBool ]] ── fsharp ────────────────────────────────────────────────────────────────────── //// test run jBool "true" |> parserEqual (Success (JBool true)) ╭─[ 34.39ms - return value ]───────────────────────────────────────────────────╮ │ <details open="open" class="dni-treeview"><summary><span │ │ class="dni-code-hint"><code>Success (JBool true, { lines = [ │ │ |"true"|]<br/> position = { line = 0<br/> │ │ column = 4 } │ │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ │ >Item</td><td><details class="dni-treeview"><summary><span │ │ class="dni-code-hint"><code>(JBool true, { lines = [|"true"|]<br/> │ │ position = { line = 0<br/> column = 4 } │ │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ │ >Item1</td><td><details class="dni-treeview"><summary><span │ │ class="dni-code-hint"><code>JBool │ │ true</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr.. │ │ . │ ╰──────────────────────────────────────────────────────────────────────────────╯ ╭─[ 35.67ms - stdout ]─────────────────────────────────────────────────────────╮ │ JBool true │ │ JBool │ │ Item: True │ │ IsJString: False │ │ IsJNumber: False │ │ IsJBool: True │ │ IsJNull: False │ │ IsJObject: False │ │ IsJArray: False │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── //// test run jBool "false" |> parserEqual (Success (JBool false)) ╭─[ 24.04ms - return value ]───────────────────────────────────────────────────╮ │ <details open="open" class="dni-treeview"><summary><span │ │ class="dni-code-hint"><code>Success (JBool false, { lines = [ │ │ |"false"|]<br/> position = { line = 0<br/> │ │ column = 5 } │ │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ │ >Item</td><td><details class="dni-treeview"><summary><span │ │ class="dni-code-hint"><code>(JBool false, { lines = [ │ │ |"false"|]<br/> position = { line = 0<br/> column = │ │ 5 } │ │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ │ >Item1</td><td><details class="dni-treeview"><summary><span │ │ class="dni-code-hint"><code>JBool │ │ false</code></span></summary><div><table><thead><tr></tr></thead><tb... │ ╰──────────────────────────────────────────────────────────────────────────────╯ ╭─[ 25.34ms - stdout ]─────────────────────────────────────────────────────────╮ │ JBool false │ │ JBool │ │ Item: False │ │ IsJString: False │ │ IsJNumber: False │ │ IsJBool: True │ │ IsJNull: False │ │ IsJObject: False │ │ IsJArray: False │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── //// test run jBool "truX" |> parserEqual ( Failure ( "bool", "Unexpected 't'", { currentLine = "truX"; line = 0; column = 0 } ) ) ╭─[ 19.93ms - return value ]───────────────────────────────────────────────────╮ │ <details open="open" class="dni-treeview"><summary><span │ │ class="dni-code-hint"><code>Failure ("bool", "Unexpected │ │ 't'", { currentLine = "truX"<br/> │ │ line = 0<br/> column = 0 │ │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ │ >Item1</td><td><div │ │ class="dni-plaintext"><pre>bool</pre></div></td></tr><tr><td>Item2</td><td>< │ │ div class="dni-plaintext"><pre>Unexpected │ │ 't'</pre></div></td></tr><tr><td>Item3</td><td><details │ │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ │ │ currentLine = "truX"<br/> line = 0<br/> column = 0 │ │ }</code></span></summary><div><table><thead><tr></tr></thead... │ ╰──────────────────────────────────────────────────────────────────────────────╯ ╭─[ 21.01ms - stdout ]─────────────────────────────────────────────────────────╮ │ Line:0 Col:0 Error parsing bool │ │ truX │ │ ^Unexpected 't' │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ### jUnescapedChar │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let jUnescapedChar = satisfy (fun ch -> ch <> '\\' && ch <> '\"') "char" ── fsharp ────────────────────────────────────────────────────────────────────── //// test run jUnescapedChar "a" |> parserEqual (Success 'a') ╭─[ 38.62ms - return value ]───────────────────────────────────────────────────╮ │ <details open="open" class="dni-treeview"><summary><span │ │ class="dni-code-hint"><code>Success ('a', { lines = [ │ │ |"a"|]<br/> position = { line = 0<br/> │ │ column = 1 } │ │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ │ >Item</td><td><details class="dni-treeview"><summary><span │ │ class="dni-code-hint"><code>(a, { lines = [|"a"|]<br/> position = │ │ { line = 0<br/> column = 1 } │ │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ │ >Item1</td><td><div │ │ class="dni-plaintext"><pre>a</pre></div></td></tr><tr><td>Item2</td><td><det │ │ ails class="dni-treeview"><summary><span class="dni-code-hint"><code>{ lines │ │ = [|"a"|]<br/... │ ╰──────────────────────────────────────────────────────────────────────────────╯ ╭─[ 39.86ms - stdout ]─────────────────────────────────────────────────────────╮ │ 'a' │ │ a │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── //// test run jUnescapedChar "\\" |> parserEqual ( Failure ( "char", "Unexpected '\\'", { currentLine = "\\"; line = 0; column = 0 } ) ) ╭─[ 26.93ms - return value ]───────────────────────────────────────────────────╮ │ <details open="open" class="dni-treeview"><summary><span │ │ class="dni-code-hint"><code>Failure ("char", "Unexpected │ │ '\'", { currentLine = "\"<br/> │ │ line = 0<br/> column = 0 │ │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ │ >Item1</td><td><div │ │ class="dni-plaintext"><pre>char</pre></div></td></tr><tr><td>Item2</td><td>< │ │ div class="dni-plaintext"><pre>Unexpected │ │ '\'</pre></div></td></tr><tr><td>Item3</td><td><details │ │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ │ │ currentLine = "\"<br/> line = 0<br/> column = 0 │ │ }</code></span></summary><div><table><thead><tr></tr></thead><tbod... │ ╰──────────────────────────────────────────────────────────────────────────────╯ ╭─[ 27.99ms - stdout ]─────────────────────────────────────────────────────────╮ │ Line:0 Col:0 Error parsing char │ │ \ │ │ ^Unexpected '\' │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ### jEscapedChar │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let jEscapedChar = [[ ("\\\"",'\"') ("\\\\",'\\') ("\\/",'/') ("\\b",'\b') ("\\f",'\f') ("\\n",'\n') ("\\r",'\r') ("\\t",'\t') ]] |> List.map (fun (toMatch, result) -> pstring toMatch >>% result ) |> choice <?> "escaped char" ── fsharp ────────────────────────────────────────────────────────────────────── //// test run jEscapedChar "\\\\" |> parserEqual (Success '\\') ╭─[ 26.02ms - return value ]───────────────────────────────────────────────────╮ │ <details open="open" class="dni-treeview"><summary><span │ │ class="dni-code-hint"><code>Success ('\\', { lines = [ │ │ |"\\"|]<br/> position = { line = 0<br/> │ │ column = 2 } │ │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ │ >Item</td><td><details class="dni-treeview"><summary><span │ │ class="dni-code-hint"><code>(\, { lines = [|"\\"|]<br/> position │ │ = { line = 0<br/> column = 2 } │ │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ │ >Item1</td><td><div │ │ class="dni-plaintext"><pre>\</pre></div></td></tr><tr><td>Item2</td><td><det │ │ ails class="dni-treeview"><summary><span class="dni-code-hint"><code>{ lines │ │ = [|"\\"... │ ╰──────────────────────────────────────────────────────────────────────────────╯ ╭─[ 27.32ms - stdout ]─────────────────────────────────────────────────────────╮ │ '\\' │ │ \ │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── //// test run jEscapedChar "\\t" |> parserEqual (Success '\t') ╭─[ 24.03ms - return value ]───────────────────────────────────────────────────╮ │ <details open="open" class="dni-treeview"><summary><span │ │ class="dni-code-hint"><code>Success ('\009', { lines = [ │ │ |"\t"|]<br/> position = { line = 0<br/> │ │ column = 2 } │ │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ │ >Item</td><td><details class="dni-treeview"><summary><span │ │ class="dni-code-hint"><code>( , { lines = [|"\t"|]<br/> position = │ │ { line = 0<br/> column = 2 } │ │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ │ >Item1</td><td><div class="dni-plaintext"><pre> │ │ </pre></div></td></tr><tr><td>Item2</td><td><details │ │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ lines = [ │ │ |"\t... │ ╰──────────────────────────────────────────────────────────────────────────────╯ ╭─[ 25.30ms - stdout ]─────────────────────────────────────────────────────────╮ │ '\009' │ │ │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── //// test run jEscapedChar @"\\" |> parserEqual (Success '\\') ╭─[ 67.51ms - return value ]───────────────────────────────────────────────────╮ │ <details open="open" class="dni-treeview"><summary><span │ │ class="dni-code-hint"><code>Success ('\\', { lines = [ │ │ |"\\"|]<br/> position = { line = 0<br/> │ │ column = 2 } │ │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ │ >Item</td><td><details class="dni-treeview"><summary><span │ │ class="dni-code-hint"><code>(\, { lines = [|"\\"|]<br/> position │ │ = { line = 0<br/> column = 2 } │ │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ │ >Item1</td><td><div │ │ class="dni-plaintext"><pre>\</pre></div></td></tr><tr><td>Item2</td><td><det │ │ ails class="dni-treeview"><summary><span class="dni-code-hint"><code>{ lines │ │ = [|"\\"... │ ╰──────────────────────────────────────────────────────────────────────────────╯ ╭─[ 68.87ms - stdout ]─────────────────────────────────────────────────────────╮ │ '\\' │ │ \ │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── //// test run jEscapedChar @"\n" |> parserEqual (Success '\n') ╭─[ 21.54ms - return value ]───────────────────────────────────────────────────╮ │ <details open="open" class="dni-treeview"><summary><span │ │ class="dni-code-hint"><code>Success ('\010', { lines = [ │ │ |"<br/>"|]<br/> position = { line = 0<br/> │ │ column = 2 } │ │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ │ >Item</td><td><details class="dni-treeview"><summary><span │ │ class="dni-code-hint"><code>(<br/>, { lines = [|"<br/>"|]<br/> │ │ position = { line = 0<br/> column = 2 } │ │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ │ >Item1</td><td><div class="dni-plaintext"><pre> │ │ </pre></div></td></tr><tr><td>Item2</td><td><details │ │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ lines = │ │ ... │ ╰──────────────────────────────────────────────────────────────────────────────╯ ╭─[ 22.76ms - stdout ]─────────────────────────────────────────────────────────╮ │ '\010' │ │ │ │ │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── //// test run jEscapedChar "a" |> parserEqual ( Failure ( "escaped char", "Unexpected 'a'", { currentLine = "a"; line = 0; column = 0 } ) ) ╭─[ 21.03ms - return value ]───────────────────────────────────────────────────╮ │ <details open="open" class="dni-treeview"><summary><span │ │ class="dni-code-hint"><code>Failure ("escaped char", │ │ "Unexpected 'a'", { currentLine = "a"<br/> │ │ line = 0<br/> column = 0 │ │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ │ >Item1</td><td><div class="dni-plaintext"><pre>escaped │ │ char</pre></div></td></tr><tr><td>Item2</td><td><div │ │ class="dni-plaintext"><pre>Unexpected │ │ 'a'</pre></div></td></tr><tr><td>Item3</td><td><details │ │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ │ │ currentLine = "a"<br/> line = 0<br/> column = 0 │ │ }</code></span></summary><div><tab... │ ╰──────────────────────────────────────────────────────────────────────────────╯ ╭─[ 22.09ms - stdout ]─────────────────────────────────────────────────────────╮ │ Line:0 Col:0 Error parsing escaped char │ │ a │ │ ^Unexpected 'a' │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ### jUnicodeChar │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let jUnicodeChar = let backslash = pchar '\\' let uChar = pchar 'u' let hexdigit = anyOf ([[ '0' .. '9' ]] @ [[ 'A' .. 'F' ]] @ [[ 'a' .. 'f' ]]) let fourHexDigits = hexdigit .>>. hexdigit .>>. hexdigit .>>. hexdigit let inline convertToChar (((h1, h2), h3), h4) = let str = $"%c{h1}%c{h2}%c{h3}%c{h4}" Int32.Parse (str, Globalization.NumberStyles.HexNumber) |> char backslash >>. uChar >>. fourHexDigits |>> convertToChar ── fsharp ────────────────────────────────────────────────────────────────────── //// test run jUnicodeChar "\\u263A" |> parserEqual (Success '☺') ╭─[ 30.94ms - return value ]───────────────────────────────────────────────────╮ │ <details open="open" class="dni-treeview"><summary><span │ │ class="dni-code-hint"><code>Success ('☺', { lines = [ │ │ |"\u263A"|]<br/> position = { line = 0<br/> │ │ column = 6 } │ │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ │ >Item</td><td><details class="dni-treeview"><summary><span │ │ class="dni-code-hint"><code>(☺, { lines = [|"\u263A"|]<br/> │ │ position = { line = 0<br/> column = 6 } │ │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ │ >Item1</td><td><div │ │ class="dni-plaintext"><pre>☺</pre></div></td></tr><tr><td>Item2</td><td><det │ │ ails class="dni-treeview"><summary><span class="dni-code-hint"><code>{ lines │ │ = [|"\u2... │ ╰──────────────────────────────────────────────────────────────────────────────╯ ╭─[ 32.18ms - stdout ]─────────────────────────────────────────────────────────╮ │ '☺' │ │ ☺ │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ### jString │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let quotedString = let quote = pchar '\"' <?> "quote" let jchar = jUnescapedChar <|> jEscapedChar <|> jUnicodeChar quote >>. manyChars jchar .>> quote ── fsharp ────────────────────────────────────────────────────────────────────── let jString = quotedString |>> JString <?> "quoted string" ── fsharp ────────────────────────────────────────────────────────────────────── //// test jValueRef <| choice [[ jNull jBool jString ]] ── fsharp ────────────────────────────────────────────────────────────────────── //// test run jString "\"\"" |> parserEqual (Success (JString "")) ╭─[ 33.93ms - return value ]───────────────────────────────────────────────────╮ │ <details open="open" class="dni-treeview"><summary><span │ │ class="dni-code-hint"><code>Success (JString "", { lines = [ │ │ |""""|]<br/> position = { line = │ │ 0<br/> column = 2 } │ │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ │ >Item</td><td><details class="dni-treeview"><summary><span │ │ class="dni-code-hint"><code>(JString "", { lines = [ │ │ |""""|]<br/> position = { line = 0<br/> │ │ column = 2 } │ │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ │ >Item1</td><td><details class="dni-treeview"><summary><span │ │ class="dni-code-hint"><code>JString ""</code></span></summary>... │ ╰──────────────────────────────────────────────────────────────────────────────╯ ╭─[ 35.19ms - stdout ]─────────────────────────────────────────────────────────╮ │ JString "" │ │ JString │ │ Item: │ │ IsJString: True │ │ IsJNumber: False │ │ IsJBool: False │ │ IsJNull: False │ │ IsJObject: False │ │ IsJArray: False │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── //// test run jString "\"a\"" |> parserEqual (Success (JString "a")) ╭─[ 22.77ms - return value ]───────────────────────────────────────────────────╮ │ <details open="open" class="dni-treeview"><summary><span │ │ class="dni-code-hint"><code>Success (JString "a", { lines = [ │ │ |""a""|]<br/> position = { line = │ │ 0<br/> column = 3 } │ │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ │ >Item</td><td><details class="dni-treeview"><summary><span │ │ class="dni-code-hint"><code>(JString "a", { lines = [ │ │ |""a""|]<br/> position = { line = 0<br/> │ │ column = 3 } │ │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ │ >Item1</td><td><details class="dni-treeview"><summary><span │ │ class="dni-code-hint"><code>JString "a"</code></span></s... │ ╰──────────────────────────────────────────────────────────────────────────────╯ ╭─[ 24.08ms - stdout ]─────────────────────────────────────────────────────────╮ │ JString "a" │ │ JString │ │ Item: a │ │ IsJString: True │ │ IsJNumber: False │ │ IsJBool: False │ │ IsJNull: False │ │ IsJObject: False │ │ IsJArray: False │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── //// test run jString "\"ab\"" |> parserEqual (Success (JString "ab")) ╭─[ 22.04ms - return value ]───────────────────────────────────────────────────╮ │ <details open="open" class="dni-treeview"><summary><span │ │ class="dni-code-hint"><code>Success (JString "ab", { lines = [ │ │ |""ab""|]<br/> position = { line │ │ = 0<br/> column = 4 } │ │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ │ >Item</td><td><details class="dni-treeview"><summary><span │ │ class="dni-code-hint"><code>(JString "ab", { lines = [ │ │ |""ab""|]<br/> position = { line = 0<br/> │ │ column = 4 } │ │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ │ >Item1</td><td><details class="dni-treeview"><summary><span │ │ class="dni-code-hint"><code>JString "ab"</code></s... │ ╰──────────────────────────────────────────────────────────────────────────────╯ ╭─[ 23.27ms - stdout ]─────────────────────────────────────────────────────────╮ │ JString "ab" │ │ JString │ │ Item: ab │ │ IsJString: True │ │ IsJNumber: False │ │ IsJBool: False │ │ IsJNull: False │ │ IsJObject: False │ │ IsJArray: False │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── //// test run jString "\"ab\\tde\"" |> parserEqual (Success (JString "ab\tde")) ╭─[ 22.44ms - return value ]───────────────────────────────────────────────────╮ │ <details open="open" class="dni-treeview"><summary><span │ │ class="dni-code-hint"><code>Success (JString "ab de", { lines = [ │ │ |""ab\tde""|]<br/> position = │ │ { line = 0<br/> column = 8 } │ │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ │ >Item</td><td><details class="dni-treeview"><summary><span │ │ class="dni-code-hint"><code>(JString "ab de", { lines = [ │ │ |""ab\tde""|]<br/> position = { line = 0<br/> │ │ column = 8 } │ │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ │ >Item1</td><td><details class="dni-treeview"><summary><span │ │ class="dni-code-hint"><code>JString &quo... │ ╰──────────────────────────────────────────────────────────────────────────────╯ ╭─[ 23.68ms - stdout ]─────────────────────────────────────────────────────────╮ │ JString "ab de" │ │ JString │ │ Item: ab de │ │ IsJString: True │ │ IsJNumber: False │ │ IsJBool: False │ │ IsJNull: False │ │ IsJObject: False │ │ IsJArray: False │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── //// test run jString "\"ab\\u263Ade\"" |> parserEqual (Success (JString "ab☺de")) ╭─[ 24.86ms - return value ]───────────────────────────────────────────────────╮ │ <details open="open" class="dni-treeview"><summary><span │ │ class="dni-code-hint"><code>Success (JString "ab☺de", { lines = [ │ │ |""ab\u263Ade""|]<br/> │ │ position = { line = 0<br/> column = │ │ 12 } │ │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ │ >Item</td><td><details class="dni-treeview"><summary><span │ │ class="dni-code-hint"><code>(JString "ab☺de", { lines = [ │ │ |""ab\u263Ade""|]<br/> position = { line = 0<br/> │ │ column = 12 } │ │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ │ >Item1</td><td><details class="dni-treeview"><summary><span │ │ class="dni-code-hint"><code>JS... │ ╰──────────────────────────────────────────────────────────────────────────────╯ ╭─[ 26.23ms - stdout ]─────────────────────────────────────────────────────────╮ │ JString "ab☺de" │ │ JString │ │ Item: ab☺de │ │ IsJString: True │ │ IsJNumber: False │ │ IsJBool: False │ │ IsJNull: False │ │ IsJObject: False │ │ IsJArray: False │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ### jNumber │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let jNumber = let optSign = opt (pchar '-') let zero = pstring "0" let digitOneNine = satisfy (fun ch -> Char.IsDigit ch && ch <> '0') "1-9" let digit = satisfy Char.IsDigit "digit" let point = pchar '.' let e = pchar 'e' <|> pchar 'E' let optPlusMinus = opt (pchar '-' <|> pchar '+') let nonZeroInt = digitOneNine .>>. manyChars digit |>> fun (first, rest) -> string first + rest let intPart = zero <|> nonZeroInt let fractionPart = point >>. manyChars1 digit let exponentPart = e >>. optPlusMinus .>>. manyChars1 digit let inline (|>?) opt f = match opt with | None -> "" | Some x -> f x let inline convertToJNumber (((optSign, intPart), fractionPart), expPart) = let signStr = optSign |>? string let fractionPartStr = fractionPart |>? (fun digits -> "." + digits) let expPartStr = expPart |>? fun (optSign, digits) -> let sign = optSign |>? string "e" + sign + digits (signStr + intPart + fractionPartStr + expPartStr) |> float |> JNumber optSign .>>. intPart .>>. opt fractionPart .>>. opt exponentPart |>> convertToJNumber <?> "number" ── fsharp ────────────────────────────────────────────────────────────────────── //// test jValueRef <| choice [[ jNull jBool jString jNumber ]] ── fsharp ────────────────────────────────────────────────────────────────────── //// test run jNumber "123" |> parserEqual (Success (JNumber 123.0)) ╭─[ 45.86ms - return value ]───────────────────────────────────────────────────╮ │ <details open="open" class="dni-treeview"><summary><span │ │ class="dni-code-hint"><code>Success (JNumber 123.0, { lines = [ │ │ |"123"|]<br/> position = { line = 0<br/> │ │ column = 3 } │ │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ │ >Item</td><td><details class="dni-treeview"><summary><span │ │ class="dni-code-hint"><code>(JNumber 123.0, { lines = [ │ │ |"123"|]<br/> position = { line = 0<br/> column = 3 │ │ } │ │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ │ >Item1</td><td><details class="dni-treeview"><summary><span │ │ class="dni-code-hint"><code>JNumber │ │ 123.0</code></span></summary><div><table><thead><tr></tr></the... │ ╰──────────────────────────────────────────────────────────────────────────────╯ ╭─[ 47.18ms - stdout ]─────────────────────────────────────────────────────────╮ │ JNumber 123.0 │ │ JNumber │ │ Item: 123 │ │ IsJString: False │ │ IsJNumber: True │ │ IsJBool: False │ │ IsJNull: False │ │ IsJObject: False │ │ IsJArray: False │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── //// test run jNumber "-123" |> parserEqual (Success (JNumber -123.0)) ╭─[ 24.03ms - return value ]───────────────────────────────────────────────────╮ │ <details open="open" class="dni-treeview"><summary><span │ │ class="dni-code-hint"><code>Success (JNumber -123.0, { lines = [ │ │ |"-123"|]<br/> position = { line = │ │ 0<br/> column = 4 } │ │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ │ >Item</td><td><details class="dni-treeview"><summary><span │ │ class="dni-code-hint"><code>(JNumber -123.0, { lines = [ │ │ |"-123"|]<br/> position = { line = 0<br/> column = │ │ 4 } │ │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ │ >Item1</td><td><details class="dni-treeview"><summary><span │ │ class="dni-code-hint"><code>JNumber │ │ -123.0</code></span></summary><div><table><thead><tr></t... │ ╰──────────────────────────────────────────────────────────────────────────────╯ ╭─[ 25.29ms - stdout ]─────────────────────────────────────────────────────────╮ │ JNumber -123.0 │ │ JNumber │ │ Item: -123 │ │ IsJString: False │ │ IsJNumber: True │ │ IsJBool: False │ │ IsJNull: False │ │ IsJObject: False │ │ IsJArray: False │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── //// test run jNumber "123.4" |> parserEqual (Success (JNumber 123.4)) ╭─[ 24.72ms - return value ]───────────────────────────────────────────────────╮ │ <details open="open" class="dni-treeview"><summary><span │ │ class="dni-code-hint"><code>Success (JNumber 123.4, { lines = [ │ │ |"123.4"|]<br/> position = { line = │ │ 0<br/> column = 5 } │ │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ │ >Item</td><td><details class="dni-treeview"><summary><span │ │ class="dni-code-hint"><code>(JNumber 123.4, { lines = [ │ │ |"123.4"|]<br/> position = { line = 0<br/> column = │ │ 5 } │ │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ │ >Item1</td><td><details class="dni-treeview"><summary><span │ │ class="dni-code-hint"><code>JNumber │ │ 123.4</code></span></summary><div><table><thead><tr></tr><... │ ╰──────────────────────────────────────────────────────────────────────────────╯ ╭─[ 25.97ms - stdout ]─────────────────────────────────────────────────────────╮ │ JNumber 123.4 │ │ JNumber │ │ Item: 123.4 │ │ IsJString: False │ │ IsJNumber: True │ │ IsJBool: False │ │ IsJNull: False │ │ IsJObject: False │ │ IsJArray: False │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── //// test run jNumber "-123." |> parserEqual (Success (JNumber -123.0)) ╭─[ 22.53ms - return value ]───────────────────────────────────────────────────╮ │ <details open="open" class="dni-treeview"><summary><span │ │ class="dni-code-hint"><code>Success (JNumber -123.0, { lines = [ │ │ |"-123."|]<br/> position = { line = │ │ 0<br/> column = 4 } │ │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ │ >Item</td><td><details class="dni-treeview"><summary><span │ │ class="dni-code-hint"><code>(JNumber -123.0, { lines = [ │ │ |"-123."|]<br/> position = { line = 0<br/> column = │ │ 4 } │ │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ │ >Item1</td><td><details class="dni-treeview"><summary><span │ │ class="dni-code-hint"><code>JNumber │ │ -123.0</code></span></summary><div><table><thead><tr><... │ ╰──────────────────────────────────────────────────────────────────────────────╯ ╭─[ 23.81ms - stdout ]─────────────────────────────────────────────────────────╮ │ JNumber -123.0 │ │ JNumber │ │ Item: -123 │ │ IsJString: False │ │ IsJNumber: True │ │ IsJBool: False │ │ IsJNull: False │ │ IsJObject: False │ │ IsJArray: False │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── //// test run jNumber "00.1" |> parserEqual (Success (JNumber 0.0)) ╭─[ 22.65ms - return value ]───────────────────────────────────────────────────╮ │ <details open="open" class="dni-treeview"><summary><span │ │ class="dni-code-hint"><code>Success (JNumber 0.0, { lines = [ │ │ |"00.1"|]<br/> position = { line = 0<br/> │ │ column = 1 } │ │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ │ >Item</td><td><details class="dni-treeview"><summary><span │ │ class="dni-code-hint"><code>(JNumber 0.0, { lines = [ │ │ |"00.1"|]<br/> position = { line = 0<br/> column = │ │ 1 } │ │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ │ >Item1</td><td><details class="dni-treeview"><summary><span │ │ class="dni-code-hint"><code>JNumber │ │ 0.0</code></span></summary><div><table><thead><tr></tr></thead><tbod... │ ╰──────────────────────────────────────────────────────────────────────────────╯ ╭─[ 24.08ms - stdout ]─────────────────────────────────────────────────────────╮ │ JNumber 0.0 │ │ JNumber │ │ Item: 0 │ │ IsJString: False │ │ IsJNumber: True │ │ IsJBool: False │ │ IsJNull: False │ │ IsJObject: False │ │ IsJArray: False │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── //// test let jNumber_ = jNumber .>> spaces1 ── fsharp ────────────────────────────────────────────────────────────────────── //// test run jNumber_ "123" |> parserEqual (Success (JNumber 123.0)) ╭─[ 24.80ms - return value ]───────────────────────────────────────────────────╮ │ <details open="open" class="dni-treeview"><summary><span │ │ class="dni-code-hint"><code>Success (JNumber 123.0, { lines = [ │ │ |"123"|]<br/> position = { line = 1<br/> │ │ column = 0 } │ │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ │ >Item</td><td><details class="dni-treeview"><summary><span │ │ class="dni-code-hint"><code>(JNumber 123.0, { lines = [ │ │ |"123"|]<br/> position = { line = 1<br/> column = 0 │ │ } │ │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ │ >Item1</td><td><details class="dni-treeview"><summary><span │ │ class="dni-code-hint"><code>JNumber │ │ 123.0</code></span></summary><div><table><thead><tr></tr></the... │ ╰──────────────────────────────────────────────────────────────────────────────╯ ╭─[ 26.00ms - stdout ]─────────────────────────────────────────────────────────╮ │ JNumber 123.0 │ │ JNumber │ │ Item: 123 │ │ IsJString: False │ │ IsJNumber: True │ │ IsJBool: False │ │ IsJNull: False │ │ IsJObject: False │ │ IsJArray: False │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── //// test run jNumber_ "-123" |> parserEqual (Success (JNumber -123.0)) ╭─[ 23.28ms - return value ]───────────────────────────────────────────────────╮ │ <details open="open" class="dni-treeview"><summary><span │ │ class="dni-code-hint"><code>Success (JNumber -123.0, { lines = [ │ │ |"-123"|]<br/> position = { line = │ │ 1<br/> column = 0 } │ │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ │ >Item</td><td><details class="dni-treeview"><summary><span │ │ class="dni-code-hint"><code>(JNumber -123.0, { lines = [ │ │ |"-123"|]<br/> position = { line = 1<br/> column = │ │ 0 } │ │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ │ >Item1</td><td><details class="dni-treeview"><summary><span │ │ class="dni-code-hint"><code>JNumber │ │ -123.0</code></span></summary><div><table><thead><tr></t... │ ╰──────────────────────────────────────────────────────────────────────────────╯ ╭─[ 24.57ms - stdout ]─────────────────────────────────────────────────────────╮ │ JNumber -123.0 │ │ JNumber │ │ Item: -123 │ │ IsJString: False │ │ IsJNumber: True │ │ IsJBool: False │ │ IsJNull: False │ │ IsJObject: False │ │ IsJArray: False │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── //// test run jNumber_ "-123." |> parserEqual ( Failure ( "number andThen many1 whitespace", "Unexpected '.'", { currentLine = "-123."; line = 0; column = 4 } ) ) ╭─[ 20.16ms - return value ]───────────────────────────────────────────────────╮ │ <details open="open" class="dni-treeview"><summary><span │ │ class="dni-code-hint"><code>Failure<br/> ("number andThen many1 │ │ whitespace", "Unexpected '.'", { currentLine = │ │ "-123."<br/> │ │ line = 0<br/> │ │ column = 4 │ │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ │ >Item1</td><td><div class="dni-plaintext"><pre>number andThen many1 │ │ whitespace</pre></div></td></tr><tr><td>Item2</td><td><div │ │ class="dni-plaintext"><pre>Unexpected │ │ '.'</pre></div></td></tr><tr><td>Item3</td><td><details │ │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ │ │ currentLine = "... │ ╰──────────────────────────────────────────────────────────────────────────────╯ ╭─[ 21.20ms - stdout ]─────────────────────────────────────────────────────────╮ │ Line:0 Col:4 Error parsing number andThen many1 whitespace │ │ -123. │ │ ^Unexpected '.' │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── //// test run jNumber_ "123.4" |> parserEqual (Success (JNumber 123.4)) ╭─[ 22.67ms - return value ]───────────────────────────────────────────────────╮ │ <details open="open" class="dni-treeview"><summary><span │ │ class="dni-code-hint"><code>Success (JNumber 123.4, { lines = [ │ │ |"123.4"|]<br/> position = { line = │ │ 1<br/> column = 0 } │ │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ │ >Item</td><td><details class="dni-treeview"><summary><span │ │ class="dni-code-hint"><code>(JNumber 123.4, { lines = [ │ │ |"123.4"|]<br/> position = { line = 1<br/> column = │ │ 0 } │ │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ │ >Item1</td><td><details class="dni-treeview"><summary><span │ │ class="dni-code-hint"><code>JNumber │ │ 123.4</code></span></summary><div><table><thead><tr></tr><... │ ╰──────────────────────────────────────────────────────────────────────────────╯ ╭─[ 23.90ms - stdout ]─────────────────────────────────────────────────────────╮ │ JNumber 123.4 │ │ JNumber │ │ Item: 123.4 │ │ IsJString: False │ │ IsJNumber: True │ │ IsJBool: False │ │ IsJNull: False │ │ IsJObject: False │ │ IsJArray: False │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── //// test run jNumber_ "00.4" |> parserEqual ( Failure ( "number andThen many1 whitespace", "Unexpected '0'", { currentLine = "00.4"; line = 0; column = 1 } ) ) ╭─[ 19.69ms - return value ]───────────────────────────────────────────────────╮ │ <details open="open" class="dni-treeview"><summary><span │ │ class="dni-code-hint"><code>Failure<br/> ("number andThen many1 │ │ whitespace", "Unexpected '0'", { currentLine = │ │ "00.4"<br/> │ │ line = 0<br/> │ │ column = 1 │ │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ │ >Item1</td><td><div class="dni-plaintext"><pre>number andThen many1 │ │ whitespace</pre></div></td></tr><tr><td>Item2</td><td><div │ │ class="dni-plaintext"><pre>Unexpected │ │ '0'</pre></div></td></tr><tr><td>Item3</td><td><details │ │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ │ │ currentLine = "0... │ ╰──────────────────────────────────────────────────────────────────────────────╯ ╭─[ 20.75ms - stdout ]─────────────────────────────────────────────────────────╮ │ Line:0 Col:1 Error parsing number andThen many1 whitespace │ │ 00.4 │ │ ^Unexpected '0' │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── //// test run jNumber_ "123e4" |> parserEqual (Success (JNumber 1230000.0)) ╭─[ 25.52ms - return value ]───────────────────────────────────────────────────╮ │ <details open="open" class="dni-treeview"><summary><span │ │ class="dni-code-hint"><code>Success (JNumber 1230000.0, { lines = [ │ │ |"123e4"|]<br/> position = { line = │ │ 1<br/> column = 0 } │ │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ │ >Item</td><td><details class="dni-treeview"><summary><span │ │ class="dni-code-hint"><code>(JNumber 1230000.0, { lines = [ │ │ |"123e4"|]<br/> position = { line = 1<br/> column = │ │ 0 } │ │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ │ >Item1</td><td><details class="dni-treeview"><summary><span │ │ class="dni-code-hint"><code>JNumber │ │ 1230000.0</code></span></summary><div><tab... │ ╰──────────────────────────────────────────────────────────────────────────────╯ ╭─[ 26.79ms - stdout ]─────────────────────────────────────────────────────────╮ │ JNumber 1230000.0 │ │ JNumber │ │ Item: 1230000 │ │ IsJString: False │ │ IsJNumber: True │ │ IsJBool: False │ │ IsJNull: False │ │ IsJObject: False │ │ IsJArray: False │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── //// test run jNumber_ "123.4e5" |> parserEqual (Success (JNumber 12340000.0)) ╭─[ 23.56ms - return value ]───────────────────────────────────────────────────╮ │ <details open="open" class="dni-treeview"><summary><span │ │ class="dni-code-hint"><code>Success (JNumber 12340000.0, { lines = [ │ │ |"123.4e5"|]<br/> position = { line │ │ = 1<br/> column = 0 } │ │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ │ >Item</td><td><details class="dni-treeview"><summary><span │ │ class="dni-code-hint"><code>(JNumber 12340000.0, { lines = [ │ │ |"123.4e5"|]<br/> position = { line = 1<br/> column │ │ = 0 } │ │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ │ >Item1</td><td><details class="dni-treeview"><summary><span │ │ class="dni-code-hint"><code>JNumber 12340000.0</code></span></summary>... │ ╰──────────────────────────────────────────────────────────────────────────────╯ ╭─[ 24.75ms - stdout ]─────────────────────────────────────────────────────────╮ │ JNumber 12340000.0 │ │ JNumber │ │ Item: 12340000 │ │ IsJString: False │ │ IsJNumber: True │ │ IsJBool: False │ │ IsJNull: False │ │ IsJObject: False │ │ IsJArray: False │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── //// test run jNumber_ "123.4e-5" |> parserEqual (Success (JNumber 0.001234)) ╭─[ 23.35ms - return value ]───────────────────────────────────────────────────╮ │ <details open="open" class="dni-treeview"><summary><span │ │ class="dni-code-hint"><code>Success (JNumber 0.001234, { lines = [ │ │ |"123.4e-5"|]<br/> position = { line = │ │ 1<br/> column = 0 } │ │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ │ >Item</td><td><details class="dni-treeview"><summary><span │ │ class="dni-code-hint"><code>(JNumber 0.001234, { lines = [ │ │ |"123.4e-5"|]<br/> position = { line = 1<br/> │ │ column = 0 } │ │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ │ >Item1</td><td><details class="dni-treeview"><summary><span │ │ class="dni-code-hint"><code>JNumber │ │ 0.001234</code></span></summary><div><ta... │ ╰──────────────────────────────────────────────────────────────────────────────╯ ╭─[ 24.57ms - stdout ]─────────────────────────────────────────────────────────╮ │ JNumber 0.001234 │ │ JNumber │ │ Item: 0.001234 │ │ IsJString: False │ │ IsJNumber: True │ │ IsJBool: False │ │ IsJNull: False │ │ IsJObject: False │ │ IsJArray: False │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ### jArray │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let jArray = let left = pchar '[[' .>> spaces let right = pchar ']]' .>> spaces let comma = pchar ',' .>> spaces let value = jValue .>> spaces let values = sepBy value comma between left values right |>> JArray <?> "array" ── fsharp ────────────────────────────────────────────────────────────────────── //// test jValueRef <| choice [[ jNull jBool jString jNumber jArray ]] ── fsharp ────────────────────────────────────────────────────────────────────── //// test run jArray "[[ 1, 2 ]]" |> parserEqual (Success (JArray [[ JNumber 1.0; JNumber 2.0 ]])) ╭─[ 97.16ms - return value ]───────────────────────────────────────────────────╮ │ <details open="open" class="dni-treeview"><summary><span │ │ class="dni-code-hint"><code>Success (JArray [JNumber 1.0; JNumber 2.0], { │ │ lines = [|"[ 1, 2 ]"|]<br/> │ │ position = { line = 1<br/> │ │ column = 0 } │ │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ │ >Item</td><td><details class="dni-treeview"><summary><span │ │ class="dni-code-hint"><code>(JArray [JNumber 1.0; JNumber 2.0], { lines = [ │ │ |"[ 1, 2 ]"|]<br/> position = { line = 1<br/> │ │ column = 0 } │ │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ │ >Item1</td><td><details class="dni-treeview"><summary><span class="d... │ ╰──────────────────────────────────────────────────────────────────────────────╯ ╭─[ 98.86ms - stdout ]─────────────────────────────────────────────────────────╮ │ JArray [JNumber 1.0; JNumber 2.0] │ │ JArray │ │ Item: FSharpList<JValue> │ │ - Item: 1 │ │ IsJString: False │ │ IsJNumber: True │ │ IsJBool: False │ │ IsJNull: False │ │ IsJObject: False │ │ IsJArray: False │ │ - Item: 2 │ │ IsJString: False │ │ IsJNumber: True │ │ IsJBool: False │ │ IsJNull: False │ │ IsJObject: False │ │ IsJArray: False │ │ IsJString: False │ │ IsJNumber: False │ │ IsJBool: False │ │ IsJNull: False │ │ IsJObject: False │ │ IsJArray: True │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── //// test run jArray "[[ 1, 2, ]]" |> parserEqual ( Failure ( "array", "Unexpected ','", { currentLine = "[[ 1, 2, ]]"; line = 0; column = 6 } ) ) ╭─[ 26.45ms - return value ]───────────────────────────────────────────────────╮ │ <details open="open" class="dni-treeview"><summary><span │ │ class="dni-code-hint"><code>Failure ("array", "Unexpected │ │ ','", { currentLine = "[ 1, 2, ]"<br/> │ │ line = 0<br/> column = 6 │ │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ │ >Item1</td><td><div │ │ class="dni-plaintext"><pre>array</pre></div></td></tr><tr><td>Item2</td><td> │ │ <div class="dni-plaintext"><pre>Unexpected │ │ ','</pre></div></td></tr><tr><td>Item3</td><td><details │ │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ │ │ currentLine = "[ 1, 2, ]"<br/> line = 0<br/> column = 6 │ │ }</code></span></summary><div><table><thead><t... │ ╰──────────────────────────────────────────────────────────────────────────────╯ ╭─[ 27.63ms - stdout ]─────────────────────────────────────────────────────────╮ │ Line:0 Col:6 Error parsing array │ │ [ 1, 2, ] │ │ ^Unexpected ',' │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ### jObject │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let jObject = let left = spaces >>. pchar '{' .>> spaces let right = pchar '}' .>> spaces let colon = pchar ':' .>> spaces let comma = pchar ',' .>> spaces let key = quotedString .>> spaces let value = jValue .>> spaces let keyValue = (key .>> colon) .>>. value let keyValues = sepBy keyValue comma between left keyValues right |>> Map.ofList |>> JObject <?> "object" ── fsharp ────────────────────────────────────────────────────────────────────── jValueRef <| choice [[ jNull jBool jString jNumber jArray jObject ]] ── fsharp ────────────────────────────────────────────────────────────────────── //// test run jObject """{ "a":1, "b" : 2 }""" |> parserEqual ( Success ( JObject ( Map.ofList [[ "a", JNumber 1.0 "b", JNumber 2.0 ]] ) ) ) ╭─[ 75.07ms - return value ]───────────────────────────────────────────────────╮ │ <details open="open" class="dni-treeview"><summary><span │ │ class="dni-code-hint"><code>Success<br/> (JObject (map [("a", │ │ JNumber 1.0); ("b", JNumber 2.0)]),<br/> { lines = [|"{ │ │ "a":1, "b" : 2 }"|]<br/> position = { line = │ │ 1<br/> column = 0 } │ │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ │ >Item</td><td><details class="dni-treeview"><summary><span │ │ class="dni-code-hint"><code>(JObject (map [("a", JNumber 1.0); │ │ ("b", JNumber 2.0)]), { lines = [|"{ "a":1, │ │ "b" : 2 }"|]<br/> position = { line = 1<br/> │ │ column = 0 } │ │ })</code></span></summary><div><table><thead><tr></tr></thead><tbod... │ ╰──────────────────────────────────────────────────────────────────────────────╯ ╭─[ 76.62ms - stdout ]─────────────────────────────────────────────────────────╮ │ JObject (map [("a", JNumber 1.0); ("b", JNumber 2.0)]) │ │ JObject │ │ Item: FSharpMap<String,JValue> │ │ - Key: a │ │ Value: JNumber │ │ Item: 1 │ │ IsJString: False │ │ IsJNumber: True │ │ IsJBool: False │ │ IsJNull: False │ │ IsJObject: False │ │ IsJArray: False │ │ - Key: b │ │ Value: JNumber │ │ Item: 2 │ │ IsJString: False │ │ IsJNumber: True │ │ IsJBool: False │ │ IsJNull: False │ │ IsJObject: False │ │ IsJArray: False │ │ IsJString: False │ │ IsJNumber: False │ │ IsJBool: False │ │ IsJNull: False │ │ IsJObject: True │ │ IsJArray: False │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── //// test run jObject """{ "a":1, "b" : 2, }""" |> parserEqual ( Failure ( "object", "Unexpected ','", { currentLine = """{ "a":1, "b" : 2, }"""; line = 0; column = 18 } ) ) ╭─[ 35.89ms - return value ]───────────────────────────────────────────────────╮ │ <details open="open" class="dni-treeview"><summary><span │ │ class="dni-code-hint"><code>Failure ("object", "Unexpected │ │ ','", { currentLine = "{ "a":1, "b" : │ │ 2, }"<br/> line = 0<br/> │ │ column = 18 │ │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ │ >Item1</td><td><div │ │ class="dni-plaintext"><pre>object</pre></div></td></tr><tr><td>Item2</td><td │ │ ><div class="dni-plaintext"><pre>Unexpected │ │ ','</pre></div></td></tr><tr><td>Item3</td><td><details │ │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ │ │ currentLine = "{ "a":1, "b" : 2, }"<br/> │ │ lin... │ ╰──────────────────────────────────────────────────────────────────────────────╯ ╭─[ 37.63ms - stdout ]─────────────────────────────────────────────────────────╮ │ Line:0 Col:18 Error parsing object │ │ { "a":1, "b" : 2, } │ │ ^Unexpected ',' │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ### jValue │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── //// test let example1 = """{ "name" : "Scott", "isMale" : true, "bday" : {"year":2001, "month":12, "day":25 }, "favouriteColors" : [["blue", "green"]], "emptyArray" : [[]], "emptyObject" : {} }""" run jValue example1 |> parserEqual ( Success ( JObject ( Map.ofList [[ "name", JString "Scott" "isMale", JBool true "bday", JObject ( Map.ofList [[ "year", JNumber 2001.0 "month", JNumber 12.0 "day", JNumber 25.0 ]] ) "favouriteColors", JArray [[ JString "blue"; JString "green" ]] "emptyArray", JArray [[]] "emptyObject", JObject Map.empty ]] ) ) ) ╭─[ 121.75ms - return value ]──────────────────────────────────────────────────╮ │ <details open="open" class="dni-treeview"><summary><span │ │ class="dni-code-hint"><code>Success<br/> (JObject<br/> (map<br/> │ │ [("bday",<br/> JObject<br/> (map<br/> │ │ [("day", JNumber 25.0); ("month", JNumber 12.0);<br/> │ │ ("year", JNumber 2001.0)])); ("emptyArray", JArray [ │ │ ]);<br/> ("emptyObject", JObject (map []));<br/> │ │ ("favouriteColors", │ │ ...</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><t │ │ d>Item</td><td><details class="dni-treeview"><summary><span │ │ class="dni-code-hint"><code>(JObject<br/> (map<br/> [ │ │ ("bday",<br/> JObject<br/> (map<br/> [ │ │ (... │ ╰──────────────────────────────────────────────────────────────────────────────╯ ╭─[ 123.53ms - stdout ]────────────────────────────────────────────────────────╮ │ JObject │ │ (map │ │ [("bday", │ │ JObject │ │ (map │ │ [("day", JNumber 25.0); ("month", JNumber 12.0); │ │ ("year", JNumber 2001.0)])); ("emptyArray", JArray []); │ │ ("emptyObject", JObject (map [])); │ │ ("favouriteColors", JArray [JString "blue"; JString "green"]); │ │ ("isMale", JBool true); ("name", JString "Scott")]) │ │ JObject │ │ Item: FSharpMap<String,JValue> │ │ - Key: bday │ │ Value: JObject │ │ Item: FSharpMap<String,JValue> │ │ - Key: day │ │ Value: JNumber 25.0 │ │ - Key: month │ │ Value: JNumber 12.0 │ │ - Key: year │ │ Value: JNumber 2001.0 │ │ IsJString: False │ │ IsJNumber: False │ │ IsJBool: False │ │ IsJNull: False │ │ IsJObject: True │ │ IsJArray: False │ │ - Key: emptyArray │ │ Value: JArray │ │ Item: FSharpList<JValue> │ │ │ │ IsJString: False │ │ IsJNumber: False │ │ IsJBool: False │ │ IsJNull: False │ │ IsJObject: False │ │ IsJArray: True │ │ - Key: emptyObject │ │ Value: JObject │ │ Item: FSharpMap<String,JValue> │ │ │ │ IsJString: False │ │ IsJNumber: False │ │ IsJBool: False │ │ IsJNull: False │ │ IsJObject: True │ │ IsJArray: False │ │ - Key: favouriteColors │ │ Value: JArray │ │ Item: FSharpList<JValue> │ │ - Item: blue │ │ IsJString: True │ │ IsJNumber: False │ │ IsJBool: False │ │ IsJNull: False │ │ IsJObject: False │ │ IsJArray: False │ │ - Item: green │ │ IsJString: True │ │ IsJNumber: False │ │ IsJBool: False │ │ IsJNull: False │ │ IsJObject: False │ │ IsJArray: False │ │ IsJString: False │ │ IsJNumber: False │ │ IsJBool: False │ │ IsJNull: False │ │ IsJObject: False │ │ IsJArray: True │ │ - Key: isMale │ │ Value: JBool │ │ Item: True │ │ IsJString: False │ │ IsJNumber: False │ │ IsJBool: True │ │ IsJNull: False │ │ IsJObject: False │ │ IsJArray: False │ │ - Key: name │ │ Value: JString │ │ Item: Scott │ │ IsJString: True │ │ IsJNumber: False │ │ IsJBool: False │ │ IsJNull: False │ │ IsJObject: False │ │ IsJArray: False │ │ IsJString: False │ │ IsJNumber: False │ │ IsJBool: False │ │ IsJNull: False │ │ IsJObject: True │ │ IsJArray: False │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── //// test let example2 = """{"widget": { "debug": "on", "window": { "title": "Sample Konfabulator Widget", "name": "main_window", "width": 500, "height": 500 }, "image": { "src": "Images/Sun.png", "name": "sun1", "hOffset": 250, "vOffset": 250, "alignment": "center" }, "text": { "data": "Click Here", "size": 36, "style": "bold", "name": "text1", "hOffset": 250, "vOffset": 100, "alignment": "center", "onMouseUp": "sun1.opacity = (sun1.opacity / 100) * 90;" } }}""" run jValue example2 |> parserEqual ( Success ( JObject ( Map.ofList [[ "widget", JObject ( Map.ofList [[ "debug", JString "on" "window", JObject ( Map.ofList [[ "title", JString "Sample Konfabulator Widget" "name", JString "main_window" "width", JNumber 500.0 "height", JNumber 500.0 ]] ) "image", JObject ( Map.ofList [[ "src", JString "Images/Sun.png" "name", JString "sun1" "hOffset", JNumber 250.0 "vOffset", JNumber 250.0 "alignment", JString "center" ]] ) "text", JObject ( Map.ofList [[ "data", JString "Click Here" "size", JNumber 36.0 "style", JString "bold" "name", JString "text1" "hOffset", JNumber 250.0 "vOffset", JNumber 100.0 "alignment", JString "center" "onMouseUp", JString "sun1.opacity = (sun1.opacity / 100) * 90;" ]] ) ]] ) ]] ) ) ) ╭─[ 294.21ms - return value ]──────────────────────────────────────────────────╮ │ <details open="open" class="dni-treeview"><summary><span │ │ class="dni-code-hint"><code>Success<br/> (JObject<br/> (map<br/> │ │ [("widget",<br/> JObject<br/> (map<br/> │ │ [("debug", JString "on");<br/> │ │ ("image",<br/> JObject<br/> │ │ (map<br/> [("alignment", JString │ │ "center");<br/> │ │ ("hOffset"...</code></span></summary><div><table><thead><tr></tr>< │ │ /thead><tbody><tr><td>Item</td><td><details │ │ class="dni-treeview"><summary><span │ │ class="dni-code-hint"><code>(JObject<br/> (map<br/> [ │ │ ("widget",<br/> JObject<br/> (map<br/> ... │ ╰──────────────────────────────────────────────────────────────────────────────╯ ╭─[ 295.64ms - stdout ]────────────────────────────────────────────────────────╮ │ JObject │ │ (map │ │ [("widget", │ │ JObject │ │ (map │ │ [("debug", JString "on"); │ │ ("image", │ │ JObject │ │ (map │ │ [("alignment", JString "center"); ("hOffset", JNumber │ │ 250.0); │ │ ("name", JString "sun1"); ("src", JString │ │ "Images/Sun.png"); │ │ ("vOffset", JNumber 250.0)])); │ │ ("text", │ │ JObject │ │ (map │ │ [("alignment", JString "center"); │ │ ("data", JString "Click Here"); ("hOffset", JNumber │ │ 250.0); │ │ ("name", JString "text1"); │ │ ("onMouseUp", │ │ JString "sun1.opacity = (sun1.opacity / 100) * 90;"); │ │ ("size", JNumber 36.0); ("style", JString "bold"); │ │ ("vOffset", JNumber 100.0)])); │ │ ("window", │ │ JObject │ │ (map │ │ [("height", JNumber 500.0); ("name", JString │ │ "main_window"); │ │ ("title", JString "Sample Konfabulator Widget"); │ │ ("width", JNumber 500.0)]))]))]) │ │ JObject │ │ Item: FSharpMap<String,JValue> │ │ - Key: widget │ │ Value: JObject │ │ Item: FSharpMap<String,JValue> │ │ - Key: debug │ │ Value: JString "on" │ │ - Key: image │ │ Value: JObject │ │ (map │ │ [("alignment", JString "center"); ("hOffset", JNumber 250.0); │ │ ("name", JString "sun1"); ("src", JString "Images/Sun.png"); │ │ ("vOffset", JNumber 250.0)]) │ │ - Key: text │ │ Value: JObject │ │ (map │ │ [("alignment", JString "center"); ("data", JString "Click Here"); │ │ ("hOffset", JNumber 250.0); ("name", JString "text1"); │ │ ("onMouseUp", JString "sun1.opacity = (sun1.opacity / 100) * 90;"); │ │ ("size", JNumber 36.0); ("style", JString "bold"); │ │ ("vOffset", JNumber 100.0)]) │ │ - Key: window │ │ Value: JObject │ │ (map │ │ [("height", JNumber 500.0); ("name", JString "main_window"); │ │ ("title", JString "Sample Konfabulator Widget"); ("width", JNumber │ │ 500.0)]) │ │ IsJString: False │ │ IsJNumber: False │ │ IsJBool: False │ │ IsJNull: False │ │ IsJObject: True │ │ IsJArray: False │ │ IsJString: False │ │ IsJNumber: False │ │ IsJBool: False │ │ IsJNull: False │ │ IsJObject: True │ │ IsJArray: False │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── //// test let example3 = """{ "string": "Hello, \"World\"!", "escapedString": "This string contains \\/\\\\\\b\\f\\n\\r\\t\\\"\\'", "number": 42, "scientificNumber": 3.14e-10, "boolean": true, "nullValue": null, "array": [[1, 2, 3, 4, 5]], "unicodeString1": "프리마", "unicodeString2": "\u0048\u0065\u006C\u006C\u006F, \u0022\u0057\u006F\u0072\u006C\u0064\u0022!", "specialCharacters": "!@#$%^&*()", "emptyArray": [[]], "emptyObject": {}, "nestedArrays": [[[[1, 2, 3]], [[4, 5, 6]]]], "object": { "nestedString": "Nested Value", "nestedNumber": 3.14, "nestedBoolean": false, "nestedNull": null, "nestedArray": [["a", "b", "c"]], "nestedObject": { "nestedProperty": "Nested Object Value" } }, "nestedObjects": [[ {"name": "Alice", "age": 25}, {"name": "Bob", "age": 30} ]] }""" run jValue example3 |> parserEqual ( Success ( JObject ( Map.ofList [[ "string", JString @"Hello, ""World""!" "escapedString", JString @"This string contains \/\\\b\f\n\r\t\""\'" "number", JNumber 42.0 "scientificNumber", JNumber 3.14e-10 "boolean", JBool true "nullValue", JNull "array", JArray [[ JNumber 1.0; JNumber 2.0; JNumber 3.0; JNumber 4.0; JNumber 5.0 ]] "unicodeString1", JString "프리마" "unicodeString2", JString @"Hello, ""World""!" "specialCharacters", JString "!@#$%^&*()" "emptyArray", JArray [[]] "emptyObject", JObject Map.empty "nestedArrays", JArray [[ JArray [[ JNumber 1.0; JNumber 2.0; JNumber 3.0 ]] JArray [[ JNumber 4.0; JNumber 5.0; JNumber 6.0 ]] ]] "object", JObject ( Map.ofList [[ "nestedString", JString "Nested Value" "nestedNumber", JNumber 3.14 "nestedBoolean", JBool false "nestedNull", JNull "nestedArray", JArray [[JString "a"; JString "b"; JString "c"]] "nestedObject", JObject ( Map.ofList [[ "nestedProperty", JString "Nested Object Value" ]] ) ]] ) "nestedObjects", JArray [[ JObject (Map.ofList [[ "name", JString "Alice"; "age", JNumber 25.0 ]]) JObject (Map.ofList [[ "name", JString "Bob"; "age", JNumber 30.0 ]]) ]] ]] ) ) ) ╭─[ 328.80ms - return value ]──────────────────────────────────────────────────╮ │ <details open="open" class="dni-treeview"><summary><span │ │ class="dni-code-hint"><code>Success<br/> (JObject<br/> (map<br/> │ │ [("array",<br/> JArray<br/> [JNumber 1.0; │ │ JNumber 2.0; JNumber 3.0; JNumber 4.0; JNumber 5.0]);<br/> │ │ ("boolean", JBool true); ("emptyArray", JArray []);<br/> │ │ ("emptyObject", JObject (map []));<br/> │ │ ("escapedString", JString "This │ │ s...</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr>< │ │ td>Item</td><td><details class="dni-treeview"><summary><span │ │ class="dni-code-hint"><code>(JObject<br/> (map<br/> [ │ │ ("array",<br/> JArray [JNumber 1.0; JNumber 2.0; JNumber │ │ 3.0; JNumber 4.0; J... │ ╰──────────────────────────────────────────────────────────────────────────────╯ ╭─[ 331.43ms - stdout ]────────────────────────────────────────────────────────╮ │ JObject │ │ (map │ │ [("array", │ │ JArray [JNumber 1.0; JNumber 2.0; JNumber 3.0; JNumber 4.0; JNumber │ │ 5.0]); │ │ ("boolean", JBool true); ("emptyArray", JArray []); │ │ ("emptyObject", JObject (map [])); │ │ ("escapedString", JString "This string contains \/\\\b\f\n\r\t\"\'"); │ │ ("nestedArrays", │ │ JArray │ │ [JArray [JNumber 1.0; JNumber 2.0; JNumber 3.0]; │ │ JArray [JNumber 4.0; JNumber 5.0; JNumber 6.0]]); │ │ ("nestedObjects", │ │ JArray │ │ [JObject (map [("age", JNumber 25.0); ("name", JString "Alice")]); │ │ JObject (map [("age", JNumber 30.0); ("name", JString "Bob")])]); │ │ ("nullValue", JNull); ("number", JNumber 42.0); ...]) │ │ JObject │ │ Item: FSharpMap<String,JValue> │ │ - Key: array │ │ Value: JArray │ │ Item: FSharpList<JValue> │ │ - Item: 1 │ │ IsJString: False │ │ IsJNumber: True │ │ IsJBool: False │ │ IsJNull: False │ │ IsJObject: False │ │ IsJArray: False │ │ - Item: 2 │ │ IsJString: False │ │ IsJNumber: True │ │ IsJBool: False │ │ IsJNull: False │ │ IsJObject: False │ │ IsJArray: False │ │ - Item: 3 │ │ IsJString: False │ │ IsJNumber: True │ │ IsJBool: False │ │ IsJNull: False │ │ IsJObject: False │ │ IsJArray: False │ │ - Item: 4 │ │ IsJString: False │ │ IsJNumber: True │ │ IsJBool: False │ │ IsJNull: False │ │ IsJObject: False │ │ IsJArray: False │ │ - Item: 5 │ │ IsJString: False │ │ IsJNumber: True │ │ IsJBool: False │ │ IsJNull: False │ │ IsJObject: False │ │ IsJArray: False │ │ IsJString: False │ │ IsJNumber: False │ │ IsJBool: False │ │ IsJNull: False │ │ IsJObject: False │ │ IsJArray: True │ │ - Key: boolean │ │ Value: JBool │ │ Item: True │ │ IsJString: False │ │ IsJNumber: False │ │ IsJBool: True │ │ IsJNull: False │ │ IsJObject: False │ │ IsJArray: False │ │ - Key: emptyArray │ │ Value: JArray │ │ Item: FSharpList<JValue> │ │ │ │ IsJString: False │ │ IsJNumber: False │ │ IsJBool: False │ │ IsJNull: False │ │ IsJObject: False │ │ IsJArray: True │ │ - Key: emptyObject │ │ Value: JObject │ │ Item: FSharpMap<String,JValue> │ │ │ │ IsJString: False │ │ IsJNumber: False │ │ IsJBool: False │ │ IsJNull: False │ │ IsJObject: True │ │ IsJArray: False │ │ - Key: escapedString │ │ Value: JString │ │ Item: This string contains \/\\\b\f\n\r\t\"\' │ │ IsJString: True │ │ IsJNumber: False │ │ IsJBool: False │ │ IsJNull: False │ │ IsJObject: False │ │ IsJArray: False │ │ - Key: nestedArrays │ │ Value: JArray │ │ Item: FSharpList<JValue> │ │ - Item: [ JNumber 1.0, JNumber 2.0, JNumber 3.0 ] │ │ IsJString: False │ │ IsJNumber: False │ │ IsJBool: False │ │ IsJNull: False │ │ IsJObject: False │ │ IsJArray: True │ │ - Item: [ JNumber 4.0, JNumber 5.0, JNumber 6.0 ] │ │ IsJString: False │ │ IsJNumber: False │ │ IsJBool: False │ │ IsJNull: False │ │ IsJObject: False │ │ IsJArray: True │ │ IsJString: False │ │ IsJNumber: False │ │ IsJBool: False │ │ IsJNull: False │ │ IsJObject: False │ │ IsJArray: True │ │ - Key: nestedObjects │ │ Value: JArray │ │ Item: FSharpList<JValue> │ │ - Item: [ [age, JNumber 25.0], [name, JString "Alice"] ] │ │ IsJString: False │ │ IsJNumber: False │ │ IsJBool: False │ │ IsJNull: False │ │ IsJObject: True │ │ IsJArray: False │ │ - Item: [ [age, JNumber 30.0], [name, JString "Bob"] ] │ │ IsJString: False │ │ IsJNumber: False │ │ IsJBool: False │ │ IsJNull: False │ │ IsJObject: True │ │ IsJArray: False │ │ IsJString: False │ │ IsJNumber: False │ │ IsJBool: False │ │ IsJNull: False │ │ IsJObject: False │ │ IsJArray: True │ │ - Key: nullValue │ │ Value: JValue │ │ IsJString: False │ │ IsJNumber: False │ │ IsJBool: False │ │ IsJNull: True │ │ IsJObject: False │ │ IsJArray: False │ │ - Key: number │ │ Value: JNumber │ │ Item: 42 │ │ IsJString: False │ │ IsJNumber: True │ │ IsJBool: False │ │ IsJNull: False │ │ IsJObject: False │ │ IsJArray: False │ │ - Key: object │ │ Value: JObject │ │ Item: FSharpMap<String,JValue> │ │ - Key: nestedArray │ │ Value: JArray [JString "a"; JString "b"; JString "c"] │ │ - Key: nestedBoolean │ │ Value: JBool false │ │ - Key: nestedNull │ │ Value: JNull │ │ - Key: nestedNumber │ │ Value: JNumber 3.14 │ │ - Key: nestedObject │ │ Value: JObject (map [("nestedProperty", JString "Nested │ │ Object Value")]) │ │ - Key: nestedString │ │ Value: JString "Nested Value" │ │ IsJString: False │ │ IsJNumber: False │ │ IsJBool: False │ │ IsJNull: False │ │ IsJObject: True │ │ IsJArray: False │ │ - Key: scientificNumber │ │ Value: JNumber │ │ Item: 3.14E-10 │ │ IsJString: False │ │ IsJNumber: True │ │ IsJBool: False │ │ IsJNull: False │ │ IsJObject: False │ │ IsJArray: False │ │ - Key: specialCharacters │ │ Value: JString │ │ Item: !@#$%^&*() │ │ IsJString: True │ │ IsJNumber: False │ │ IsJBool: False │ │ IsJNull: False │ │ IsJObject: False │ │ IsJArray: False │ │ - Key: string │ │ Value: JString │ │ Item: Hello, "World"! │ │ IsJString: True │ │ IsJNumber: False │ │ IsJBool: False │ │ IsJNull: False │ │ IsJObject: False │ │ IsJArray: False │ │ - Key: unicodeString1 │ │ Value: JString │ │ Item: 프리마 │ │ IsJString: True │ │ IsJNumber: False │ │ IsJBool: False │ │ IsJNull: False │ │ IsJObject: False │ │ IsJArray: False │ │ - Key: unicodeString2 │ │ Value: JString │ │ Item: Hello, "World"! │ │ IsJString: True │ │ IsJNumber: False │ │ IsJBool: False │ │ IsJNull: False │ │ IsJObject: False │ │ IsJArray: False │ │ IsJString: False │ │ IsJNumber: False │ │ IsJBool: False │ │ IsJNull: False │ │ IsJObject: True │ │ IsJArray: False │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ [NbConvertApp] Converting notebook JsonParser.dib.ipynb to html /opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. validate(nb) /opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 return _pygments_highlight( [NbConvertApp] Writing 543702 bytes to JsonParser.dib.html ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ # Parser (Polyglot) │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── #!import ../../lib/fsharp/Notebooks.dib #!import ../../lib/fsharp/Testing.dib ── fsharp - import ───────────────────────────────────────────────────────────── #r "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Asp NetCore.Html.Abstractions.dll" #r "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot Net.Interactive.dll" #r "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot Net.Interactive.FSharp.dll" #r "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot Net.Interactive.Formatting.dll" open System open System.IO open System.Text open Microsoft.DotNet.Interactive.Formatting ── fsharp - import ───────────────────────────────────────────────────────────── #r "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot Net.Interactive.FSharp.dll" open Microsoft.DotNet.Interactive.FSharp.FSharpKernelHelpers #r "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot Net.Interactive.dll" open type Microsoft.DotNet.Interactive.Kernel ── fsharp - import ───────────────────────────────────────────────────────────── //// test Formatter.ListExpansionLimit <- 100 ── fsharp - import ───────────────────────────────────────────────────────────── #r @"../../../../../../../.nuget/packages/expecto/10.1.0/lib/net6.0/Expecto.dll" ── fsharp - import ───────────────────────────────────────────────────────────── //// test type AssertExceptionFormatter (ex) = member _.Text = ex.ToString() .Replace("32m", "<span style=\"color: green;\">") .Replace("36m", "</span>") .Replace("31m", "<span style=\"color: red;\">") .Replace("\n", "<br/>\n") Formatter.Register<AssertExceptionFormatter> ((fun (x : AssertExceptionFormatter) -> x.Text), "text/html") ── fsharp - import ───────────────────────────────────────────────────────────── //// test let inline __expect fn log expected actual = if log then printfn $"{actual.ToDisplayString ()}" try "Testing.__expect" |> fn actual expected with :? Expecto.AssertException as ex -> AssertExceptionFormatter(ex).Display () |> ignore failwith (ex.GetType().FullName) let inline __contains log expected actual = __expect Expecto.Expect.contains log expected actual let inline _contains expected actual = __contains true expected actual let inline __assert_eq log expected actual = __expect Expecto.Expect.equal log expected actual let inline _assert_eq expected actual = __assert_eq true expected actual let inline __isGreaterThan log expected actual = __expect Expecto.Expect.isGreaterThan log expected... ── fsharp - import ───────────────────────────────────────────────────────────── //// test let inline __isBetween log a b actual = let inline isBetween actual (a, b) _ = __isGreaterThanOrEqual log a actual __isLessThanOrEqual log b actual __expect isBetween log (a, b) actual let inline _isBetween a b actual = __isBetween true a b actual ── fsharp ────────────────────────────────────────────────────────────────────── #!import ../../lib/fsharp/Common.fs ── fsharp - import ───────────────────────────────────────────────────────────── #if !INTERACTIVE namespace Polyglot #endif module Common = let nl = System.Environment.NewLine let q = @"""" let inline cons head tail = head :: tail module String = let inline contains (value : string) (input : string) = input.Contains value let inline endsWith (value : string) (input : string) = input.EndsWith value let inline padLeft totalWidth paddingChar (input : string) = input.PadLeft (totalWidth, paddingChar) let inline replace (oldValue : string) (newValue : string) (input : string) = input.Replace (oldValue, newValue) let inline split separator (input : string) = input.Split separator let inline spli... ── fsharp ────────────────────────────────────────────────────────────────────── open Common ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ### TextInput │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── type Position = { line : int column : int } ── fsharp ────────────────────────────────────────────────────────────────────── let initialPos = { line = 0; column = 0 } ── fsharp ────────────────────────────────────────────────────────────────────── let inline incrCol (pos : Position) = { pos with column = pos.column + 1 } ── fsharp ────────────────────────────────────────────────────────────────────── let inline incrLine pos = { line = pos.line + 1; column = 0 } ── fsharp ────────────────────────────────────────────────────────────────────── type InputState = { lines : string[[]] position : Position } ── fsharp ────────────────────────────────────────────────────────────────────── let inline fromStr str = { lines = if str |> String.IsNullOrEmpty then [[||]] else str |> String.splitString [[| "\r\n"; "\n" |]] position = initialPos } ── fsharp ────────────────────────────────────────────────────────────────────── //// test fromStr "" |> _assert_eq { lines = [[||]] position = { line = 0; column = 0 } } ╭─[ 33.92ms - stdout ]─────────────────────────────────────────────────────────╮ │ InputState │ │ lines: [ ] │ │ position: Position │ │ line: 0 │ │ column: 0 │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── //// test fromStr "Hello \n World" |> _assert_eq { lines = [[| "Hello "; " World" |]] position = { line = 0; column = 0 } } ╭─[ 10.79ms - stdout ]─────────────────────────────────────────────────────────╮ │ InputState │ │ lines: [ Hello , World ] │ │ position: Position │ │ line: 0 │ │ column: 0 │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let inline currentLine inputState = let linePos = inputState.position.line if linePos < inputState.lines.Length then inputState.lines.[[linePos]] else "end of file" ── fsharp ────────────────────────────────────────────────────────────────────── let inline nextChar input = let linePos = input.position.line let colPos = input.position.column if linePos >= input.lines.Length then input, None else let currentLine = currentLine input if colPos < currentLine.Length then let char = currentLine.[[colPos]] let newPos = incrCol input.position let newState = { input with position = newPos } newState, Some char else let char = '\n' let newPos = incrLine input.position let newState = { input with position = newPos } newState, Some char ── fsharp ────────────────────────────────────────────────────────────────────── //// test let newInput, charOpt = fromStr "Hello World" |> nextChar newInput |> _assert_eq { lines = [[| "Hello World" |]] position = { line = 0; column = 1 } } charOpt |> _assert_eq (Some 'H') ╭─[ 25.55ms - stdout ]─────────────────────────────────────────────────────────╮ │ InputState │ │ lines: [ Hello World ] │ │ position: Position │ │ line: 0 │ │ column: 1 │ │ FSharpOption<Char> │ │ Value: H │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── //// test let newInput, charOpt = fromStr "Hello\n\nWorld" |> nextChar newInput |> _assert_eq { lines = [[| "Hello"; ""; "World" |]] position = { line = 0; column = 1 } } charOpt |> _assert_eq (Some 'H') ╭─[ 18.72ms - stdout ]─────────────────────────────────────────────────────────╮ │ InputState │ │ lines: [ Hello, , World ] │ │ position: Position │ │ line: 0 │ │ column: 1 │ │ FSharpOption<Char> │ │ Value: H │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ### Parser │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── type Input = InputState type ParserLabel = string type ParserError = string type ParserPosition = { currentLine : string line : int column : int } type ParseResult<'a> = | Success of 'a | Failure of ParserLabel * ParserError * ParserPosition type Parser<'a> = { label : ParserLabel parseFn : Input -> ParseResult<'a * Input> } ── fsharp ────────────────────────────────────────────────────────────────────── let inline printResult result = match result with | Success (value, input) -> printfn $"%A{value}" | Failure (label, error, parserPos) -> let errorLine = parserPos.currentLine let colPos = parserPos.column let linePos = parserPos.line let failureCaret = $"{' ' |> string |> String.replicate colPos}^{error}" printfn $"Line:%i{linePos} Col:%i{colPos} Error parsing %s{label}\n%s{errorLine}\n%s{failureCaret}" ── fsharp ────────────────────────────────────────────────────────────────────── let inline runOnInput parser input = parser.parseFn input ── fsharp ────────────────────────────────────────────────────────────────────── let inline run parser inputStr = runOnInput parser (fromStr inputStr) ── fsharp ────────────────────────────────────────────────────────────────────── let inline parserPositionFromInputState (inputState : Input) = { currentLine = currentLine inputState line = inputState.position.line column = inputState.position.column } ── fsharp ────────────────────────────────────────────────────────────────────── let inline getLabel parser = parser.label ── fsharp ────────────────────────────────────────────────────────────────────── let inline setLabel parser newLabel = { label = newLabel parseFn = fun input -> match parser.parseFn input with | Success s -> Success s | Failure (oldLabel, err, pos) -> Failure (newLabel, err, pos) } ── fsharp ────────────────────────────────────────────────────────────────────── let (<?>) = setLabel ── fsharp ────────────────────────────────────────────────────────────────────── let inline satisfy predicate label = { label = label parseFn = fun input -> let remainingInput, charOpt = nextChar input match charOpt with | None -> let err = "No more input" let pos = parserPositionFromInputState input Failure (label, err, pos) | Some first -> if predicate first then Success (first, remainingInput) else let err = $"Unexpected '%c{first}'" let pos = parserPositionFromInputState input Failure (label, err, pos) } ── fsharp ────────────────────────────────────────────────────────────────────── //// test let input = fromStr "Hello" let parser = satisfy (fun c -> c = 'H') "H" runOnInput parser input |> _assert_eq ( Success ( 'H', { lines = [[| "Hello" |]] position = { line = 0; column = 1 } } ) ) ╭─[ 23.05ms - stdout ]─────────────────────────────────────────────────────────╮ │ Success │ │ Item: - H │ │ - InputState │ │ lines: [ Hello ] │ │ position: Position │ │ line: 0 │ │ column: 1 │ │ - IsSuccess: True │ │ IsFailure: False │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── //// test let input = fromStr "World" let parser = satisfy (fun c -> c = 'H') "H" runOnInput parser input |> _assert_eq ( Failure ( "H", "Unexpected 'W'", { currentLine = "World" line = 0 column = 0 } ) ) ╭─[ 20.00ms - stdout ]─────────────────────────────────────────────────────────╮ │ Failure │ │ Item1: H │ │ Item2: Unexpected 'W' │ │ Item3: ParserPosition │ │ currentLine: World │ │ line: 0 │ │ column: 0 │ │ IsSuccess: False │ │ IsFailure: True │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let inline bindP f p = { label = "unknown" parseFn = fun input -> match runOnInput p input with | Failure (label, err, pos) -> Failure (label, err, pos) | Success (value1, remainingInput) -> runOnInput (f value1) remainingInput } ── fsharp ────────────────────────────────────────────────────────────────────── let inline (>>=) p f = bindP f p ── fsharp ────────────────────────────────────────────────────────────────────── //// test let input = fromStr "Hello" let parser = satisfy (fun c -> c = 'H') "H" let parser2 = parser >>= fun c -> satisfy (fun c -> c = 'e') "e" runOnInput parser2 input |> _assert_eq ( Success ( 'e', { lines = [[| "Hello" |]] position = { line = 0; column = 2 } } ) ) ╭─[ 26.44ms - stdout ]─────────────────────────────────────────────────────────╮ │ Success │ │ Item: - e │ │ - InputState │ │ lines: [ Hello ] │ │ position: Position │ │ line: 0 │ │ column: 2 │ │ - IsSuccess: True │ │ IsFailure: False │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── //// test let input = fromStr "World" let parser = satisfy (fun c -> c = 'W') "W" let parser2 = parser >>= fun c -> satisfy (fun c -> c = 'e') "e" runOnInput parser2 input |> _assert_eq ( Failure ( "e", "Unexpected 'o'", { currentLine = "World" line = 0 column = 1 } ) ) ╭─[ 26.01ms - stdout ]─────────────────────────────────────────────────────────╮ │ Failure │ │ Item1: e │ │ Item2: Unexpected 'o' │ │ Item3: ParserPosition │ │ currentLine: World │ │ line: 0 │ │ column: 1 │ │ IsSuccess: False │ │ IsFailure: True │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let inline returnP x = { label = $"%A{x}" parseFn = fun input -> Success (x, input) } ── fsharp ────────────────────────────────────────────────────────────────────── //// test let input = fromStr "Hello" let parser = returnP "Hello" runOnInput parser input |> _assert_eq ( Success ( "Hello", { lines = [[| "Hello" |]] position = { line = 0; column = 0 } } ) ) ╭─[ 22.10ms - stdout ]─────────────────────────────────────────────────────────╮ │ Success │ │ Item: - Hello │ │ - InputState │ │ lines: [ Hello ] │ │ position: Position │ │ line: 0 │ │ column: 0 │ │ - IsSuccess: True │ │ IsFailure: False │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let inline mapP f = bindP (f >> returnP) ── fsharp ────────────────────────────────────────────────────────────────────── let (<!>) = mapP ── fsharp ────────────────────────────────────────────────────────────────────── let inline (|>>) x f = f <!> x ── fsharp ────────────────────────────────────────────────────────────────────── //// test let input = fromStr "Hello" let parser = satisfy (fun c -> c = 'H') "H" let parser2 = parser |>> string runOnInput parser2 input |> _assert_eq ( Success ( "H", { lines = [[| "Hello" |]] position = { line = 0; column = 1 } } ) ) ╭─[ 21.58ms - stdout ]─────────────────────────────────────────────────────────╮ │ Success │ │ Item: - H │ │ - InputState │ │ lines: [ Hello ] │ │ position: Position │ │ line: 0 │ │ column: 1 │ │ - IsSuccess: True │ │ IsFailure: False │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let inline applyP fP xP = fP >>= fun f -> xP >>= fun x -> returnP (f x) ── fsharp ────────────────────────────────────────────────────────────────────── let (<*>) = applyP ── fsharp ────────────────────────────────────────────────────────────────────── let inline lift2 f xP yP = returnP f <*> xP <*> yP ── fsharp ────────────────────────────────────────────────────────────────────── //// test let input = fromStr "Hello" let parser = satisfy (fun c -> c = 'H') "H" let parser2 = satisfy (fun c -> c = 'e') "e" let parser3 = lift2 (fun c1 c2 -> string c1 + string c2) parser parser2 runOnInput parser3 input |> _assert_eq ( Success ( "He", { lines = [[| "Hello" |]] position = { line = 0; column = 2 } } ) ) ╭─[ 70.95ms - stdout ]─────────────────────────────────────────────────────────╮ │ Success │ │ Item: - He │ │ - InputState │ │ lines: [ Hello ] │ │ position: Position │ │ line: 0 │ │ column: 2 │ │ - IsSuccess: True │ │ IsFailure: False │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let inline andThen p1 p2 = p1 >>= fun p1Result -> p2 >>= fun p2Result -> returnP (p1Result, p2Result) <?> $"{getLabel p1} andThen {getLabel p2}" ── fsharp ────────────────────────────────────────────────────────────────────── let (.>>.) = andThen ── fsharp ────────────────────────────────────────────────────────────────────── //// test let input = fromStr "Hello" let parser = satisfy (fun c -> c = 'H') "H" let parser2 = satisfy (fun c -> c = 'e') "e" let parser3 = parser .>>. parser2 runOnInput parser3 input |> _assert_eq ( Success ( ('H', 'e'), { lines = [[| "Hello" |]] position = { line = 0; column = 2 } } ) ) ╭─[ 43.81ms - stdout ]─────────────────────────────────────────────────────────╮ │ Success │ │ Item: - ( H, e ) │ │ - InputState │ │ lines: [ Hello ] │ │ position: Position │ │ line: 0 │ │ column: 2 │ │ - IsSuccess: True │ │ IsFailure: False │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let inline orElse p1 p2 = { label = $"{getLabel p1} orElse {getLabel p2}" parseFn = fun input -> match runOnInput p1 input with | Success _ as result -> result | Failure _ -> runOnInput p2 input } ── fsharp ────────────────────────────────────────────────────────────────────── let (<|>) = orElse ── fsharp ────────────────────────────────────────────────────────────────────── //// test let input = fromStr "hello" let parser = satisfy (fun c -> c = 'H') "H" let parser2 = satisfy (fun c -> c = 'h') "h" let parser3 = parser <|> parser2 runOnInput parser3 input |> _assert_eq ( Success ( 'h', { lines = [[| "hello" |]] position = { line = 0; column = 1 } } ) ) ╭─[ 24.17ms - stdout ]─────────────────────────────────────────────────────────╮ │ Success │ │ Item: - h │ │ - InputState │ │ lines: [ hello ] │ │ position: Position │ │ line: 0 │ │ column: 1 │ │ - IsSuccess: True │ │ IsFailure: False │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let inline choice listOfParsers = listOfParsers |> List.reduce (<|>) ── fsharp ────────────────────────────────────────────────────────────────────── //// test let input = fromStr "hello" let parser = satisfy (fun c -> c = 'H') "H" let parser2 = satisfy (fun c -> c = 'h') "h" let parser3 = choice [[ parser; parser2 ]] runOnInput parser3 input |> _assert_eq ( Success ( 'h', { lines = [[| "hello" |]] position = { line = 0; column = 1 } } ) ) ╭─[ 24.19ms - stdout ]─────────────────────────────────────────────────────────╮ │ Success │ │ Item: - h │ │ - InputState │ │ lines: [ hello ] │ │ position: Position │ │ line: 0 │ │ column: 1 │ │ - IsSuccess: True │ │ IsFailure: False │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let rec sequence parserList = match parserList with | [[]] -> returnP [[]] | head :: tail -> (lift2 cons) head (sequence tail) ── fsharp ────────────────────────────────────────────────────────────────────── //// test let input = fromStr "Hello" let parser = satisfy (fun c -> c = 'H') "H" let parser2 = satisfy (fun c -> c = 'e') "e" let parser3 = sequence [[ parser; parser2 ]] runOnInput parser3 input |> _assert_eq ( Success ( [[ 'H'; 'e' ]], { lines = [[| "Hello" |]] position = { line = 0; column = 2 } } ) ) ╭─[ 39.25ms - stdout ]─────────────────────────────────────────────────────────╮ │ Success │ │ Item: - [ H, e ] │ │ - InputState │ │ lines: [ Hello ] │ │ position: Position │ │ line: 0 │ │ column: 2 │ │ - IsSuccess: True │ │ IsFailure: False │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let rec parseZeroOrMore parser input = match runOnInput parser input with | Failure (_, _, _) -> [[]], input | Success (firstValue, inputAfterFirstParse) -> let subsequentValues, remainingInput = parseZeroOrMore parser inputAfterFirstParse firstValue :: subsequentValues, remainingInput ── fsharp ────────────────────────────────────────────────────────────────────── let inline many parser = { label = $"many {getLabel parser}" parseFn = fun input -> Success (parseZeroOrMore parser input) } ── fsharp ────────────────────────────────────────────────────────────────────── //// test let input = fromStr "hello" let parser = satisfy (fun c -> c = 'H') "H" let parser2 = many parser runOnInput parser2 input |> _assert_eq ( Success ( [[]], { lines = [[| "hello" |]] position = { line = 0; column = 0 } } ) ) ╭─[ 20.26ms - stdout ]─────────────────────────────────────────────────────────╮ │ Success │ │ Item: - [ ] │ │ - InputState │ │ lines: [ hello ] │ │ position: Position │ │ line: 0 │ │ column: 0 │ │ - IsSuccess: True │ │ IsFailure: False │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let inline many1 p = p >>= fun head -> many p >>= fun tail -> returnP (head :: tail) <?> $"many1 {getLabel p}" ── fsharp ────────────────────────────────────────────────────────────────────── //// test let input = fromStr "hello" let parser = satisfy (fun c -> c = 'H') "H" let parser2 = many1 parser runOnInput parser2 input |> _assert_eq ( Failure ( "many1 H", "Unexpected 'h'", { currentLine = "hello" line = 0 column = 0 } ) ) ╭─[ 29.61ms - stdout ]─────────────────────────────────────────────────────────╮ │ Failure │ │ Item1: many1 H │ │ Item2: Unexpected 'h' │ │ Item3: ParserPosition │ │ currentLine: hello │ │ line: 0 │ │ column: 0 │ │ IsSuccess: False │ │ IsFailure: True │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let inline opt p = let some = p |>> Some let none = returnP None (some <|> none) <?> $"opt {getLabel p}" ── fsharp ────────────────────────────────────────────────────────────────────── //// test let input = fromStr "hello" let parser = satisfy (fun c -> c = 'H') "H" let parser2 = opt parser runOnInput parser2 input |> _assert_eq ( Success ( None, { lines = [[| "hello" |]] position = { line = 0; column = 0 } } ) ) ╭─[ 28.01ms - stdout ]─────────────────────────────────────────────────────────╮ │ Success │ │ Item: - <null> │ │ - InputState │ │ lines: [ hello ] │ │ position: Position │ │ line: 0 │ │ column: 0 │ │ - IsSuccess: True │ │ IsFailure: False │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let inline (.>>) p1 p2 = p1 .>>. p2 |> mapP fst ── fsharp ────────────────────────────────────────────────────────────────────── let inline (>>.) p1 p2 = p1 .>>. p2 |> mapP snd ── fsharp ────────────────────────────────────────────────────────────────────── let inline between p1 p2 p3 = p1 >>. p2 .>> p3 ── fsharp ────────────────────────────────────────────────────────────────────── //// test let input = fromStr "[[Hello]]" let parser = between (satisfy (fun c -> c = '[[') "[[") (many (satisfy (fun c -> [[ 'a' .. 'z' ]] @ [[ 'A' .. 'Z' ]] |> List.contains c) "letter")) (satisfy (fun c -> c = ']]') "]]") runOnInput parser input |> _assert_eq ( Success ( [[ 'H'; 'e'; 'l'; 'l'; 'o' ]], { lines = [[| "[[Hello]]" |]] position = { line = 0; column = 7 } } ) ) ╭─[ 82.20ms - stdout ]─────────────────────────────────────────────────────────╮ │ Success │ │ Item: - [ H, e, l, l, o ] │ │ - InputState │ │ lines: [ [Hello] ] │ │ position: Position │ │ line: 0 │ │ column: 7 │ │ - IsSuccess: True │ │ IsFailure: False │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let inline sepBy1 p sep = let sepThenP = sep >>. p p .>>. many sepThenP |>> fun (p, pList) -> p :: pList ── fsharp ────────────────────────────────────────────────────────────────────── let inline sepBy p sep = sepBy1 p sep <|> returnP [[]] ── fsharp ────────────────────────────────────────────────────────────────────── //// test let input = fromStr "Hello,World" let parser = sepBy (many (satisfy (fun c -> c <> ',') "not comma")) (satisfy (fun c -> c = ',') "comma") runOnInput parser input |> _assert_eq ( Success ( [[ [[ 'H'; 'e'; 'l'; 'l'; 'o' ]]; [[ 'W'; 'o'; 'r'; 'l'; 'd'; '\n' ]] ]], { lines = [[| "Hello,World" |]] position = { line = 1; column = 0 } } ) ) ╭─[ 58.31ms - stdout ]─────────────────────────────────────────────────────────╮ │ Success │ │ Item: - FSharpList<FSharpList<Char>> │ │ [ H, e, l, l, o ] │ │ [ W, o, r, l, d, │ │ ] │ │ - InputState │ │ lines: [ Hello,World ] │ │ position: Position │ │ line: 1 │ │ column: 0 │ │ - IsSuccess: True │ │ IsFailure: False │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let inline pchar charToMatch = satisfy ((=) charToMatch) $"%c{charToMatch}" ── fsharp ────────────────────────────────────────────────────────────────────── let inline anyOf listOfChars = listOfChars |> List.map pchar |> choice <?> $"anyOf %A{listOfChars}" ── fsharp ────────────────────────────────────────────────────────────────────── //// test let input = fromStr "Hello" let parser = anyOf [[ 'H'; 'e'; 'l'; 'o' ]] |> many runOnInput parser input |> _assert_eq ( Success ( [[ 'H'; 'e'; 'l'; 'l'; 'o' ]], { lines = [[| "Hello" |]] position = { line = 0; column = 5 } } ) ) ╭─[ 27.86ms - stdout ]─────────────────────────────────────────────────────────╮ │ Success │ │ Item: - [ H, e, l, l, o ] │ │ - InputState │ │ lines: [ Hello ] │ │ position: Position │ │ line: 0 │ │ column: 5 │ │ - IsSuccess: True │ │ IsFailure: False │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let inline charListToStr charList = charList |> List.toArray |> String ── fsharp ────────────────────────────────────────────────────────────────────── let inline manyChars cp = many cp |>> charListToStr ── fsharp ────────────────────────────────────────────────────────────────────── let inline manyChars1 cp = many1 cp |>> charListToStr ── fsharp ────────────────────────────────────────────────────────────────────── //// test let input = fromStr "Hello" let parser = manyChars1 (anyOf [[ 'H'; 'e'; 'l'; 'o' ]]) runOnInput parser input |> _assert_eq ( Success ( "Hello", { lines = [[| "Hello" |]] position = { line = 0; column = 5 } } ) ) ╭─[ 35.00ms - stdout ]─────────────────────────────────────────────────────────╮ │ Success │ │ Item: - Hello │ │ - InputState │ │ lines: [ Hello ] │ │ position: Position │ │ line: 0 │ │ column: 5 │ │ - IsSuccess: True │ │ IsFailure: False │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let inline pstring str = str |> List.ofSeq |> List.map pchar |> sequence |> mapP charListToStr <?> str ── fsharp ────────────────────────────────────────────────────────────────────── //// test let input = fromStr "Hello" let parser = pstring "Hello" runOnInput parser input |> _assert_eq ( Success ( "Hello", { lines = [[| "Hello" |]] position = { line = 0; column = 5 } } ) ) ╭─[ 29.34ms - stdout ]─────────────────────────────────────────────────────────╮ │ Success │ │ Item: - Hello │ │ - InputState │ │ lines: [ Hello ] │ │ position: Position │ │ line: 0 │ │ column: 5 │ │ - IsSuccess: True │ │ IsFailure: False │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let whitespaceChar = satisfy Char.IsWhiteSpace "whitespace" ── fsharp ────────────────────────────────────────────────────────────────────── let spaces = many whitespaceChar ── fsharp ────────────────────────────────────────────────────────────────────── let spaces1 = many1 whitespaceChar ── fsharp ────────────────────────────────────────────────────────────────────── //// test let input = fromStr " Hello" let parser = spaces1 .>>. pstring "Hello" runOnInput parser input |> _assert_eq ( Success ( ([[ ' '; ' ' ]], "Hello"), { lines = [[| " Hello" |]] position = { line = 0; column = 7 } } ) ) ╭─[ 35.94ms - stdout ]─────────────────────────────────────────────────────────╮ │ Success │ │ Item: - - [ , ] │ │ - Hello │ │ - InputState │ │ lines: [ Hello ] │ │ position: Position │ │ line: 0 │ │ column: 7 │ │ - IsSuccess: True │ │ IsFailure: False │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let digitChar = satisfy Char.IsDigit "digit" ── fsharp ────────────────────────────────────────────────────────────────────── //// test let input = fromStr "Hello" let parser = digitChar runOnInput parser input |> _assert_eq ( Failure ( "digit", "Unexpected 'H'", { currentLine = "Hello" line = 0 column = 0 } ) ) ╭─[ 11.92ms - stdout ]─────────────────────────────────────────────────────────╮ │ Failure │ │ Item1: digit │ │ Item2: Unexpected 'H' │ │ Item3: ParserPosition │ │ currentLine: Hello │ │ line: 0 │ │ column: 0 │ │ IsSuccess: False │ │ IsFailure: True │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let pint = let inline resultToInt (sign, digits) = let i = int digits match sign with | Some ch -> -i | None -> i let digits = manyChars1 digitChar opt (pchar '-') .>>. digits |> mapP resultToInt <?> "integer" ── fsharp ────────────────────────────────────────────────────────────────────── //// test run pint "-123" |> _assert_eq ( Success ( -123, { lines = [[| "-123" |]] position = { line = 0; column = 4 } } ) ) ╭─[ 21.18ms - stdout ]─────────────────────────────────────────────────────────╮ │ Success │ │ Item: - -123 │ │ - InputState │ │ lines: [ -123 ] │ │ position: Position │ │ line: 0 │ │ column: 4 │ │ - IsSuccess: True │ │ IsFailure: False │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let pfloat = let inline resultToFloat (((sign, digits1), point), digits2) = let fl = float $"{digits1}.{digits2}" match sign with | Some ch -> -fl | None -> fl let digits = manyChars1 digitChar opt (pchar '-') .>>. digits .>>. pchar '.' .>>. digits |> mapP resultToFloat <?> "float" ── fsharp ────────────────────────────────────────────────────────────────────── //// test run pfloat "-123.45" |> _assert_eq ( Success ( -123.45, { lines = [[| "-123.45" |]] position = { line = 0; column = 7 } } ) ) ╭─[ 26.57ms - stdout ]─────────────────────────────────────────────────────────╮ │ Success │ │ Item: - -123.45 │ │ - InputState │ │ lines: [ -123.45 ] │ │ position: Position │ │ line: 0 │ │ column: 7 │ │ - IsSuccess: True │ │ IsFailure: False │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let inline createParserForwardedToRef<'a> () = let mutable parserRef : Parser<'a> = { label = "unknown" parseFn = fun _ -> failwith "unfixed forwarded parser" } let wrapperParser = { parserRef with parseFn = fun input -> runOnInput parserRef input } wrapperParser, (fun v -> parserRef <- v) ── fsharp ────────────────────────────────────────────────────────────────────── let inline (>>%) p x = p |>> fun _ -> x [NbConvertApp] Converting notebook Parser.dib.ipynb to html /opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. validate(nb) /opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 return _pygments_highlight( [NbConvertApp] Writing 414978 bytes to Parser.dib.html 00:00:00 #1 [Debug] writeDibCode / output: Fs / path: Parser.dib 00:00:00 #1 [Debug] writeDibCode / output: Fs / path: JsonParser.dib 00:00:00 #3 [Debug] parseDibCode / output: Fs / file: Parser.dib 00:00:00 #3 [Debug] parseDibCode / output: Fs / file: JsonParser.dib
In [ ]:
{ . "$ScriptDir/../lib/fsharp/build.ps1" } | Invoke-Block
── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ # Async (Polyglot) │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── #!import ../../lib/fsharp/Notebooks.dib #!import ../../lib/fsharp/Testing.dib ── fsharp - import ───────────────────────────────────────────────────────────── #r "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Asp NetCore.Html.Abstractions.dll" #r "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot Net.Interactive.dll" #r "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot Net.Interactive.FSharp.dll" #r "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot Net.Interactive.Formatting.dll" open System open System.IO open System.Text open Microsoft.DotNet.Interactive.Formatting ── fsharp - import ───────────────────────────────────────────────────────────── #r "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot Net.Interactive.FSharp.dll" open Microsoft.DotNet.Interactive.FSharp.FSharpKernelHelpers #r "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot Net.Interactive.dll" open type Microsoft.DotNet.Interactive.Kernel ── fsharp - import ───────────────────────────────────────────────────────────── //// test Formatter.ListExpansionLimit <- 100 ── fsharp - import ───────────────────────────────────────────────────────────── #r @"../../../../../../../.nuget/packages/expecto/10.1.0/lib/net6.0/Expecto.dll" ── fsharp - import ───────────────────────────────────────────────────────────── //// test type AssertExceptionFormatter (ex) = member _.Text = ex.ToString() .Replace("32m", "<span style=\"color: green;\">") .Replace("36m", "</span>") .Replace("31m", "<span style=\"color: red;\">") .Replace("\n", "<br/>\n") Formatter.Register<AssertExceptionFormatter> ((fun (x : AssertExceptionFormatter) -> x.Text), "text/html") ── fsharp - import ───────────────────────────────────────────────────────────── //// test let inline __expect fn log expected actual = if log then printfn $"{actual.ToDisplayString ()}" try "Testing.__expect" |> fn actual expected with :? Expecto.AssertException as ex -> AssertExceptionFormatter(ex).Display () |> ignore failwith (ex.GetType().FullName) let inline __contains log expected actual = __expect Expecto.Expect.contains log expected actual let inline _contains expected actual = __contains true expected actual let inline __assert_eq log expected actual = __expect Expecto.Expect.equal log expected actual let inline _assert_eq expected actual = __assert_eq true expected actual let inline __isGreaterThan log expected actual = __expect Expecto.Expect.isGreaterThan log expected... ── fsharp - import ───────────────────────────────────────────────────────────── //// test let inline __isBetween log a b actual = let inline isBetween actual (a, b) _ = __isGreaterThanOrEqual log a actual __isLessThanOrEqual log b actual __expect isBetween log (a, b) actual let inline _isBetween a b actual = __isBetween true a b actual ── fsharp ────────────────────────────────────────────────────────────────────── #!import ../../lib/fsharp/Common.fs ── fsharp - import ───────────────────────────────────────────────────────────── #if !INTERACTIVE namespace Polyglot #endif module Common = let nl = System.Environment.NewLine let q = @"""" let inline cons head tail = head :: tail module String = let inline contains (value : string) (input : string) = input.Contains value let inline endsWith (value : string) (input : string) = input.EndsWith value let inline padLeft totalWidth paddingChar (input : string) = input.PadLeft (totalWidth, paddingChar) let inline replace (oldValue : string) (newValue : string) (input : string) = input.Replace (oldValue, newValue) let inline split separator (input : string) = input.Split separator let inline spli... ── fsharp ────────────────────────────────────────────────────────────────────── open Common ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## choice │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let inline choice asyncs = async { let e = Event<_> () use cts = new System.Threading.CancellationTokenSource () let fn = asyncs |> Seq.map (fun a -> async { let! x = a e.Trigger x }) |> Async.Parallel |> Async.Ignore Async.Start (fn, cts.Token) let! result = Async.AwaitEvent e.Publish cts.Cancel () return result } ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## map │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let inline map fn a = async { let! x = a return fn x } ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## catch │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let inline catch a = a |> Async.Catch |> map (function | Choice1Of2 result -> Ok result | Choice2Of2 ex -> Error ex ) ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## runWithTimeoutAsync │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let inline runWithTimeoutAsync (timeout : int) fn = let getLocals () = $"timeout: {timeout} / {getLocals ()}" let timeoutTask = async { do! Async.Sleep timeout trace Debug (fun () -> "runWithTimeoutAsync") getLocals return None } let task = async { try let! result = fn return Some result with | :? System.AggregateException as ex when ex.InnerExceptions |> Seq.exists (function :? System.Threading.Tasks.TaskCanceledException -> true | _ -> false) -> let getLocals () = $"ex: {ex |> printException} / {getLocals ()}" trace Warning (fun () -> "runWithTimeoutAsync") getLocals return None | ex -> trace Critical (fun () -> $"runWithTimeoutAsync** / ex: {ex |> printException}") getLocals return None } [[ timeoutTask; task ]] |> choice ── fsharp ────────────────────────────────────────────────────────────────────── let inline runWithTimeout timeout fn = fn |> runWithTimeoutAsync timeout |> Async.RunSynchronously ── fsharp ────────────────────────────────────────────────────────────────────── //// test Async.Sleep 60 |> runWithTimeout 10 |> _assert_eq None ╭─[ 105.87ms - stdout ]────────────────────────────────────────────────────────╮ │ 00:00:00 #1 [Debug] runWithTimeoutAsync / timeout: 10 │ │ <null> │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── //// test Async.Sleep 10 |> runWithTimeout 60 |> _assert_eq (Some ()) ╭─[ 73.00ms - stdout ]─────────────────────────────────────────────────────────╮ │ FSharpOption<Unit> │ │ Value: <null> │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── //// test async { raise (exn "error") } |> runWithTimeout 60 |> _assert_eq None ╭─[ 67.94ms - stdout ]─────────────────────────────────────────────────────────╮ │ 00:00:00 #2 [Critical] runWithTimeoutAsync** / ex: System.Exception: error / │ │ timeout: 60 │ │ <null> │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## runWithTimeoutChildAsync │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let inline runWithTimeoutChildAsync (timeout : int) fn = async { let getLocals () = $"timeout: {timeout} / {getLocals ()}" let! child = Async.StartChild (fn, timeout) return! child |> catch |> map (function | Ok result -> Some result | Error (:? System.TimeoutException as ex) -> trace Debug (fun () -> $"runWithTimeoutChildAsync") getLocals None | Error ex -> trace Critical (fun () -> $"runWithTimeoutChildAsync** / ex: {ex |> printException}") getLocals None ) } ── fsharp ────────────────────────────────────────────────────────────────────── let inline runWithTimeoutChild timeout fn = fn |> runWithTimeoutChildAsync timeout |> Async.RunSynchronously ── fsharp ────────────────────────────────────────────────────────────────────── //// test Async.Sleep 60 |> runWithTimeoutChild 10 |> _assert_eq None ╭─[ 63.31ms - stdout ]─────────────────────────────────────────────────────────╮ │ 00:00:00 #3 [Debug] runWithTimeoutChildAsync / timeout: 10 │ │ <null> │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── //// test Async.Sleep 10 |> runWithTimeoutChild 60 |> _assert_eq (Some ()) ╭─[ 50.99ms - stdout ]─────────────────────────────────────────────────────────╮ │ FSharpOption<Unit> │ │ Value: <null> │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── //// test async { raise (exn "error") } |> runWithTimeoutChild 60 |> _assert_eq None ╭─[ 79.67ms - stdout ]─────────────────────────────────────────────────────────╮ │ 00:00:00 #4 [Critical] runWithTimeoutChildAsync** / ex: System.Exception: │ │ error / timeout: 60 │ │ <null> │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## runWithTimeoutStrict │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let inline runWithTimeoutStrict (timeout : int) fn = let getLocals () = $"timeout: {timeout} / {getLocals ()}" let timeoutTask = async { do! Async.Sleep timeout return None, getLocals } let task = async { try return Async.RunSynchronously (fn, timeout) |> Some, getLocals with | :? System.TimeoutException as ex -> let getLocals () = $"ex: {ex |> printException} / {getLocals ()}" return None, getLocals | ex -> trace Critical (fun () -> $"runWithTimeoutStrict / ex: {ex |> printException}") getLocals return raise ex } try [[| timeoutTask; task |]] |> Array.map Async.StartAsTask |> System.Threading.Tasks.Task.WhenAny |> fun task -> match task.Result.Result with | None, getLocals -> trace Debug (fun () -> "runWithTimeoutStrict") getLocals None | result, _ -> result with | :? System.AggregateException as ex when ex.InnerExceptions |> Seq.exists (function :? System.Threading.Tasks.TaskCanceledException -> true | _ -> false) -> let getLocals () = $"ex: {ex |> printException} / {getLocals ()}" trace Warning (fun () -> "runWithTimeoutStrict") getLocals None | ex -> let getLocals () = $"ex: {ex |> printException} / {getLocals ()}" trace Critical (fun () -> "runWithTimeoutStrict**") getLocals None ── fsharp ────────────────────────────────────────────────────────────────────── //// test Async.Sleep 60 |> runWithTimeoutStrict 10 |> _assert_eq None ╭─[ 71.46ms - stdout ]─────────────────────────────────────────────────────────╮ │ 00:00:00 #5 [Debug] runWithTimeoutStrict / ex: System.TimeoutException: The │ │ operation has timed out. / timeout: 10 │ │ <null> │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── //// test Async.Sleep 10 |> runWithTimeoutStrict 60 |> _assert_eq (Some ()) ╭─[ 66.20ms - stdout ]─────────────────────────────────────────────────────────╮ │ FSharpOption<Unit> │ │ Value: <null> │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── //// test async { raise (exn "error") } |> runWithTimeoutStrict 60 |> _assert_eq None ╭─[ 65.34ms - stdout ]─────────────────────────────────────────────────────────╮ │ 00:00:00 #6 [Critical] runWithTimeoutStrict / ex: System.Exception: error / │ │ timeout: 60 │ │ 00:00:00 #7 [Critical] runWithTimeoutStrict** / ex: │ │ System.AggregateException: One or more errors occurred. (error) / timeout: │ │ 60 │ │ <null> │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## awaitValueTask │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let inline awaitValueTaskUnit (task : System.Threading.Tasks.ValueTask) = task.AsTask () |> Async.AwaitTask let inline awaitValueTask (task : System.Threading.Tasks.ValueTask<_>) = task.AsTask () |> Async.AwaitTask ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## init │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let inline init x = async { return x } ── fsharp ────────────────────────────────────────────────────────────────────── //// test init 1 |> Async.RunSynchronously |> _assert_eq 1 ╭─[ 16.02ms - stdout ]─────────────────────────────────────────────────────────╮ │ 1 │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## mergeCancellationTokenWithDefaultAsync │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let inline mergeCancellationTokenWithDefaultAsync (token : System.Threading.CancellationToken) = async { let! ct = Async.CancellationToken let dct = Async.DefaultCancellationToken let cts = System.Threading.CancellationTokenSource.CreateLinkedTokenSource [[| ct; dct; token |]] return cts.Token } ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## withCancellationToken │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let inline withCancellationToken (ct : System.Threading.CancellationToken) fn = Async.StartImmediateAsTask (fn, ct) |> Async.AwaitTask ── fsharp ────────────────────────────────────────────────────────────────────── //// test let cts = new System.Threading.CancellationTokenSource () async { let run = async { do! Async.Sleep 100 return 1 } let! child = run |> withCancellationToken cts.Token |> catch |> Async.StartChild do! Async.Sleep 50 cts.Cancel () return! child } |> Async.RunSynchronously |> Result.mapError _.Message |> _assert_eq (Error ("A task was canceled.")) ╭─[ 136.63ms - stdout ]────────────────────────────────────────────────────────╮ │ FSharpResult<Int32,String> │ │ ResultValue: 0 │ │ ErrorValue: A task was canceled. │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## withTraceLevel │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let inline withTraceLevel level fn = async { let oldTraceLevel = traceLevel try traceLevel <- level return! fn finally traceLevel <- oldTraceLevel } [NbConvertApp] Converting notebook Async.dib.ipynb to html /opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. validate(nb) /opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 return _pygments_highlight( [NbConvertApp] Writing 324721 bytes to Async.dib.html ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ # AsyncSeq (Polyglot) │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── #!import ../../lib/fsharp/Notebooks.dib #!import ../../lib/fsharp/Testing.dib ── fsharp - import ───────────────────────────────────────────────────────────── #r "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Asp NetCore.Html.Abstractions.dll" #r "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot Net.Interactive.dll" #r "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot Net.Interactive.FSharp.dll" #r "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot Net.Interactive.Formatting.dll" open System open System.IO open System.Text open Microsoft.DotNet.Interactive.Formatting ── fsharp - import ───────────────────────────────────────────────────────────── #r "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot Net.Interactive.FSharp.dll" open Microsoft.DotNet.Interactive.FSharp.FSharpKernelHelpers #r "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot Net.Interactive.dll" open type Microsoft.DotNet.Interactive.Kernel ── fsharp - import ───────────────────────────────────────────────────────────── //// test Formatter.ListExpansionLimit <- 100 ── fsharp - import ───────────────────────────────────────────────────────────── #r @"../../../../../../../.nuget/packages/expecto/10.1.0/lib/net6.0/Expecto.dll" ── fsharp - import ───────────────────────────────────────────────────────────── //// test type AssertExceptionFormatter (ex) = member _.Text = ex.ToString() .Replace("32m", "<span style=\"color: green;\">") .Replace("36m", "</span>") .Replace("31m", "<span style=\"color: red;\">") .Replace("\n", "<br/>\n") Formatter.Register<AssertExceptionFormatter> ((fun (x : AssertExceptionFormatter) -> x.Text), "text/html") ── fsharp - import ───────────────────────────────────────────────────────────── //// test let inline __expect fn log expected actual = if log then printfn $"{actual.ToDisplayString ()}" try "Testing.__expect" |> fn actual expected with :? Expecto.AssertException as ex -> AssertExceptionFormatter(ex).Display () |> ignore failwith (ex.GetType().FullName) let inline __contains log expected actual = __expect Expecto.Expect.contains log expected actual let inline _contains expected actual = __contains true expected actual let inline __assert_eq log expected actual = __expect Expecto.Expect.equal log expected actual let inline _assert_eq expected actual = __assert_eq true expected actual let inline __isGreaterThan log expected actual = __expect Expecto.Expect.isGreaterThan log expected... ── fsharp - import ───────────────────────────────────────────────────────────── //// test let inline __isBetween log a b actual = let inline isBetween actual (a, b) _ = __isGreaterThanOrEqual log a actual __isLessThanOrEqual log b actual __expect isBetween log (a, b) actual let inline _isBetween a b actual = __isBetween true a b actual ── fsharp ────────────────────────────────────────────────────────────────────── #r @"../../../../../../../.nuget/packages/fsharp.control.asyncseq/3.2.1/lib/netstan dard2.1/FSharp.Control.AsyncSeq.dll" #r @"../../../../../../../.nuget/packages/system.reactive/6.0.1-preview.1/lib/net6. 0/System.Reactive.dll" #r @"../../../../../../../.nuget/packages/system.reactive.linq/6.0.1-preview.1/lib/ netstandard2.0/System.Reactive.Linq.dll" ── fsharp ────────────────────────────────────────────────────────────────────── #!import ../../lib/fsharp/Common.fs #!import ../../lib/fsharp/Async.fs ── fsharp - import ───────────────────────────────────────────────────────────── #if !INTERACTIVE namespace Polyglot #endif module Common = let nl = System.Environment.NewLine let q = @"""" let inline cons head tail = head :: tail module String = let inline contains (value : string) (input : string) = input.Contains value let inline endsWith (value : string) (input : string) = input.EndsWith value let inline padLeft totalWidth paddingChar (input : string) = input.PadLeft (totalWidth, paddingChar) let inline replace (oldValue : string) (newValue : string) (input : string) = input.Replace (oldValue, newValue) let inline split separator (input : string) = input.Split separator let inline spli... ── fsharp - import ───────────────────────────────────────────────────────────── #if !INTERACTIVE namespace Polyglot #endif module Async = open Common /// ## choice let inline choice asyncs = async { let e = Event<_> () use cts = new System.Threading.CancellationTokenSource () let fn = asyncs |> Seq.map (fun a -> async { let! x = a e.Trigger x }) |> Async.Parallel |> Async.Ignore Async.Start (fn, cts.Token) let! result = Async.AwaitEvent e.Publish cts.Cancel () return result } /// ## map let inline map fn a = async { let! x = a return fn x } /// ## catch let inline catch a = a |> Async.Catch ... ── fsharp ────────────────────────────────────────────────────────────────────── open Common ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## subscribeEvent │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let inline subscribeEvent (event: IEvent<'H, 'A>) map = let observable = System.Reactive.Linq.Observable.FromEventPattern<'H, 'A>(event.AddHandler, event.RemoveHandler) System.Reactive.Linq.Observable.Select (observable, fun event -> map event.EventArgs) |> FSharp.Control.AsyncSeq.ofObservableBuffered ── fsharp ────────────────────────────────────────────────────────────────────── //// test type TestEvent () as self = member val Calls = [[]] with get, set member val Event = Event<ErrorEventHandler, ErrorEventArgs> () with get member _.AddCall text = self.Calls <- self.Calls @ [[ text ]] member _.EventInterface = { new IEvent<ErrorEventHandler, ErrorEventArgs> with member _.AddHandler handler = self.AddCall "AddHandler" self.Event.Publish.AddHandler handler member _.RemoveHandler handler = self.AddCall "RemoveHandler" self.Event.Publish.RemoveHandler handler member _.Subscribe observer = self.AddCall "IObservable.Subscribe" let disposable = self.Event.Publish.Subscribe observer newDisposable (fun () -> self.AddCall "IObservable.Dispose" disposable.Dispose () ) } member _.Subscribe () = subscribeEvent self.EventInterface (fun args -> let result = args.GetException () |> printException self.AddCall $"TestEvent.Subscribe({result})" result ) member _.Iter subscription = subscription |> FSharp.Control.AsyncSeq.iteriAsync (fun i error -> async { self.AddCall $"TestEvent.Iter({i}: {error})" }) member _.WaitCall text = async { while self.Calls |> List.last <> text do do! Async.SwitchToThreadPool () } ── fsharp ────────────────────────────────────────────────────────────────────── //// test let testEvent = TestEvent () async { testEvent.AddCall "1" let! child = testEvent.Subscribe () |> testEvent.Iter |> Async.StartChild do! testEvent.WaitCall "AddHandler" testEvent.AddCall "2" do! child testEvent.AddCall "3" } |> Async.runWithTimeout 300 |> _assert_eq None testEvent.Calls |> Seq.toList |> _assert_eq [[ "1"; "AddHandler"; "2"; "RemoveHandler" ]] ╭─[ 444.03ms - stdout ]────────────────────────────────────────────────────────╮ │ 00:00:00 #1 [Debug] runWithTimeoutAsync / timeout: 300 │ │ <null> │ │ [ 1, AddHandler, 2, RemoveHandler ] │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── //// test let testEvent = TestEvent () async { testEvent.AddCall "1" let! child = testEvent.Subscribe () |> testEvent.Iter |> Async.StartChild do! testEvent.WaitCall "AddHandler" testEvent.AddCall "2" use _ = testEvent.EventInterface.Subscribe (fun args -> testEvent.AddCall $"testEvent.EventInterface.Subscribe({args})" ) testEvent.AddCall "3" do! child testEvent.AddCall "4" } |> Async.runWithTimeout 300 |> _assert_eq None testEvent.Calls |> _assert_eq [[ "1"; "AddHandler"; "2"; "IObservable.Subscribe"; "3"; "RemoveHandler"; "IObservable.Dispose" ]] ╭─[ 426.23ms - stdout ]────────────────────────────────────────────────────────╮ │ 00:00:00 #2 [Debug] runWithTimeoutAsync / timeout: 300 │ │ <null> │ │ [ 1, AddHandler, 2, IObservable.Subscribe, 3, RemoveHandler, │ │ IObservable.Dispose ] │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── //// test let testEvent = TestEvent () async { testEvent.AddCall "1" let! child = testEvent.Subscribe () |> testEvent.Iter |> Async.StartChild do! testEvent.WaitCall "AddHandler" testEvent.AddCall "2" use _ = testEvent.EventInterface.Subscribe (fun args -> async { do! testEvent.WaitCall "TestEvent.Iter(0: System.Exception: error)" testEvent.AddCall $"testEvent.EventInterface.Subscribe({args.GetException () |> printException})" } |> Async.RunSynchronously ) testEvent.AddCall "3" testEvent.Event.Trigger (null, ErrorEventArgs (Exception "error")) testEvent.AddCall "4" do! child testEvent.AddCall "5" } |> Async.runWithTimeout 300 |> _assert_eq None testEvent.Calls |> _assert_eq [[ "1" "AddHandler" "2" "IObservable.Subscribe" "3" "TestEvent.Subscribe(System.Exception: error)" "TestEvent.Iter(0: System.Exception: error)" "testEvent.EventInterface.Subscribe(System.Exception: error)" "4" "RemoveHandler" "IObservable.Dispose" ]] ╭─[ 415.32ms - stdout ]────────────────────────────────────────────────────────╮ │ 00:00:00 #3 [Debug] runWithTimeoutAsync / timeout: 300 │ │ <null> │ │ [ 1, AddHandler, 2, IObservable.Subscribe, 3, │ │ TestEvent.Subscribe(System.Exception: error), TestEvent.Iter(0: │ │ System.Exception: error), │ │ testEvent.EventInterface.Subscribe(System.Exception: error), 4, │ │ RemoveHandler, IObservable.Dispose ] │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let subscribeToken (token : System.Threading.CancellationToken) = let tcs = new System.Threading.Tasks.TaskCompletionSource () System.Action tcs.SetResult |> token.Register |> ignore let start = System.DateTime.Now.Ticks FSharp.Control.AsyncSeq.unfoldAsync (fun () -> async { do! tcs.Task |> Async.AwaitTask return Some (System.DateTime.Now.Ticks - start, ()) }) () ── fsharp ────────────────────────────────────────────────────────────────────── //// test let cts = new System.Threading.CancellationTokenSource () async { let! child = cts.Token |> subscribeToken |> FSharp.Control.AsyncSeq.tryFirst |> Async.StartChild do! Async.Sleep 100 cts.Cancel () return! child } |> Async.RunSynchronously |> Option.get |> _isGreaterThan 900000 ╭─[ 147.93ms - stdout ]────────────────────────────────────────────────────────╮ │ 1018827 │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ [NbConvertApp] Converting notebook AsyncSeq.dib.ipynb to html /opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. validate(nb) /opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 return _pygments_highlight( [NbConvertApp] Writing 301477 bytes to AsyncSeq.dib.html ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ # Common (Polyglot) │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── #!import ../../lib/fsharp/Notebooks.dib #!import ../../lib/fsharp/Testing.dib ── fsharp - import ───────────────────────────────────────────────────────────── #r "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Asp NetCore.Html.Abstractions.dll" #r "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot Net.Interactive.dll" #r "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot Net.Interactive.FSharp.dll" #r "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot Net.Interactive.Formatting.dll" open System open System.IO open System.Text open Microsoft.DotNet.Interactive.Formatting ── fsharp - import ───────────────────────────────────────────────────────────── #r "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot Net.Interactive.FSharp.dll" open Microsoft.DotNet.Interactive.FSharp.FSharpKernelHelpers #r "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot Net.Interactive.dll" open type Microsoft.DotNet.Interactive.Kernel ── fsharp - import ───────────────────────────────────────────────────────────── //// test Formatter.ListExpansionLimit <- 100 ── fsharp - import ───────────────────────────────────────────────────────────── #r @"../../../../../../../.nuget/packages/expecto/10.1.0/lib/net6.0/Expecto.dll" ── fsharp - import ───────────────────────────────────────────────────────────── //// test type AssertExceptionFormatter (ex) = member _.Text = ex.ToString() .Replace("32m", "<span style=\"color: green;\">") .Replace("36m", "</span>") .Replace("31m", "<span style=\"color: red;\">") .Replace("\n", "<br/>\n") Formatter.Register<AssertExceptionFormatter> ((fun (x : AssertExceptionFormatter) -> x.Text), "text/html") ── fsharp - import ───────────────────────────────────────────────────────────── //// test let inline __expect fn log expected actual = if log then printfn $"{actual.ToDisplayString ()}" try "Testing.__expect" |> fn actual expected with :? Expecto.AssertException as ex -> AssertExceptionFormatter(ex).Display () |> ignore failwith (ex.GetType().FullName) let inline __contains log expected actual = __expect Expecto.Expect.contains log expected actual let inline _contains expected actual = __contains true expected actual let inline __assert_eq log expected actual = __expect Expecto.Expect.equal log expected actual let inline _assert_eq expected actual = __assert_eq true expected actual let inline __isGreaterThan log expected actual = __expect Expecto.Expect.isGreaterThan log expected... ── fsharp - import ───────────────────────────────────────────────────────────── //// test let inline __isBetween log a b actual = let inline isBetween actual (a, b) _ = __isGreaterThanOrEqual log a actual __isLessThanOrEqual log b actual __expect isBetween log (a, b) actual let inline _isBetween a b actual = __isBetween true a b actual ── fsharp ────────────────────────────────────────────────────────────────────── let nl = System.Environment.NewLine let q = @"""" ── fsharp ────────────────────────────────────────────────────────────────────── let inline cons head tail = head :: tail ── fsharp ────────────────────────────────────────────────────────────────────── module String = let inline contains (value : string) (input : string) = input.Contains value let inline endsWith (value : string) (input : string) = input.EndsWith value let inline padLeft totalWidth paddingChar (input : string) = input.PadLeft (totalWidth, paddingChar) let inline replace (oldValue : string) (newValue : string) (input : string) = input.Replace (oldValue, newValue) let inline split separator (input : string) = input.Split separator let inline splitString (separator : string array) (input : string) = input.Split (separator, System.StringSplitOptions.None) let inline startsWith (value : string) (input : string) = input.StartsWith value let inline substring startIndex length (input : string) = input.Substring (startIndex, length) let inline toLower (input : string) = input.ToLower () let inline toUpper (input : string) = input.ToUpper () let inline trim (input : string) = input.Trim () let inline trimEnd (trimChars : char array) (input : string) = input.TrimEnd trimChars let inline trimStart (trimChars : char array) (input : string) = input.TrimStart trimChars let ellipsis max value = if value |> String.length <= max then value else $"{value |> substring 0 max}..." ── fsharp ────────────────────────────────────────────────────────────────────── type TicksGuid = System.Guid type DateTimeGuid = System.Guid ── fsharp ────────────────────────────────────────────────────────────────────── //// test let testGuid = Guid "FEDCBA98-7654-3210-FEDC-BA9876543210" ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## dateTimeGuidFromDateTime │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let inline dateTimeGuidFromDateTime (guid: System.Guid) (dateTime: System.DateTime) = let guid = guid |> string let prefix = dateTime.ToString "yyyyMMdd-HHmm-ssff-ffff-f" DateTimeGuid $"{prefix}{guid.[[prefix.Length..]]}" ── fsharp ────────────────────────────────────────────────────────────────────── //// test dateTimeGuidFromDateTime testGuid DateTime.MinValue |> _assert_eq (DateTimeGuid "00010101-0000-0000-0000-0a9876543210") ╭─[ 42.69ms - stdout ]─────────────────────────────────────────────────────────╮ │ 00010101-0000-0000-0000-0a9876543210 │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── //// test dateTimeGuidFromDateTime testGuid DateTime.MaxValue |> _assert_eq (DateTimeGuid $"99991231-2359-5999-9999-9{(testGuid |> string).[[^10..]]}") ╭─[ 28.36ms - stdout ]─────────────────────────────────────────────────────────╮ │ 99991231-2359-5999-9999-9a9876543210 │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── //// test dateTimeGuidFromDateTime testGuid DateTime.UnixEpoch |> _assert_eq (DateTimeGuid $"19700101-0000-0000-0000-0{(testGuid |> string).[[^10..]]}") ╭─[ 179.59ms - stdout ]────────────────────────────────────────────────────────╮ │ 19700101-0000-0000-0000-0a9876543210 │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## dateTimeFromGuid │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let inline dateTimeFromGuid (dateTimeGuid: DateTimeGuid) = let dateTimeGuid = dateTimeGuid |> string System.DateTime.ParseExact (dateTimeGuid.[[..24]] |> String.replace "-" "", "yyyyMMddHHmmssfffffff", null) ── fsharp ────────────────────────────────────────────────────────────────────── //// test dateTimeFromGuid (DateTimeGuid "00010101-0000-0000-0000-0a9876543210") |> _assert_eq DateTime.MinValue ╭─[ 16.64ms - stdout ]─────────────────────────────────────────────────────────╮ │ 0001-01-01 00:00:00Z │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── //// test dateTimeFromGuid (DateTimeGuid $"99991231-2359-5999-9999-9{(testGuid |> string).[[^10..]]}") |> _assert_eq DateTime.MaxValue ╭─[ 20.11ms - stdout ]─────────────────────────────────────────────────────────╮ │ 9999-12-31 23:59:59Z │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── //// test dateTimeFromGuid (DateTimeGuid $"19700101-0000-0000-0000-0{(testGuid |> string).[[^10..]]}") |> _assert_eq DateTime.UnixEpoch ╭─[ 19.79ms - stdout ]─────────────────────────────────────────────────────────╮ │ 1970-01-01 00:00:00Z │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## ticksGuidFromTicks │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let inline ticksGuidFromTicks (guid: System.Guid) (ticks: int64) = let guid = guid |> string let ticks = ticks |> string |> String.padLeft 18 '0' TicksGuid $"{ticks.[[0..7]]}-{ticks.[[8..11]]}-{ticks.[[12..15]]}-{ticks.[[16..17]]}{guid. [[21..]]}" ── fsharp ────────────────────────────────────────────────────────────────────── //// test ticksGuidFromTicks testGuid 0L |> _assert_eq (TicksGuid "00000000-0000-0000-00dc-ba9876543210") ╭─[ 19.00ms - stdout ]─────────────────────────────────────────────────────────╮ │ 00000000-0000-0000-00dc-ba9876543210 │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── //// test ticksGuidFromTicks testGuid 999999999999999999L |> _assert_eq (TicksGuid $"99999999-9999-9999-99dc-b{(testGuid |> string).[[^10..]]}") ╭─[ 25.93ms - stdout ]─────────────────────────────────────────────────────────╮ │ 99999999-9999-9999-99dc-ba9876543210 │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## ticksFromGuid │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let inline ticksFromGuid (ticksGuid: DateTimeGuid) = let ticks = ticksGuid |> string int64 $"{ticks.[[0..7]]}{ticks.[[9..12]]}{ticks.[[14..17]]}{ticks.[[19..20]]}" ── fsharp ────────────────────────────────────────────────────────────────────── //// test ticksFromGuid (TicksGuid "00000000-0000-0000-00dc-ba9876543210") |> _assert_eq 0L ╭─[ 18.46ms - stdout ]─────────────────────────────────────────────────────────╮ │ 0 │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── //// test ticksFromGuid (TicksGuid $"99999999-9999-9999-99{(testGuid |> string).[[^14..]]}") |> _assert_eq 999999999999999999L ╭─[ 30.28ms - stdout ]─────────────────────────────────────────────────────────╮ │ 999999999999999999 │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## newGuidFromDateTime │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let inline newGuidFromDateTime (dateTime: System.DateTime) = let guid = System.Guid.NewGuid () dateTimeGuidFromDateTime guid dateTime ── fsharp ────────────────────────────────────────────────────────────────────── //// test newGuidFromDateTime System.DateTime.UtcNow |> dateTimeFromGuid |> fun dateTime -> (dateTime - System.DateTime.UtcNow).TotalSeconds |> int |> _assert_eq 0 ╭─[ 35.61ms - stdout ]─────────────────────────────────────────────────────────╮ │ 0 │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## newGuidFromTicks │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let inline newGuidFromTicks (ticks: int64) = let guid = System.Guid.NewGuid () ticksGuidFromTicks guid ticks ── fsharp ────────────────────────────────────────────────────────────────────── //// test newGuidFromTicks System.DateTime.UtcNow.Ticks |> ticksFromGuid |> fun ticks -> (ticks - System.DateTime.UtcNow.Ticks) / 100000L |> _assert_eq 0L ╭─[ 30.02ms - stdout ]─────────────────────────────────────────────────────────╮ │ 0 │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## memoize │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let inline memoize fn = let result = lazy fn () fun () -> result.Value ── fsharp ────────────────────────────────────────────────────────────────────── //// test let mutable count = 0 let add = fun () -> count <- count + 1 |> memoize add () add () add () count |> _assert_eq 1 ╭─[ 15.45ms - stdout ]─────────────────────────────────────────────────────────╮ │ 1 │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## printException │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let inline printException (ex : System.Exception) = $"{ex.GetType ()}: {ex.Message}" ── fsharp ────────────────────────────────────────────────────────────────────── //// test fun () -> failwith "test" |> _throwsC (fun ex _ -> printException ex |> _assert_eq "System.Exception: test" ) ╭─[ 27.54ms - stdout ]─────────────────────────────────────────────────────────╮ │ FSI_0034+it@3-1 │ │ System.Exception: test │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## TraceLevel │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── type TraceLevel = | Verbose | Debug | Info | Warning | Critical let inline getLocals () = "" let mutable traceEnabled = true let mutable traceCount = 0 let mutable traceLevel = Verbose let mutable traceDump = false ── fsharp ────────────────────────────────────────────────────────────────────── let testTraceLevel level = traceEnabled && level >= traceLevel ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## traceRaw │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let rec traceRaw level fn = if level |> testTraceLevel then traceCount <- traceCount + 1 let text = $"%s{fn ()}" #if FABLE_COMPILER_RUST Fable.Core.RustInterop.emitRustExpr () @"println!(""{}"", text)" #else System.Console.WriteLine text #endif #if !WASM && !FABLE_COMPILER if traceDump then try let tmpPath = System.IO.Path.GetTempPath () let logDir = System.IO.Path.Combine (tmpPath, "!polyglot") System.IO.Directory.CreateDirectory logDir |> ignore let logFile = System.IO.Path.Combine (logDir, $"{newGuidFromDateTime System.DateTime.Now}.txt") System.IO.File.WriteAllTextAsync (logFile, text) |> Async.AwaitTask |> Async.RunSynchronously with ex -> traceRaw Critical (fun () -> $"trace / ex: {ex |> printException}") #endif ── fsharp ────────────────────────────────────────────────────────────────────── //// test traceRaw Debug (fun () -> "test") ╭─[ 5.00ms - stdout ]──────────────────────────────────────────────────────────╮ │ test │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## trace │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let private replStart = #if INTERACTIVE || !FABLE_COMPILER fun () -> if System.Reflection.Assembly.GetEntryAssembly().GetName().Name <> "Microsoft.DotNet.Interactive.App" then Some System.DateTime.Now.Ticks else None |> memoize #else fun () -> None : int64 option #endif let trace level fn getLocals = fun () -> let time = #if WASM "" #else match replStart () with | Some replStart -> let t = System.DateTime.Now.Ticks - replStart |> System.TimeSpan System.DateTime (1, 1, 1, t.Hours, t.Minutes, t.Seconds, t.Milliseconds) | None -> System.DateTime.Now |> fun dateTime -> #if FABLE_COMPILER_RUST "hh:mm:ss" #else "HH:mm:ss" #endif |> dateTime.ToString #endif $"{time} #{traceCount} [[%A{level}]] %s{fn ()} / %s{getLocals ()}" |> String.trimStart [[||]] |> String.trimEnd [[| ' '; '/' |]] |> traceRaw level let inline withTrace enabled fn = let oldTraceEnabled = traceEnabled try traceEnabled <- enabled fn () finally traceEnabled <- oldTraceEnabled let inline withTraceEnabled fn = withTrace true fn let inline withTraceDisabled fn = withTrace false fn let inline withTraceLevel level fn = let oldTraceLevel = traceLevel try traceLevel <- level fn () finally traceLevel <- oldTraceLevel let inline withTraceDump dump fn = let oldTraceDump = traceDump try traceDump <- dump fn () finally traceDump <- oldTraceDump ── fsharp ────────────────────────────────────────────────────────────────────── //// test trace Debug (fun () -> "test") getLocals ╭─[ 17.82ms - stdout ]─────────────────────────────────────────────────────────╮ │ 00:00:00 #2 [Debug] test │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## newDisposable │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let inline newDisposable fn = { new System.IDisposable with member _.Dispose () = fn () } ── fsharp ────────────────────────────────────────────────────────────────────── //// test let mutable newDisposableTest = 0 newDisposable (fun () -> newDisposableTest <- newDisposableTest + 1) |> _.Dispose() newDisposableTest |> _assert_eq 1 ╭─[ 11.75ms - stdout ]─────────────────────────────────────────────────────────╮ │ 1 │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── //// test let mutable newDisposableTest = 0 fun () -> task { use x = newDisposable (fun () -> newDisposableTest <- newDisposableTest + 1) () } |> fun x -> x () |> Async.AwaitTask |> Async.RunSynchronously newDisposableTest |> _assert_eq 1 ╭─[ 80.62ms - stdout ]─────────────────────────────────────────────────────────╮ │ 1 │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── //// test let mutable newDisposableTest = 0 async { use x = newDisposable (fun () -> newDisposableTest <- newDisposableTest + 1) () } |> Async.RunSynchronously newDisposableTest |> _assert_eq 1 ╭─[ 24.98ms - stdout ]─────────────────────────────────────────────────────────╮ │ 1 │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── //// test let mutable newDisposableTest = 0 async { let x = newDisposable (fun () -> newDisposableTest <- newDisposableTest + 1) () } |> Async.RunSynchronously newDisposableTest |> _assert_eq 0 ╭─[ 23.14ms - stdout ]─────────────────────────────────────────────────────────╮ │ 0 │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## retryFn │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let inline retryFn retries fn = let rec loop retry = try if retry < retries then fn () |> Some else None with ex -> let getLocals () = $"retry: {retry} / ex: {ex |> printException} / {getLocals ()}" trace Warning (fun () -> "retryFn") getLocals System.Threading.Thread.Sleep 1 loop (retry + 1) loop 0 ── fsharp ────────────────────────────────────────────────────────────────────── //// test let mutable retryFnTest = 0 fun () -> retryFnTest <- retryFnTest + 1 retryFnTest |> retryFn 3 |> _assert_eq (Some 1) ╭─[ 16.87ms - stdout ]─────────────────────────────────────────────────────────╮ │ FSharpOption<Int32> │ │ Value: 1 │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── //// test fun () -> failwith "test" |> retryFn 3 |> _assert_eq None ╭─[ 18.23ms - stdout ]─────────────────────────────────────────────────────────╮ │ 00:00:00 #3 [Warning] retryFn / retry: 0 / ex: System.Exception: test │ │ 00:00:00 #4 [Warning] retryFn / retry: 1 / ex: System.Exception: test │ │ 00:00:00 #5 [Warning] retryFn / retry: 2 / ex: System.Exception: test │ │ <null> │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── //// test let mutable retryFnTest = 0 fun () -> if retryFnTest >= 2 then retryFnTest else retryFnTest <- retryFnTest + 1 failwith "test" |> retryFn 3 |> _assert_eq (Some 2) ╭─[ 18.65ms - stdout ]─────────────────────────────────────────────────────────╮ │ 00:00:00 #6 [Warning] retryFn / retry: 0 / ex: System.Exception: test │ │ 00:00:00 #7 [Warning] retryFn / retry: 1 / ex: System.Exception: test │ │ FSharpOption<Int32> │ │ Value: 2 │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ [NbConvertApp] Converting notebook Common.dib.ipynb to html /opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. validate(nb) /opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 return _pygments_highlight( [NbConvertApp] Writing 353859 bytes to Common.dib.html ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ # CommonFSharp (Polyglot) │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── #!import ../../lib/fsharp/Notebooks.dib #!import ../../lib/fsharp/Testing.dib ── fsharp - import ───────────────────────────────────────────────────────────── #r "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Asp NetCore.Html.Abstractions.dll" #r "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot Net.Interactive.dll" #r "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot Net.Interactive.FSharp.dll" #r "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot Net.Interactive.Formatting.dll" open System open System.IO open System.Text open Microsoft.DotNet.Interactive.Formatting ── fsharp - import ───────────────────────────────────────────────────────────── #r "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot Net.Interactive.FSharp.dll" open Microsoft.DotNet.Interactive.FSharp.FSharpKernelHelpers #r "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot Net.Interactive.dll" open type Microsoft.DotNet.Interactive.Kernel ── fsharp - import ───────────────────────────────────────────────────────────── //// test Formatter.ListExpansionLimit <- 100 ── fsharp - import ───────────────────────────────────────────────────────────── #r @"../../../../../../../.nuget/packages/expecto/10.1.0/lib/net6.0/Expecto.dll" ── fsharp - import ───────────────────────────────────────────────────────────── //// test type AssertExceptionFormatter (ex) = member _.Text = ex.ToString() .Replace("32m", "<span style=\"color: green;\">") .Replace("36m", "</span>") .Replace("31m", "<span style=\"color: red;\">") .Replace("\n", "<br/>\n") Formatter.Register<AssertExceptionFormatter> ((fun (x : AssertExceptionFormatter) -> x.Text), "text/html") ── fsharp - import ───────────────────────────────────────────────────────────── //// test let inline __expect fn log expected actual = if log then printfn $"{actual.ToDisplayString ()}" try "Testing.__expect" |> fn actual expected with :? Expecto.AssertException as ex -> AssertExceptionFormatter(ex).Display () |> ignore failwith (ex.GetType().FullName) let inline __contains log expected actual = __expect Expecto.Expect.contains log expected actual let inline _contains expected actual = __contains true expected actual let inline __assert_eq log expected actual = __expect Expecto.Expect.equal log expected actual let inline _assert_eq expected actual = __assert_eq true expected actual let inline __isGreaterThan log expected actual = __expect Expecto.Expect.isGreaterThan log expected... ── fsharp - import ───────────────────────────────────────────────────────────── //// test let inline __isBetween log a b actual = let inline isBetween actual (a, b) _ = __isGreaterThanOrEqual log a actual __isLessThanOrEqual log b actual __expect isBetween log (a, b) actual let inline _isBetween a b actual = __isBetween true a b actual ── fsharp ────────────────────────────────────────────────────────────────────── #!import ../../lib/fsharp/Common.fs ── fsharp - import ───────────────────────────────────────────────────────────── #if !INTERACTIVE namespace Polyglot #endif module Common = let nl = System.Environment.NewLine let q = @"""" let inline cons head tail = head :: tail module String = let inline contains (value : string) (input : string) = input.Contains value let inline endsWith (value : string) (input : string) = input.EndsWith value let inline padLeft totalWidth paddingChar (input : string) = input.PadLeft (totalWidth, paddingChar) let inline replace (oldValue : string) (newValue : string) (input : string) = input.Replace (oldValue, newValue) let inline split separator (input : string) = input.Split separator let inline spli... ── fsharp ────────────────────────────────────────────────────────────────────── open Common ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## getUnionCaseName │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let inline getUnionCaseName<'T> (x: 'T) = match Reflection.FSharpValue.GetUnionFields(x, typeof<'T>) with | case, _ -> case.Name ── fsharp ────────────────────────────────────────────────────────────────────── //// test TraceLevel.Critical |> getUnionCaseName |> _assert_eq (nameof TraceLevel.Critical) ╭─[ 39.92ms - stdout ]─────────────────────────────────────────────────────────╮ │ Critical │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ [NbConvertApp] Converting notebook CommonFSharp.dib.ipynb to html /opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. validate(nb) /opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 return _pygments_highlight( [NbConvertApp] Writing 275585 bytes to CommonFSharp.dib.html ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ # Threading (Polyglot) │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── #!import ../../lib/fsharp/Notebooks.dib #!import ../../lib/fsharp/Testing.dib ── fsharp - import ───────────────────────────────────────────────────────────── #r "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Asp NetCore.Html.Abstractions.dll" #r "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot Net.Interactive.dll" #r "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot Net.Interactive.FSharp.dll" #r "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot Net.Interactive.Formatting.dll" open System open System.IO open System.Text open Microsoft.DotNet.Interactive.Formatting ── fsharp - import ───────────────────────────────────────────────────────────── #r "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot Net.Interactive.FSharp.dll" open Microsoft.DotNet.Interactive.FSharp.FSharpKernelHelpers #r "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot Net.Interactive.dll" open type Microsoft.DotNet.Interactive.Kernel ── fsharp - import ───────────────────────────────────────────────────────────── //// test Formatter.ListExpansionLimit <- 100 ── fsharp - import ───────────────────────────────────────────────────────────── #r @"../../../../../../../.nuget/packages/expecto/10.1.0/lib/net6.0/Expecto.dll" ── fsharp - import ───────────────────────────────────────────────────────────── //// test type AssertExceptionFormatter (ex) = member _.Text = ex.ToString() .Replace("32m", "<span style=\"color: green;\">") .Replace("36m", "</span>") .Replace("31m", "<span style=\"color: red;\">") .Replace("\n", "<br/>\n") Formatter.Register<AssertExceptionFormatter> ((fun (x : AssertExceptionFormatter) -> x.Text), "text/html") ── fsharp - import ───────────────────────────────────────────────────────────── //// test let inline __expect fn log expected actual = if log then printfn $"{actual.ToDisplayString ()}" try "Testing.__expect" |> fn actual expected with :? Expecto.AssertException as ex -> AssertExceptionFormatter(ex).Display () |> ignore failwith (ex.GetType().FullName) let inline __contains log expected actual = __expect Expecto.Expect.contains log expected actual let inline _contains expected actual = __contains true expected actual let inline __assert_eq log expected actual = __expect Expecto.Expect.equal log expected actual let inline _assert_eq expected actual = __assert_eq true expected actual let inline __isGreaterThan log expected actual = __expect Expecto.Expect.isGreaterThan log expected... ── fsharp - import ───────────────────────────────────────────────────────────── //// test let inline __isBetween log a b actual = let inline isBetween actual (a, b) _ = __isGreaterThanOrEqual log a actual __isLessThanOrEqual log b actual __expect isBetween log (a, b) actual let inline _isBetween a b actual = __isBetween true a b actual ── fsharp ────────────────────────────────────────────────────────────────────── #!import ../../lib/fsharp/Common.fs ── fsharp - import ───────────────────────────────────────────────────────────── #if !INTERACTIVE namespace Polyglot #endif module Common = let nl = System.Environment.NewLine let q = @"""" let inline cons head tail = head :: tail module String = let inline contains (value : string) (input : string) = input.Contains value let inline endsWith (value : string) (input : string) = input.EndsWith value let inline padLeft totalWidth paddingChar (input : string) = input.PadLeft (totalWidth, paddingChar) let inline replace (oldValue : string) (newValue : string) (input : string) = input.Replace (oldValue, newValue) let inline split separator (input : string) = input.Split separator let inline spli... ── fsharp ────────────────────────────────────────────────────────────────────── open Common ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## newDisposableToken │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let inline newDisposableToken (mergeToken: System.Threading.CancellationToken option) = let cts = new System.Threading.CancellationTokenSource () let cts = match mergeToken with | None -> cts | Some mergeToken -> System.Threading.CancellationTokenSource.CreateLinkedTokenSource [[| cts.Token; mergeToken |]] let disposable = newDisposable cts.Cancel cts.Token, disposable ── fsharp ────────────────────────────────────────────────────────────────────── //// test let mutable counter = 0 let inline run fn = let token, disposable = newDisposableToken None use _ = disposable fn token async { fn token } |> Async.Start let inline fn (token : System.Threading.CancellationToken) = counter <- counter + (if token.IsCancellationRequested then 10 else 1) async { run fn do! Async.Sleep 10 return counter } |> Async.RunSynchronously |> _assert_eq 11 ╭─[ 178.99ms - stdout ]────────────────────────────────────────────────────────╮ │ 11 │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ [NbConvertApp] Converting notebook Threading.dib.ipynb to html /opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. validate(nb) /opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 return _pygments_highlight( [NbConvertApp] Writing 278602 bytes to Threading.dib.html ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ # Crypto (Polyglot) │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── #!import ../../lib/fsharp/Notebooks.dib #!import ../../lib/fsharp/Testing.dib ── fsharp - import ───────────────────────────────────────────────────────────── #r "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Asp NetCore.Html.Abstractions.dll" #r "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot Net.Interactive.dll" #r "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot Net.Interactive.FSharp.dll" #r "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot Net.Interactive.Formatting.dll" open System open System.IO open System.Text open Microsoft.DotNet.Interactive.Formatting ── fsharp - import ───────────────────────────────────────────────────────────── #r "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot Net.Interactive.FSharp.dll" open Microsoft.DotNet.Interactive.FSharp.FSharpKernelHelpers #r "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot Net.Interactive.dll" open type Microsoft.DotNet.Interactive.Kernel ── fsharp - import ───────────────────────────────────────────────────────────── //// test Formatter.ListExpansionLimit <- 100 ── fsharp - import ───────────────────────────────────────────────────────────── #r @"../../../../../../../.nuget/packages/expecto/10.1.0/lib/net6.0/Expecto.dll" ── fsharp - import ───────────────────────────────────────────────────────────── //// test type AssertExceptionFormatter (ex) = member _.Text = ex.ToString() .Replace("32m", "<span style=\"color: green;\">") .Replace("36m", "</span>") .Replace("31m", "<span style=\"color: red;\">") .Replace("\n", "<br/>\n") Formatter.Register<AssertExceptionFormatter> ((fun (x : AssertExceptionFormatter) -> x.Text), "text/html") ── fsharp - import ───────────────────────────────────────────────────────────── //// test let inline __expect fn log expected actual = if log then printfn $"{actual.ToDisplayString ()}" try "Testing.__expect" |> fn actual expected with :? Expecto.AssertException as ex -> AssertExceptionFormatter(ex).Display () |> ignore failwith (ex.GetType().FullName) let inline __contains log expected actual = __expect Expecto.Expect.contains log expected actual let inline _contains expected actual = __contains true expected actual let inline __assert_eq log expected actual = __expect Expecto.Expect.equal log expected actual let inline _assert_eq expected actual = __assert_eq true expected actual let inline __isGreaterThan log expected actual = __expect Expecto.Expect.isGreaterThan log expected... ── fsharp - import ───────────────────────────────────────────────────────────── //// test let inline __isBetween log a b actual = let inline isBetween actual (a, b) _ = __isGreaterThanOrEqual log a actual __isLessThanOrEqual log b actual __expect isBetween log (a, b) actual let inline _isBetween a b actual = __isBetween true a b actual ── fsharp ────────────────────────────────────────────────────────────────────── #!import ../../lib/fsharp/Common.fs ── fsharp - import ───────────────────────────────────────────────────────────── #if !INTERACTIVE namespace Polyglot #endif module Common = let nl = System.Environment.NewLine let q = @"""" let inline cons head tail = head :: tail module String = let inline contains (value : string) (input : string) = input.Contains value let inline endsWith (value : string) (input : string) = input.EndsWith value let inline padLeft totalWidth paddingChar (input : string) = input.PadLeft (totalWidth, paddingChar) let inline replace (oldValue : string) (newValue : string) (input : string) = input.Replace (oldValue, newValue) let inline split separator (input : string) = input.Split separator let inline spli... ── fsharp ────────────────────────────────────────────────────────────────────── open Common ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## hashText │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let hashText (input : string) = use sha256 = System.Security.Cryptography.SHA256.Create () input |> System.Text.Encoding.UTF8.GetBytes |> sha256.ComputeHash |> Array.map (fun b -> b.ToString "x2") |> String.concat "" ── fsharp ────────────────────────────────────────────────────────────────────── //// test "" |> hashText |> _assert_eq "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" ╭─[ 33.81ms - stdout ]─────────────────────────────────────────────────────────╮ │ e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── //// test " " |> hashText |> _assert_eq "36a9e7f1c95b82ffb99743e0c5c4ce95d83c9a430aac59f84ef3cbfab6145068" ╭─[ 10.19ms - stdout ]─────────────────────────────────────────────────────────╮ │ 36a9e7f1c95b82ffb99743e0c5c4ce95d83c9a430aac59f84ef3cbfab6145068 │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ [NbConvertApp] Converting notebook Crypto.dib.ipynb to html /opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. validate(nb) /opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 return _pygments_highlight( [NbConvertApp] Writing 277422 bytes to Crypto.dib.html ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ # FileSystem (Polyglot) │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── #!import ../../lib/fsharp/Notebooks.dib #!import ../../lib/fsharp/Testing.dib ── fsharp - import ───────────────────────────────────────────────────────────── #r "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Asp NetCore.Html.Abstractions.dll" #r "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot Net.Interactive.dll" #r "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot Net.Interactive.FSharp.dll" #r "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot Net.Interactive.Formatting.dll" open System open System.IO open System.Text open Microsoft.DotNet.Interactive.Formatting ── fsharp - import ───────────────────────────────────────────────────────────── #r "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot Net.Interactive.FSharp.dll" open Microsoft.DotNet.Interactive.FSharp.FSharpKernelHelpers #r "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot Net.Interactive.dll" open type Microsoft.DotNet.Interactive.Kernel ── fsharp - import ───────────────────────────────────────────────────────────── //// test Formatter.ListExpansionLimit <- 100 ── fsharp - import ───────────────────────────────────────────────────────────── #r @"../../../../../../../.nuget/packages/expecto/10.1.0/lib/net6.0/Expecto.dll" ── fsharp - import ───────────────────────────────────────────────────────────── //// test type AssertExceptionFormatter (ex) = member _.Text = ex.ToString() .Replace("32m", "<span style=\"color: green;\">") .Replace("36m", "</span>") .Replace("31m", "<span style=\"color: red;\">") .Replace("\n", "<br/>\n") Formatter.Register<AssertExceptionFormatter> ((fun (x : AssertExceptionFormatter) -> x.Text), "text/html") ── fsharp - import ───────────────────────────────────────────────────────────── //// test let inline __expect fn log expected actual = if log then printfn $"{actual.ToDisplayString ()}" try "Testing.__expect" |> fn actual expected with :? Expecto.AssertException as ex -> AssertExceptionFormatter(ex).Display () |> ignore failwith (ex.GetType().FullName) let inline __contains log expected actual = __expect Expecto.Expect.contains log expected actual let inline _contains expected actual = __contains true expected actual let inline __assert_eq log expected actual = __expect Expecto.Expect.equal log expected actual let inline _assert_eq expected actual = __assert_eq true expected actual let inline __isGreaterThan log expected actual = __expect Expecto.Expect.isGreaterThan log expected... ── fsharp - import ───────────────────────────────────────────────────────────── //// test let inline __isBetween log a b actual = let inline isBetween actual (a, b) _ = __isGreaterThanOrEqual log a actual __isLessThanOrEqual log b actual __expect isBetween log (a, b) actual let inline _isBetween a b actual = __isBetween true a b actual ── fsharp ────────────────────────────────────────────────────────────────────── #r @"../../../../../../../.nuget/packages/fsharp.control.asyncseq/3.2.1/lib/netstan dard2.1/FSharp.Control.AsyncSeq.dll" #r @"../../../../../../../.nuget/packages/system.reactive/6.0.1-preview.1/lib/net6. 0/System.Reactive.dll" #r @"../../../../../../../.nuget/packages/system.reactive.linq/6.0.1-preview.1/lib/ netstandard2.0/System.Reactive.Linq.dll" #r @"../../../../../../../.nuget/packages/argu/6.2.2/lib/netstandard2.0/Argu.dll" #r @"../../../../../../../.nuget/packages/system.commandline/2.0.0-beta4.22272.1/li b/net6.0/System.CommandLine.dll" ── fsharp ────────────────────────────────────────────────────────────────────── #!import ../../lib/fsharp/Common.fs #!import ../../lib/fsharp/CommonFSharp.fs #!import ../../lib/fsharp/Async.fs #!import ../../lib/fsharp/AsyncSeq.fs #!import ../../lib/fsharp/Runtime.fs ── fsharp - import ───────────────────────────────────────────────────────────── #if !INTERACTIVE namespace Polyglot #endif module Common = let nl = System.Environment.NewLine let q = @"""" let inline cons head tail = head :: tail module String = let inline contains (value : string) (input : string) = input.Contains value let inline endsWith (value : string) (input : string) = input.EndsWith value let inline padLeft totalWidth paddingChar (input : string) = input.PadLeft (totalWidth, paddingChar) let inline replace (oldValue : string) (newValue : string) (input : string) = input.Replace (oldValue, newValue) let inline split separator (input : string) = input.Split separator let inline spli... ── fsharp - import ───────────────────────────────────────────────────────────── #if !INTERACTIVE namespace Polyglot #endif module CommonFSharp = open Common /// ## getUnionCaseName let inline getUnionCaseName<'T> (x: 'T) = match Reflection.FSharpValue.GetUnionFields(x, typeof<'T>) with | case, _ -> case.Name ── fsharp - import ───────────────────────────────────────────────────────────── #if !INTERACTIVE namespace Polyglot #endif module Async = open Common /// ## choice let inline choice asyncs = async { let e = Event<_> () use cts = new System.Threading.CancellationTokenSource () let fn = asyncs |> Seq.map (fun a -> async { let! x = a e.Trigger x }) |> Async.Parallel |> Async.Ignore Async.Start (fn, cts.Token) let! result = Async.AwaitEvent e.Publish cts.Cancel () return result } /// ## map let inline map fn a = async { let! x = a return fn x } /// ## catch let inline catch a = a |> Async.Catch ... ── fsharp - import ───────────────────────────────────────────────────────────── #if !INTERACTIVE namespace Polyglot #endif module AsyncSeq = open Common /// ## subscribeEvent let inline subscribeEvent (event: IEvent<'H, 'A>) map = let observable = System.Reactive.Linq.Observable.FromEventPattern<'H, 'A>(event.AddHandler, event.RemoveHandler) System.Reactive.Linq.Observable.Select (observable, fun event -> map event.EventArgs) |> FSharp.Control.AsyncSeq.ofObservableBuffered let subscribeToken (token : System.Threading.CancellationToken) = let tcs = new System.Threading.Tasks.TaskCompletionSource () System.Action tcs.SetResult |> token.Register |> ignore let start = System.DateTime.Now.Ticks FSharp.Control.AsyncSeq.unfoldAsync (fun (... ── fsharp - import ───────────────────────────────────────────────────────────── #if !INTERACTIVE namespace Polyglot #endif module Runtime = open Common /// ## isWindows let isWindows = fun () -> System.Runtime.InteropServices.RuntimeInformation.IsOSPlatform System.Runtime.InteropServices.OSPlatform.Windows |> memoize /// ## getExecutableSuffix let inline getExecutableSuffix () = if isWindows () then ".exe" else "" /// ## splitCommand type private CommandParseStep = | Start | Path of quoted: bool | Arguments let splitCommand (command: string) = let rec loop (path, args) chars step = match chars, step with | ('"' | '\'') :: tail, _ when path = "" -> loop (pat... ── fsharp ────────────────────────────────────────────────────────────────────── open Common ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## Operators │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── module Operators = let inline (</>) a b = System.IO.Path.Combine (a, b) ── fsharp ────────────────────────────────────────────────────────────────────── open Operators ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## createTempDirectoryName │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let inline createTempDirectoryName () = let root = System.Reflection.Assembly.GetEntryAssembly().GetName().Name System.IO.Path.GetTempPath () </> $"!{root}" </> string (newGuidFromDateTime System.DateTime.Now) ── fsharp ────────────────────────────────────────────────────────────────────── //// test createTempDirectoryName () |> _contains System.IO.Path.DirectorySeparatorChar ╭─[ 32.20ms - stdout ]─────────────────────────────────────────────────────────╮ │ /tmp/!dotnet-repl/20240320-1220-2457-5784-55cb8b83fa26 │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## createTempDirectory │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let inline createTempDirectory () = let tempFolder = createTempDirectoryName () let result = System.IO.Directory.CreateDirectory tempFolder if not result.Exists then let getLocals () = $"tempFolder: {tempFolder} / result: {({| Exists = result.Exists CreationTime = result.CreationTime |})} {getLocals ()}" trace Debug (fun () -> "createTempDirectory") getLocals tempFolder ── fsharp ────────────────────────────────────────────────────────────────────── //// test let tempDirectory = createTempDirectory () Directory.Exists tempDirectory |> _assert_eq true ╭─[ 20.25ms - stdout ]─────────────────────────────────────────────────────────╮ │ True │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## getSourceDirectory │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let getSourceDirectory = fun () -> __SOURCE_DIRECTORY__ |> memoize ── fsharp ────────────────────────────────────────────────────────────────────── //// test getSourceDirectory () |> System.IO.DirectoryInfo |> fun dir -> dir.Name |> _assert_eq "fsharp" ╭─[ 19.84ms - stdout ]─────────────────────────────────────────────────────────╮ │ fsharp │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## findParent │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let inline findParent name isFile rootDir = let rec loop dir = if dir </> name |> (if isFile then System.IO.File.Exists else System.IO.Directory.Exists) then dir else dir |> System.IO.Directory.GetParent |> function | null -> failwith $"""No parent for {if isFile then "file" else "dir"} '{name}' at '{rootDir}'""" | parent -> parent.FullName |> loop loop rootDir ── fsharp ────────────────────────────────────────────────────────────────────── //// test getSourceDirectory () |> findParent ".paket" false |> System.IO.DirectoryInfo |> fun dir -> dir.Name |> _assert_eq "polyglot" ╭─[ 14.54ms - stdout ]─────────────────────────────────────────────────────────╮ │ polyglot │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── //// test getSourceDirectory () |> findParent "paket.dependencies" true |> System.IO.DirectoryInfo |> fun dir -> dir.Name |> _assert_eq "polyglot" ╭─[ 13.57ms - stdout ]─────────────────────────────────────────────────────────╮ │ polyglot │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## readAllTextAsync │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let inline readAllTextAsync path = path |> System.IO.File.ReadAllTextAsync |> Async.AwaitTask ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## fileExistsContent │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let inline fileExistsContent path content = async { if path |> System.IO.File.Exists |> not then return false else let! existingContent = path |> readAllTextAsync return content = existingContent } ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## writeAllTextAsync │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let inline writeAllTextAsync path contents = System.IO.File.WriteAllTextAsync (path, contents) |> Async.AwaitTask ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## writeAllTextExists │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let inline writeAllTextExists path contents = async { let! exists = contents |> fileExistsContent path if not exists then do! contents |> writeAllTextAsync path } ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## waitForFileAccess │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let inline waitForFileAccess access path = let fileAccess, fileShare = access |> Option.defaultValue (System.IO.FileAccess.ReadWrite, System.IO.FileShare.Read) let rec loop retry = async { try use _ = new System.IO.FileStream ( path, System.IO.FileMode.Open, fileAccess, fileShare ) return retry with ex -> if retry % 100 = 0 then let getLocals () = $"path: {path |> System.IO.Path.GetFileName} / ex: {ex |> printException} / {getLocals ()}" trace Debug (fun () -> "waitForFileAccess") getLocals do! Async.Sleep 10 return! loop (retry + 1) } loop 0 ── fsharp ────────────────────────────────────────────────────────────────────── //// test let tempFolder = createTempDirectory () let path = tempFolder </> "test.txt" let inline lockFile () = async { trace Debug (fun () -> "_1") getLocals use stream = new System.IO.FileStream ( path, System.IO.FileMode.Open, System.IO.FileAccess.ReadWrite, System.IO.FileShare.None ) trace Debug (fun () -> "_2") getLocals do! Async.Sleep 2000 trace Debug (fun () -> "_3") getLocals stream.Seek (0L, SeekOrigin.Begin) |> ignore trace Debug (fun () -> "_4") getLocals stream.WriteByte 49uy trace Debug (fun () -> "_5") getLocals stream.Flush () trace Debug (fun () -> "_6") getLocals } async { trace Debug (fun () -> "1") getLocals do! "0" |> writeAllTextAsync path trace Debug (fun () -> "2") getLocals let! child = lockFile () |> Async.StartChild trace Debug (fun () -> "3") getLocals do! Async.Sleep 1 trace Debug (fun () -> "4") getLocals let! retries = path |> waitForFileAccess None trace Debug (fun () -> "5") getLocals let! text = path |> readAllTextAsync trace Debug (fun () -> "6") getLocals do! child trace Debug (fun () -> "7") getLocals return retries, text } |> Async.runWithTimeout 3000 |> function | Some (retries, text) -> retries |> _isBetween (if Runtime.isWindows () then 100 else 100) (if Runtime.isWindows () then 150 else 200) text |> _assert_eq "1" true | _ -> false |> _assert_eq true ╭─[ 2.29s - stdout ]───────────────────────────────────────────────────────────╮ │ 00:00:00 #1 [Debug] 1 │ │ 00:00:00 #2 [Debug] 2 │ │ 00:00:00 #3 [Debug] _1 │ │ 00:00:00 #4 [Debug] 3 │ │ 00:00:00 #5 [Debug] _2 │ │ 00:00:00 #6 [Debug] 4 │ │ 00:00:00 #7 [Debug] waitForFileAccess / path: test.txt / ex: │ │ System.IO.IOException: The process cannot access the file │ │ '/tmp/!dotnet-repl/20240320-1220-2508-0871-07cbe84e3739/test.txt' because it │ │ is being used by another process. │ │ 00:00:01 #8 [Debug] waitForFileAccess / path: test.txt / ex: │ │ System.IO.IOException: The process cannot access the file │ │ '/tmp/!dotnet-repl/20240320-1220-2508-0871-07cbe84e3739/test.txt' because it │ │ is being used by another process. │ │ 00:00:02 #9 [Debug] _3 │ │ 00:00:02 #10 [Debug] _4 │ │ 00:00:02 #11 [Debug] _5 │ │ 00:00:02 #12 [Debug] _6 │ │ 00:00:02 #13 [Debug] 5 │ │ 00:00:02 #14 [Debug] 6 │ │ 00:00:02 #15 [Debug] 7 │ │ 167 │ │ 167 │ │ 167 │ │ 1 │ │ True │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## readAllTextRetryAsync │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let inline readAllTextRetryAsync fullPath = let rec loop retry = async { try if retry > 0 then do! fullPath |> waitForFileAccess (Some ( System.IO.FileAccess.Read, System.IO.FileShare.Read )) |> Async.runWithTimeoutAsync 1000 |> Async.Ignore return! fullPath |> readAllTextAsync |> Async.map Some with ex -> let getLocals () = $"retry: {retry} / ex: {ex |> printException} / {getLocals ()}" trace Debug (fun () -> $"watchWithFilter / readContent") getLocals if retry = 0 then return! loop (retry + 1) else return None } loop 0 ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## deleteDirectoryAsync │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let inline deleteDirectoryAsync path = let rec loop retry = async { try System.IO.Directory.Delete (path, true) return retry with ex -> if retry % 100 = 0 then let getLocals () = $"path: {path |> System.IO.Path.GetFileName} / ex: {ex |> printException} / {getLocals ()}" trace Debug (fun () -> "deleteDirectoryAsync") getLocals do! Async.Sleep 10 return! loop (retry + 1) } loop 0 ── fsharp ────────────────────────────────────────────────────────────────────── //// test let tempFolder = createTempDirectory () let path = tempFolder </> "test" let inline lockDirectory () = async { trace Debug (fun () -> "_1") getLocals System.IO.File.WriteAllText (path </> "test.txt", "0") use _ = new System.IO.FileStream ( path </> "test.txt", System.IO.FileMode.Open, System.IO.FileAccess.ReadWrite, System.IO.FileShare.None ) trace Debug (fun () -> "_2") getLocals do! Async.Sleep 2000 trace Debug (fun () -> "_3") getLocals } async { trace Debug (fun () -> "1") getLocals Directory.CreateDirectory path |> ignore trace Debug (fun () -> "2") getLocals let! child = lockDirectory () |> Async.StartChild trace Debug (fun () -> "3") getLocals do! Async.Sleep 60 trace Debug (fun () -> "4") getLocals let! retries = deleteDirectoryAsync path trace Debug (fun () -> "5") getLocals do! child trace Debug (fun () -> "6") getLocals return retries } |> Async.runWithTimeout 3000 |> function | Some retries -> retries |> _isBetween (if Runtime.isWindows () then 100 else 0) (if Runtime.isWindows () then 150 else 0) true | _ -> false |> _assert_eq true ╭─[ 2.22s - stdout ]───────────────────────────────────────────────────────────╮ │ 00:00:02 #16 [Debug] 1 │ │ 00:00:02 #17 [Debug] 2 │ │ 00:00:02 #18 [Debug] 3 │ │ 00:00:02 #19 [Debug] _1 │ │ 00:00:02 #20 [Debug] _2 │ │ 00:00:02 #21 [Debug] 4 │ │ 00:00:02 #22 [Debug] 5 │ │ 00:00:04 #23 [Debug] _3 │ │ 00:00:04 #24 [Debug] 6 │ │ 0 │ │ 0 │ │ 0 │ │ True │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## deleteFileAsync │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let inline deleteFileAsync path = let rec loop retry = async { try System.IO.File.Delete path return retry with ex -> if retry % 100 = 0 then let getLocals () = $"path: {path |> System.IO.Path.GetFileName} / ex: {ex |> printException} / {getLocals ()}" trace Warning (fun () -> "deleteFileAsync") getLocals do! Async.Sleep 10 return! loop (retry + 1) } loop 0 ── fsharp ────────────────────────────────────────────────────────────────────── //// test let tempFolder = createTempDirectory () let path = tempFolder </> "test.txt" let inline lockFile () = async { trace Debug (fun () -> "_1") getLocals use _ = new System.IO.FileStream ( path, System.IO.FileMode.Open, System.IO.FileAccess.ReadWrite, System.IO.FileShare.None ) trace Debug (fun () -> "_2") getLocals do! Async.Sleep 2000 trace Debug (fun () -> "_3") getLocals } async { trace Debug (fun () -> "1") getLocals do! "0" |> writeAllTextAsync path trace Debug (fun () -> "2") getLocals let! child = lockFile () |> Async.StartChild trace Debug (fun () -> "3") getLocals do! Async.Sleep 1 trace Debug (fun () -> "4") getLocals let! retries = deleteFileAsync path trace Debug (fun () -> "5") getLocals do! child trace Debug (fun () -> "6") getLocals return retries } |> Async.runWithTimeout 3000 |> function | Some retries -> retries |> _isBetween (if Runtime.isWindows () then 100 else 0) (if Runtime.isWindows () then 150 else 0) true | _ -> false |> _assert_eq true ╭─[ 2.13s - stdout ]───────────────────────────────────────────────────────────╮ │ 00:00:04 #25 [Debug] 1 │ │ 00:00:04 #26 [Debug] 2 │ │ 00:00:04 #27 [Debug] 3 │ │ 00:00:04 #28 [Debug] _1 │ │ 00:00:04 #29 [Debug] _2 │ │ 00:00:04 #30 [Debug] 4 │ │ 00:00:04 #31 [Debug] 5 │ │ 00:00:06 #32 [Debug] _3 │ │ 00:00:06 #33 [Debug] 6 │ │ 0 │ │ 0 │ │ 0 │ │ True │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## moveFileAsync │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let inline moveFileAsync newPath oldPath = let rec loop retry = async { try System.IO.File.Move (oldPath, newPath) return retry with ex -> if retry % 100 = 0 then let getLocals () = $"oldPath: {oldPath |> System.IO.Path.GetFileName} / newPath: {newPath |> System.IO.Path.GetFileName} / ex: {ex |> printException} / {getLocals ()}" trace Warning (fun () -> "moveFileAsync") getLocals do! Async.Sleep 10 return! loop (retry + 1) } loop 0 ── fsharp ────────────────────────────────────────────────────────────────────── //// test let tempFolder = createTempDirectory () let path = tempFolder </> "test.txt" let newPath = tempFolder </> "test2.txt" let inline lockFile () = async { trace Debug (fun () -> "_1") getLocals use _ = new System.IO.FileStream ( path, System.IO.FileMode.Open, System.IO.FileAccess.ReadWrite, System.IO.FileShare.None ) trace Debug (fun () -> "_2") getLocals do! Async.Sleep 2000 trace Debug (fun () -> "_3") getLocals } async { trace Debug (fun () -> "1") getLocals do! "0" |> writeAllTextAsync path trace Debug (fun () -> "2") getLocals let! child = lockFile () |> Async.StartChild trace Debug (fun () -> "3") getLocals do! Async.Sleep 1 trace Debug (fun () -> "4") getLocals let! retries1 = path |> moveFileAsync newPath trace Debug (fun () -> "5") getLocals let! retries2 = newPath |> waitForFileAccess None trace Debug (fun () -> "6") getLocals let! text = newPath |> readAllTextAsync trace Debug (fun () -> "7") getLocals do! child trace Debug (fun () -> "8") getLocals return retries1, retries2, text } |> Async.runWithTimeout 3000 |> function | Some (retries1, retries2, text) -> retries1 |> _isBetween (if Runtime.isWindows () then 100 else 0) (if Runtime.isWindows () then 150 else 0) retries2 |> _isBetween (if Runtime.isWindows () then 0 else 100) (if Runtime.isWindows () then 0 else 200) text |> _assert_eq "0" true | _ -> false |> _assert_eq true ╭─[ 2.16s - stdout ]───────────────────────────────────────────────────────────╮ │ 00:00:06 #34 [Debug] 1 │ │ 00:00:06 #35 [Debug] 2 │ │ 00:00:06 #36 [Debug] 3 │ │ 00:00:06 #37 [Debug] _1 │ │ 00:00:06 #38 [Debug] _2 │ │ 00:00:06 #39 [Debug] 4 │ │ 00:00:06 #40 [Debug] 5 │ │ 00:00:06 #41 [Debug] waitForFileAccess / path: test2.txt / ex: │ │ System.IO.IOException: The process cannot access the file │ │ '/tmp/!dotnet-repl/20240320-1220-3192-9260-906aa6fd13ed/test2.txt' because │ │ it is being used by another process. │ │ 00:00:08 #42 [Debug] waitForFileAccess / path: test2.txt / ex: │ │ System.IO.IOException: The process cannot access the file │ │ '/tmp/!dotnet-repl/20240320-1220-3192-9260-906aa6fd13ed/test2.txt' because │ │ it is being used by another process. │ │ 00:00:08 #43 [Debug] _3 │ │ 00:00:08 #44 [Debug] 6 │ │ 00:00:08 #45 [Debug] 7 │ │ 00:00:08 #46 [Debug] 8 │ │ 0 │ │ 0 │ │ 0 │ │ 167 │ │ 167 │ │ 167 │ │ 0 │ │ True │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## watchDirectory │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── [[<RequireQualifiedAccess>]] type FileSystemChangeType = | Failure | Changed | Created | Deleted | Renamed [[<RequireQualifiedAccess>]] type FileSystemChange = | Failure of exn: exn | Changed of path: string * content: string option | Created of path: string * content: string option | Deleted of path: string | Renamed of oldPath: string * (string * string option) let inline watchDirectoryWithFilter filter shouldReadContent path = let fullPath = path |> System.IO.Path.GetFullPath let getLocals () = $"filter: {filter} / {getLocals ()}" let watcher = new System.IO.FileSystemWatcher ( Path = fullPath, NotifyFilter = filter, EnableRaisingEvents = true, IncludeSubdirectories = true ) let inline getEventPath (path : string) = path |> String.trim |> String.replace fullPath "" |> String.trimStart [[| '/'; '\\' |]] let inline ticks () = System.DateTime.UtcNow.Ticks let changedStream = AsyncSeq.subscribeEvent watcher.Changed (fun event -> ticks (), [[ FileSystemChange.Changed (getEventPath event.FullPath, None) ]] ) let deletedStream = AsyncSeq.subscribeEvent watcher.Deleted (fun event -> ticks (), [[ FileSystemChange.Deleted (getEventPath event.FullPath) ]] ) let createdStream = AsyncSeq.subscribeEvent watcher.Created (fun event -> let path = getEventPath event.FullPath ticks (), [[ FileSystemChange.Created (path, None) if Runtime.isWindows () then FileSystemChange.Changed (path, None) ]]) let renamedStream = AsyncSeq.subscribeEvent watcher.Renamed (fun event -> ticks (), [[ FileSystemChange.Renamed ( getEventPath event.OldFullPath, (getEventPath event.FullPath, None) ) ]] ) let failureStream = AsyncSeq.subscribeEvent watcher.Error (fun event -> ticks (), [[ FileSystemChange.Failure (event.GetException ()) ]]) let stream = [[ changedStream deletedStream createdStream renamedStream failureStream ]] |> FSharp.Control.AsyncSeq.mergeAll |> FSharp.Control.AsyncSeq.map (fun (t, events) -> events |> List.fold (fun (i, events) event -> i + 1L, (t + i, event) :: events) (0L, [[]]) |> snd |> List.rev ) |> FSharp.Control.AsyncSeq.concatSeq |> FSharp.Control.AsyncSeq.mapAsyncParallel (fun (t, event) -> async { match shouldReadContent event, event with | true, FileSystemChange.Changed (path, _) -> do! Async.Sleep 5 let! content = fullPath </> path |> readAllTextRetryAsync return t, FileSystemChange.Changed (path, content) | true, FileSystemChange.Created (path, _) -> do! Async.Sleep 5 let! content = fullPath </> path |> readAllTextRetryAsync return t, FileSystemChange.Created (path, content) | true, FileSystemChange.Renamed (oldPath, (newPath, _)) -> let! content = fullPath </> newPath |> readAllTextRetryAsync return t, FileSystemChange.Renamed (oldPath, (newPath, content)) | _ -> return t, event }) let disposable = newDisposable (fun () -> trace Debug (fun () -> "watchWithFilter / Disposing watch stream") getLocals watcher.EnableRaisingEvents <- false watcher.Dispose () ) stream, disposable let inline watchDirectory path = watchDirectoryWithFilter (System.IO.NotifyFilters.FileName // ||| System.IO.NotifyFilters.DirectoryName // ||| System.IO.NotifyFilters.Attributes //// ||| System.IO.NotifyFilters.Size ||| System.IO.NotifyFilters.LastWrite //// ||| System.IO.NotifyFilters.LastAccess // ||| System.IO.NotifyFilters.CreationTime // ||| System.IO.NotifyFilters.Security ) path ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ### testEventsRaw (test) │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── //// test let inline testEventsRaw (watchFn : (_ -> bool) -> string -> FSharp.Control.AsyncSeq<int64 * FileSystemChange> * IDisposable) write = let tempDirectory = createTempDirectory () let stream, disposable = watchFn (fun _ -> true) tempDirectory let events = System.Collections.Concurrent.ConcurrentBag () let inline iter () = stream |> FSharp.Control.AsyncSeq.iterAsyncParallel (fun event -> async { events.Add event }) let run = async { let! _ = iter () |> Async.StartChild do! Async.Sleep 250 return! write tempDirectory } try run |> Async.runWithTimeout 60000 |> _assert_eq (Some ()) finally disposable.Dispose () deleteDirectoryAsync tempDirectory |> Async.Ignore |> Async.RunSynchronously let eventsLog = events |> Seq.toList |> List.sortBy fst |> List.fold (fun (prev, acc) (ticks, event) -> ticks, (ticks, (if prev = 0L then 0L else ticks - prev), event) :: acc ) (0L, [[]]) |> snd |> List.rev |> List.map (fun (diff, n, event) -> let text = $"{n} / {diff} / {event}" if text |> String.length <= 100 then text else text |> String.substring 0 100 |> String.replace "\n" "" ) |> String.concat "\n" let getLocals () = $"eventsLog: \n{eventsLog} / {getLocals ()}" trace Debug (fun () -> "testEventsRaw") getLocals events |> Seq.toList |> List.sortBy fst |> List.map snd |> List.fold (fun acc event -> match acc, event with | FileSystemChange.Changed (lastPath, Some lastContent) as lastEvent :: acc, FileSystemChange.Changed (path, Some content) when lastPath = path && content |> String.startsWith lastContent -> event :: acc | _ -> event :: acc ) [[]] |> List.rev ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ #### fast (test) │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── //// test let inline write path = async { let n = 2 for i = 1 to n do do! $"a{i}" |> writeAllTextAsync (path </> $"file{i}.txt") do! Async.Sleep 250 for i = 1 to n do do! $"b{i}" |> writeAllTextAsync (path </> $"file{i}.txt") do! Async.Sleep 250 for i = 1 to n do do! path </> $"file{i}.txt" |> moveFileAsync (path </> $"file_{i}.txt") |> Async.Ignore do! Async.Sleep 250 for i = 1 to n do do! $"c{i}" |> writeAllTextAsync (path </> $"file_{i}.txt") do! Async.Sleep 250 for i = 1 to n do do! deleteFileAsync (path </> $"file_{i}.txt") |> Async.Ignore do! Async.Sleep 250 } let inline run () = let events = testEventsRaw watchDirectory write events |> _sequenceEqual [[ FileSystemChange.Created ("file1.txt", Some "a1") FileSystemChange.Changed ("file1.txt", Some "a1") FileSystemChange.Created ("file2.txt", Some "a2") FileSystemChange.Changed ("file2.txt", Some "a2") FileSystemChange.Changed ("file1.txt", Some "b1") FileSystemChange.Changed ("file2.txt", Some "b2") FileSystemChange.Renamed ("file1.txt", ("file_1.txt", Some "b1")) FileSystemChange.Renamed ("file2.txt", ("file_2.txt", Some "b2")) FileSystemChange.Changed ("file_1.txt", Some "c1") FileSystemChange.Changed ("file_2.txt", Some "c2") FileSystemChange.Deleted "file_1.txt" FileSystemChange.Deleted "file_2.txt" ]] run |> retryFn 3 |> _assert_eq (Some ()) ╭─[ 3.44s - stdout ]───────────────────────────────────────────────────────────╮ │ FSharpOption<Unit> │ │ Value: <null> │ │ 00:00:13 #47 [Debug] watchWithFilter / Disposing watch stream / filter: │ │ FileName, LastWrite │ │ 00:00:13 #48 [Debug] testEventsRaw / eventsLog: │ │ 0 / 638465340370268991 / Created ("file1.txt", Some "a1") │ │ 13006 / 638465340370281997 / Changed ("file1.txt", Some "a1") │ │ 1487 / 638465340370283484 / Created ("file2.txt", Some "a2") │ │ 68 / 638465340370283552 / Changed ("file2.txt", Some "a2") │ │ 2527167 / 638465340372810719 / Changed ("file1.txt", Some "b1") │ │ 710 / 638465340372811429 / Changed ("file1.txt", Some "b1") │ │ 4783 / 638465340372816212 / Changed ("file2.txt", Some "b2") │ │ 177 / 638465340372816389 / Changed ("file2.txt", Some "b2") │ │ 2536361 / 638465340375352750 / Renamed ("file1.txt", ("file_1.txt", Some │ │ "b1")) │ │ 1496 / 638465340375354246 / Renamed ("file2.txt", ("file_2.txt", Some "b2")) │ │ 2548892 / 638465340377903138 / Changed ("file_1.txt", Some "c1") │ │ 680 / 638465340377903818 / Changed ("file_1.txt", Some "c1") │ │ 4905 / 638465340377908723 / Changed ("file_2.txt", Some "c2") │ │ 199 / 638465340377908922 / Changed ("file_2.txt", Some "c2") │ │ 2554014 / 638465340380462936 / Deleted "file_1.txt" │ │ 1065 / 638465340380464001 / Deleted "file_2.txt" │ │ FSharpList<FileSystemChange> │ │ - path: file1.txt │ │ content: FSharpOption<String> │ │ Value: a1 │ │ IsFailure: False │ │ IsChanged: False │ │ IsCreated: True │ │ IsDeleted: False │ │ IsRenamed: False │ │ - path: file1.txt │ │ content: FSharpOption<String> │ │ Value: a1 │ │ IsFailure: False │ │ IsChanged: True │ │ IsCreated: False │ │ IsDeleted: False │ │ IsRenamed: False │ │ - path: file2.txt │ │ content: FSharpOption<String> │ │ Value: a2 │ │ IsFailure: False │ │ IsChanged: False │ │ IsCreated: True │ │ IsDeleted: False │ │ IsRenamed: False │ │ - path: file2.txt │ │ content: FSharpOption<String> │ │ Value: a2 │ │ IsFailure: False │ │ IsChanged: True │ │ IsCreated: False │ │ IsDeleted: False │ │ IsRenamed: False │ │ - path: file1.txt │ │ content: FSharpOption<String> │ │ Value: b1 │ │ IsFailure: False │ │ IsChanged: True │ │ IsCreated: False │ │ IsDeleted: False │ │ IsRenamed: False │ │ - path: file2.txt │ │ content: FSharpOption<String> │ │ Value: b2 │ │ IsFailure: False │ │ IsChanged: True │ │ IsCreated: False │ │ IsDeleted: False │ │ IsRenamed: False │ │ - oldPath: file1.txt │ │ Item2: - file_1.txt │ │ - FSharpOption<String> │ │ Value: b1 │ │ - IsFailure: False │ │ IsChanged: False │ │ IsCreated: False │ │ IsDeleted: False │ │ IsRenamed: True │ │ - oldPath: file2.txt │ │ Item2: - file_2.txt │ │ - FSharpOption<String> │ │ Value: b2 │ │ - IsFailure: False │ │ IsChanged: False │ │ IsCreated: False │ │ IsDeleted: False │ │ IsRenamed: True │ │ - path: file_1.txt │ │ content: FSharpOption<String> │ │ Value: c1 │ │ IsFailure: False │ │ IsChanged: True │ │ IsCreated: False │ │ IsDeleted: False │ │ IsRenamed: False │ │ - path: file_2.txt │ │ content: FSharpOption<String> │ │ Value: c2 │ │ IsFailure: False │ │ IsChanged: True │ │ IsCreated: False │ │ IsDeleted: False │ │ IsRenamed: False │ │ - path: file_1.txt │ │ IsFailure: False │ │ IsChanged: False │ │ IsCreated: False │ │ IsDeleted: True │ │ IsRenamed: False │ │ - path: file_2.txt │ │ IsFailure: False │ │ IsChanged: False │ │ IsCreated: False │ │ IsDeleted: True │ │ IsRenamed: False │ │ FSharpOption<Unit> │ │ Value: <null> │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ #### slow (test) │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── //// test let inline write path = async { let n = 2 let contents = [[ 1 .. n ]] |> List.map (string >> String.replicate 1_000_000) for i = 1 to n do do! $"{contents.[[i - 1]]}a" |> writeAllTextAsync (path </> $"file{i}.txt") do! Async.Sleep 1500 for i = 1 to n do do! $"{contents.[[i - 1]]}b" |> writeAllTextAsync (path </> $"file{i}.txt") do! Async.Sleep 1500 for i = 1 to n do do! path </> $"file{i}.txt" |> moveFileAsync (path </> $"file_{i}.txt") |> Async.Ignore do! Async.Sleep 1500 for i = 1 to n do do! $"{contents.[[i - 1]]}c" |> writeAllTextAsync (path </> $"file_{i}.txt") do! Async.Sleep 1500 for i = 1 to n do do! deleteFileAsync (path </> $"file_{i}.txt") |> Async.Ignore do! Async.Sleep 1500 } let inline run () = let events = testEventsRaw watchDirectory write |> List.map (function | FileSystemChange.Changed (path, Some content) -> FileSystemChange.Changed (path, content |> Seq.distinct |> Seq.map string |> String.concat "" |> Some) | FileSystemChange.Created (path, Some content) -> FileSystemChange.Created (path, content |> Seq.distinct |> Seq.map string |> String.concat "" |> Some) | FileSystemChange.Renamed (oldPath, (newPath, Some content)) -> FileSystemChange.Renamed ( oldPath, (newPath, content |> Seq.distinct |> Seq.map string |> String.concat "" |> Some) ) | event -> event ) events |> _sequenceEqual [[ FileSystemChange.Created ("file1.txt", Some "1a") FileSystemChange.Changed ("file1.txt", Some "1a") FileSystemChange.Created ("file2.txt", Some "2a") FileSystemChange.Changed ("file2.txt", Some "2a") FileSystemChange.Changed ("file1.txt", Some "1b") FileSystemChange.Changed ("file2.txt", Some "2b") FileSystemChange.Renamed ("file1.txt", ("file_1.txt", Some "1b")) FileSystemChange.Renamed ("file2.txt", ("file_2.txt", Some "2b")) FileSystemChange.Changed ("file_1.txt", Some "1c") FileSystemChange.Changed ("file_2.txt", Some "2c") FileSystemChange.Deleted "file_1.txt" FileSystemChange.Deleted "file_2.txt" ]] run |> retryFn 5 |> _assert_eq (Some ()) ╭─[ 13.60s - stdout ]──────────────────────────────────────────────────────────╮ │ FSharpOption<Unit> │ │ Value: <null> │ │ 00:00:23 #49 [Debug] watchWithFilter / Disposing watch stream / filter: │ │ FileName, LastWrite │ │ 00:00:26 #50 [Debug] testEventsRaw / eventsLog: │ │ 0 / 638465340410558271 / Created ("file1.txt", Some │ │ "1111111111111111111111111111111111111 │ │ 2842 / 638465340410561113 / Changed ("file1.txt", Some │ │ "1111111111111111111111111111111111 │ │ 230 / 638465340410561343 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 231 / 638465340410561574 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 226 / 638465340410561800 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 232 / 638465340410562032 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 314 / 638465340410562346 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 81 / 638465340410562427 / Changed ("file1.txt", Some │ │ "111111111111111111111111111111111111 │ │ 265 / 638465340410562692 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 224 / 638465340410562916 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 151 / 638465340410563067 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 497 / 638465340410563564 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 203 / 638465340410563767 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 231 / 638465340410563998 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 255 / 638465340410564253 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 221 / 638465340410564474 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 120 / 638465340410564594 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 263 / 638465340410564857 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 109 / 638465340410564966 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 275 / 638465340410565241 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 138 / 638465340410565379 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 240 / 638465340410565619 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 250 / 638465340410565869 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 166 / 638465340410566035 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 279 / 638465340410566314 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 274 / 638465340410566588 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 199 / 638465340410566787 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 243 / 638465340410567030 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 152 / 638465340410567182 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 258 / 638465340410567440 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 267 / 638465340410567707 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 240 / 638465340410567947 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 185 / 638465340410568132 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 189 / 638465340410568321 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 235 / 638465340410568556 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 239 / 638465340410568795 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 202 / 638465340410568997 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 267 / 638465340410569264 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 206 / 638465340410569470 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 191 / 638465340410569661 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 211 / 638465340410569872 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 196 / 638465340410570068 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 236 / 638465340410570304 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 135 / 638465340410570439 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 241 / 638465340410570680 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 173 / 638465340410570853 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 228 / 638465340410571081 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 153 / 638465340410571234 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 239 / 638465340410571473 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 193 / 638465340410571666 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 204 / 638465340410571870 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 131 / 638465340410572001 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 233 / 638465340410572234 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 189 / 638465340410572423 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 212 / 638465340410572635 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 189 / 638465340410572824 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 200 / 638465340410573024 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 238 / 638465340410573262 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 169 / 638465340410573431 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 196 / 638465340410573627 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 194 / 638465340410573821 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 1147 / 638465340410574968 / Changed ("file1.txt", Some │ │ "1111111111111111111111111111111111 │ │ 215 / 638465340410575183 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 313 / 638465340410575496 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 176 / 638465340410575672 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 347 / 638465340410576019 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 799 / 638465340410576818 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 50 / 638465340410576868 / Changed ("file1.txt", Some │ │ "111111111111111111111111111111111111 │ │ 214 / 638465340410577082 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 39 / 638465340410577121 / Changed ("file1.txt", Some │ │ "111111111111111111111111111111111111 │ │ 196 / 638465340410577317 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 189 / 638465340410577506 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 159 / 638465340410577665 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 159 / 638465340410577824 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 166 / 638465340410577990 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 178 / 638465340410578168 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 187 / 638465340410578355 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 186 / 638465340410578541 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 178 / 638465340410578719 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 162 / 638465340410578881 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 221 / 638465340410579102 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 151 / 638465340410579253 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 166 / 638465340410579419 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 161 / 638465340410579580 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 186 / 638465340410579766 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 156 / 638465340410579922 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 159 / 638465340410580081 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 155 / 638465340410580236 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 157 / 638465340410580393 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 172 / 638465340410580565 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 158 / 638465340410580723 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 178 / 638465340410580901 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 171 / 638465340410581072 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 101 / 638465340410581173 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 9697 / 638465340410590870 / Created ("file2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 128 / 638465340410590998 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 272 / 638465340410591270 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 32313 / 638465340410623583 / Changed ("file2.txt", Some │ │ "222222222222222222222222222222222 │ │ 15004884 / 638465340425628467 / Changed ("file1.txt", Some │ │ "111111111111111111111111111111 │ │ 269 / 638465340425628736 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 1084 / 638465340425629820 / Changed ("file1.txt", Some │ │ "1111111111111111111111111111111111 │ │ 950 / 638465340425630770 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 192 / 638465340425630962 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 244 / 638465340425631206 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 200 / 638465340425631406 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 249 / 638465340425631655 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 222 / 638465340425631877 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 234 / 638465340425632111 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 230 / 638465340425632341 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 210 / 638465340425632551 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 203 / 638465340425632754 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 193 / 638465340425632947 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 198 / 638465340425633145 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 224 / 638465340425633369 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 240 / 638465340425633609 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 250 / 638465340425633859 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 102 / 638465340425633961 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 204 / 638465340425634165 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 188 / 638465340425634353 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 294 / 638465340425634647 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 337 / 638465340425634984 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 212 / 638465340425635196 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 162 / 638465340425635358 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 195 / 638465340425635553 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 235 / 638465340425635788 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 215 / 638465340425636003 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 201 / 638465340425636204 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 512 / 638465340425636716 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 254 / 638465340425636970 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 293 / 638465340425637263 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 269 / 638465340425637532 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 214 / 638465340425637746 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 221 / 638465340425637967 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 218 / 638465340425638185 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 167 / 638465340425638352 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 312 / 638465340425638664 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 239 / 638465340425638903 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 44 / 638465340425638947 / Changed ("file1.txt", Some │ │ "111111111111111111111111111111111111 │ │ 213 / 638465340425639160 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 213 / 638465340425639373 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 246 / 638465340425639619 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 247 / 638465340425639866 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 191 / 638465340425640057 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 163 / 638465340425640220 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 153 / 638465340425640373 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 211 / 638465340425640584 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 231 / 638465340425640815 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 284 / 638465340425641099 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 210 / 638465340425641309 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 207 / 638465340425641516 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 44 / 638465340425641560 / Changed ("file1.txt", Some │ │ "111111111111111111111111111111111111 │ │ 289 / 638465340425641849 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 259 / 638465340425642108 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 219 / 638465340425642327 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 40 / 638465340425642367 / Changed ("file1.txt", Some │ │ "111111111111111111111111111111111111 │ │ 241 / 638465340425642608 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 100 / 638465340425642708 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 210 / 638465340425642918 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 201 / 638465340425643119 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 203 / 638465340425643322 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 197 / 638465340425643519 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 147 / 638465340425643666 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 210 / 638465340425643876 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 250 / 638465340425644126 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 253 / 638465340425644379 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 191 / 638465340425644570 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 93 / 638465340425644663 / Changed ("file1.txt", Some │ │ "111111111111111111111111111111111111 │ │ 207 / 638465340425644870 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 37 / 638465340425644907 / Changed ("file1.txt", Some │ │ "111111111111111111111111111111111111 │ │ 244 / 638465340425645151 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 145 / 638465340425645296 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 167 / 638465340425645463 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 178 / 638465340425645641 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 191 / 638465340425645832 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 156 / 638465340425645988 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 99 / 638465340425646087 / Changed ("file1.txt", Some │ │ "111111111111111111111111111111111111 │ │ 227 / 638465340425646314 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 233 / 638465340425646547 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 237 / 638465340425646784 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 249 / 638465340425647033 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 201 / 638465340425647234 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 56 / 638465340425647290 / Changed ("file1.txt", Some │ │ "111111111111111111111111111111111111 │ │ 219 / 638465340425647509 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 201 / 638465340425647710 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 160 / 638465340425647870 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 159 / 638465340425648029 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 158 / 638465340425648187 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 201 / 638465340425648388 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 199 / 638465340425648587 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 194 / 638465340425648781 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 41 / 638465340425648822 / Changed ("file1.txt", Some │ │ "111111111111111111111111111111111111 │ │ 220 / 638465340425649042 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 190 / 638465340425649232 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 201 / 638465340425649433 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 210 / 638465340425649643 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 38 / 638465340425649681 / Changed ("file1.txt", Some │ │ "111111111111111111111111111111111111 │ │ 240 / 638465340425649921 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 199 / 638465340425650120 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 184 / 638465340425650304 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 182 / 638465340425650486 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 500 / 638465340425650986 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 203 / 638465340425651189 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 229 / 638465340425651418 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 210 / 638465340425651628 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 215 / 638465340425651843 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 45 / 638465340425651888 / Changed ("file1.txt", Some │ │ "111111111111111111111111111111111111 │ │ 189 / 638465340425652077 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 188 / 638465340425652265 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 201 / 638465340425652466 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 41 / 638465340425652507 / Changed ("file1.txt", Some │ │ "111111111111111111111111111111111111 │ │ 229 / 638465340425652736 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 191 / 638465340425652927 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 246 / 638465340425653173 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 212 / 638465340425653385 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 190 / 638465340425653575 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 194 / 638465340425653769 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 189 / 638465340425653958 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 252 / 638465340425654210 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 197 / 638465340425654407 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 98 / 638465340425654505 / Changed ("file1.txt", Some │ │ "111111111111111111111111111111111111 │ │ 208 / 638465340425654713 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 226 / 638465340425654939 / Changed ("file1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 53 / 638465340425654992 / Changed ("file1.txt", Some │ │ "111111111111111111111111111111111111 │ │ 25444 / 638465340425680436 / Changed ("file2.txt", Some │ │ "222222222222222222222222222222222 │ │ 102 / 638465340425680538 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 588 / 638465340425681126 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 230 / 638465340425681356 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 215 / 638465340425681571 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 177 / 638465340425681748 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 101 / 638465340425681849 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 230 / 638465340425682079 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 128 / 638465340425682207 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 250 / 638465340425682457 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 251 / 638465340425682708 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 24 / 638465340425682732 / Changed ("file2.txt", Some │ │ "222222222222222222222222222222222222 │ │ 221 / 638465340425682953 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 262 / 638465340425683215 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 228 / 638465340425683443 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 201 / 638465340425683644 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 162 / 638465340425683806 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 200 / 638465340425684006 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 151 / 638465340425684157 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 242 / 638465340425684399 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 276 / 638465340425684675 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 143 / 638465340425684818 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 130 / 638465340425684948 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 204 / 638465340425685152 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 120 / 638465340425685272 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 303 / 638465340425685575 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 206 / 638465340425685781 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 165 / 638465340425685946 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 145 / 638465340425686091 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 200 / 638465340425686291 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 128 / 638465340425686419 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 203 / 638465340425686622 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 41 / 638465340425686663 / Changed ("file2.txt", Some │ │ "222222222222222222222222222222222222 │ │ 342 / 638465340425687005 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 252 / 638465340425687257 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 141 / 638465340425687398 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 150 / 638465340425687548 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 188 / 638465340425687736 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 202 / 638465340425687938 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 147 / 638465340425688085 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 41898 / 638465340425729983 / Changed ("file2.txt", Some │ │ "222222222222222222222222222222222 │ │ 86 / 638465340425730069 / Changed ("file2.txt", Some │ │ "222222222222222222222222222222222222 │ │ 236 / 638465340425730305 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 164 / 638465340425730469 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 209 / 638465340425730678 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 166 / 638465340425730844 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 191 / 638465340425731035 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 227 / 638465340425731262 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 235 / 638465340425731497 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 222 / 638465340425731719 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 213 / 638465340425731932 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 275 / 638465340425732207 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 235 / 638465340425732442 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 203 / 638465340425732645 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 228 / 638465340425732873 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 238 / 638465340425733111 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 208 / 638465340425733319 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 167 / 638465340425733486 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 247 / 638465340425733733 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 173 / 638465340425733906 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 191 / 638465340425734097 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 118 / 638465340425734215 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 253 / 638465340425734468 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 100 / 638465340425734568 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 246 / 638465340425734814 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 184 / 638465340425734998 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 116 / 638465340425735114 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 240 / 638465340425735354 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 128 / 638465340425735482 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 227 / 638465340425735709 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 218 / 638465340425735927 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 107 / 638465340425736034 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 240 / 638465340425736274 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 115 / 638465340425736389 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 240 / 638465340425736629 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 187 / 638465340425736816 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 114 / 638465340425736930 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 272 / 638465340425737202 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 120 / 638465340425737322 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 227 / 638465340425737549 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 202 / 638465340425737751 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 131 / 638465340425737882 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 213 / 638465340425738095 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 184 / 638465340425738279 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 209 / 638465340425738488 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 201 / 638465340425738689 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 209 / 638465340425738898 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 101 / 638465340425738999 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 236 / 638465340425739235 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 206 / 638465340425739441 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 115 / 638465340425739556 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 222 / 638465340425739778 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 210 / 638465340425739988 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 115 / 638465340425740103 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 232 / 638465340425740335 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 185 / 638465340425740520 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 187 / 638465340425740707 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 170 / 638465340425740877 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 206 / 638465340425741083 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 156 / 638465340425741239 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 163 / 638465340425741402 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 275 / 638465340425741677 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 42 / 638465340425741719 / Changed ("file2.txt", Some │ │ "222222222222222222222222222222222222 │ │ 278 / 638465340425741997 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 46 / 638465340425742043 / Changed ("file2.txt", Some │ │ "222222222222222222222222222222222222 │ │ 292 / 638465340425742335 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 135 / 638465340425742470 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 279 / 638465340425742749 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 108 / 638465340425742857 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 237 / 638465340425743094 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 207 / 638465340425743301 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 45 / 638465340425743346 / Changed ("file2.txt", Some │ │ "222222222222222222222222222222222222 │ │ 304 / 638465340425743650 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 44 / 638465340425743694 / Changed ("file2.txt", Some │ │ "222222222222222222222222222222222222 │ │ 295 / 638465340425743989 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 164 / 638465340425744153 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 159 / 638465340425744312 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 150 / 638465340425744462 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 156 / 638465340425744618 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 154 / 638465340425744772 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 154 / 638465340425744926 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 149 / 638465340425745075 / Changed ("file2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 39 / 638465340425745114 / Changed ("file2.txt", Some │ │ "222222222222222222222222222222222222 │ │ 15035902 / 638465340440781016 / Renamed ("file1.txt", ("file_1.txt", │ │ Some "1111111111 │ │ 354 / 638465340440781370 / Renamed ("file2.txt", ("file_2.txt", Some │ │ "222222222222222 │ │ 15065492 / 638465340455846862 / Changed ("file_1.txt", Some │ │ "11111111111111111111111111111 │ │ 899 / 638465340455847761 / Changed ("file_1.txt", Some │ │ "1111111111111111111111111111111111 │ │ 383 / 638465340455848144 / Changed ("file_1.txt", Some │ │ "1111111111111111111111111111111111 │ │ 166 / 638465340455848310 / Changed ("file_1.txt", Some │ │ "1111111111111111111111111111111111 │ │ 146 / 638465340455848456 / Changed ("file_1.txt", Some │ │ "1111111111111111111111111111111111 │ │ 235 / 638465340455848691 / Changed ("file_1.txt", Some │ │ "1111111111111111111111111111111111 │ │ 207 / 638465340455848898 / Changed ("file_1.txt", Some │ │ "1111111111111111111111111111111111 │ │ 151 / 638465340455849049 / Changed ("file_1.txt", Some │ │ "1111111111111111111111111111111111 │ │ 147 / 638465340455849196 / Changed ("file_1.txt", Some │ │ "1111111111111111111111111111111111 │ │ 295 / 638465340455849491 / Changed ("file_1.txt", Some │ │ "1111111111111111111111111111111111 │ │ 212 / 638465340455849703 / Changed ("file_1.txt", Some │ │ "1111111111111111111111111111111111 │ │ 100 / 638465340455849803 / Changed ("file_1.txt", Some │ │ "1111111111111111111111111111111111 │ │ 291 / 638465340455850094 / Changed ("file_1.txt", Some │ │ "1111111111111111111111111111111111 │ │ 29 / 638465340455850123 / Changed ("file_1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 249 / 638465340455850372 / Changed ("file_1.txt", Some │ │ "1111111111111111111111111111111111 │ │ 138 / 638465340455850510 / Changed ("file_1.txt", Some │ │ "1111111111111111111111111111111111 │ │ 89 / 638465340455850599 / Changed ("file_1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 211 / 638465340455850810 / Changed ("file_1.txt", Some │ │ "1111111111111111111111111111111111 │ │ 38 / 638465340455850848 / Changed ("file_1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 246 / 638465340455851094 / Changed ("file_1.txt", Some │ │ "1111111111111111111111111111111111 │ │ 196 / 638465340455851290 / Changed ("file_1.txt", Some │ │ "1111111111111111111111111111111111 │ │ 142 / 638465340455851432 / Changed ("file_1.txt", Some │ │ "1111111111111111111111111111111111 │ │ 201 / 638465340455851633 / Changed ("file_1.txt", Some │ │ "1111111111111111111111111111111111 │ │ 43 / 638465340455851676 / Changed ("file_1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 229 / 638465340455851905 / Changed ("file_1.txt", Some │ │ "1111111111111111111111111111111111 │ │ 136 / 638465340455852041 / Changed ("file_1.txt", Some │ │ "1111111111111111111111111111111111 │ │ 138 / 638465340455852179 / Changed ("file_1.txt", Some │ │ "1111111111111111111111111111111111 │ │ 143 / 638465340455852322 / Changed ("file_1.txt", Some │ │ "1111111111111111111111111111111111 │ │ 142 / 638465340455852464 / Changed ("file_1.txt", Some │ │ "1111111111111111111111111111111111 │ │ 349 / 638465340455852813 / Changed ("file_1.txt", Some │ │ "1111111111111111111111111111111111 │ │ 168 / 638465340455852981 / Changed ("file_1.txt", Some │ │ "1111111111111111111111111111111111 │ │ 246 / 638465340455853227 / Changed ("file_1.txt", Some │ │ "1111111111111111111111111111111111 │ │ 96 / 638465340455853323 / Changed ("file_1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 214 / 638465340455853537 / Changed ("file_1.txt", Some │ │ "1111111111111111111111111111111111 │ │ 34 / 638465340455853571 / Changed ("file_1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 264 / 638465340455853835 / Changed ("file_1.txt", Some │ │ "1111111111111111111111111111111111 │ │ 262 / 638465340455854097 / Changed ("file_1.txt", Some │ │ "1111111111111111111111111111111111 │ │ 38 / 638465340455854135 / Changed ("file_1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 211 / 638465340455854346 / Changed ("file_1.txt", Some │ │ "1111111111111111111111111111111111 │ │ 129 / 638465340455854475 / Changed ("file_1.txt", Some │ │ "1111111111111111111111111111111111 │ │ 180 / 638465340455854655 / Changed ("file_1.txt", Some │ │ "1111111111111111111111111111111111 │ │ 138 / 638465340455854793 / Changed ("file_1.txt", Some │ │ "1111111111111111111111111111111111 │ │ 141 / 638465340455854934 / Changed ("file_1.txt", Some │ │ "1111111111111111111111111111111111 │ │ 135 / 638465340455855069 / Changed ("file_1.txt", Some │ │ "1111111111111111111111111111111111 │ │ 182 / 638465340455855251 / Changed ("file_1.txt", Some │ │ "1111111111111111111111111111111111 │ │ 239 / 638465340455855490 / Changed ("file_1.txt", Some │ │ "1111111111111111111111111111111111 │ │ 31 / 638465340455855521 / Changed ("file_1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 245 / 638465340455855766 / Changed ("file_1.txt", Some │ │ "1111111111111111111111111111111111 │ │ 89 / 638465340455855855 / Changed ("file_1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 260 / 638465340455856115 / Changed ("file_1.txt", Some │ │ "1111111111111111111111111111111111 │ │ 221 / 638465340455856336 / Changed ("file_1.txt", Some │ │ "1111111111111111111111111111111111 │ │ 33 / 638465340455856369 / Changed ("file_1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 251 / 638465340455856620 / Changed ("file_1.txt", Some │ │ "1111111111111111111111111111111111 │ │ 141 / 638465340455856761 / Changed ("file_1.txt", Some │ │ "1111111111111111111111111111111111 │ │ 133 / 638465340455856894 / Changed ("file_1.txt", Some │ │ "1111111111111111111111111111111111 │ │ 139 / 638465340455857033 / Changed ("file_1.txt", Some │ │ "1111111111111111111111111111111111 │ │ 147 / 638465340455857180 / Changed ("file_1.txt", Some │ │ "1111111111111111111111111111111111 │ │ 128 / 638465340455857308 / Changed ("file_1.txt", Some │ │ "1111111111111111111111111111111111 │ │ 239 / 638465340455857547 / Changed ("file_1.txt", Some │ │ "1111111111111111111111111111111111 │ │ 206 / 638465340455857753 / Changed ("file_1.txt", Some │ │ "1111111111111111111111111111111111 │ │ 33 / 638465340455857786 / Changed ("file_1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 242 / 638465340455858028 / Changed ("file_1.txt", Some │ │ "1111111111111111111111111111111111 │ │ 192 / 638465340455858220 / Changed ("file_1.txt", Some │ │ "1111111111111111111111111111111111 │ │ 252 / 638465340455858472 / Changed ("file_1.txt", Some │ │ "1111111111111111111111111111111111 │ │ 263 / 638465340455858735 / Changed ("file_1.txt", Some │ │ "1111111111111111111111111111111111 │ │ 96 / 638465340455858831 / Changed ("file_1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 217 / 638465340455859048 / Changed ("file_1.txt", Some │ │ "1111111111111111111111111111111111 │ │ 175 / 638465340455859223 / Changed ("file_1.txt", Some │ │ "1111111111111111111111111111111111 │ │ 259 / 638465340455859482 / Changed ("file_1.txt", Some │ │ "1111111111111111111111111111111111 │ │ 149 / 638465340455859631 / Changed ("file_1.txt", Some │ │ "1111111111111111111111111111111111 │ │ 209 / 638465340455859840 / Changed ("file_1.txt", Some │ │ "1111111111111111111111111111111111 │ │ 144 / 638465340455859984 / Changed ("file_1.txt", Some │ │ "1111111111111111111111111111111111 │ │ 241 / 638465340455860225 / Changed ("file_1.txt", Some │ │ "1111111111111111111111111111111111 │ │ 132 / 638465340455860357 / Changed ("file_1.txt", Some │ │ "1111111111111111111111111111111111 │ │ 199 / 638465340455860556 / Changed ("file_1.txt", Some │ │ "1111111111111111111111111111111111 │ │ 221 / 638465340455860777 / Changed ("file_1.txt", Some │ │ "1111111111111111111111111111111111 │ │ 146 / 638465340455860923 / Changed ("file_1.txt", Some │ │ "1111111111111111111111111111111111 │ │ 198 / 638465340455861121 / Changed ("file_1.txt", Some │ │ "1111111111111111111111111111111111 │ │ 35 / 638465340455861156 / Changed ("file_1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 221 / 638465340455861377 / Changed ("file_1.txt", Some │ │ "1111111111111111111111111111111111 │ │ 128 / 638465340455861505 / Changed ("file_1.txt", Some │ │ "1111111111111111111111111111111111 │ │ 245 / 638465340455861750 / Changed ("file_1.txt", Some │ │ "1111111111111111111111111111111111 │ │ 33 / 638465340455861783 / Changed ("file_1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 238 / 638465340455862021 / Changed ("file_1.txt", Some │ │ "1111111111111111111111111111111111 │ │ 81 / 638465340455862102 / Changed ("file_1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 260 / 638465340455862362 / Changed ("file_1.txt", Some │ │ "1111111111111111111111111111111111 │ │ 35 / 638465340455862397 / Changed ("file_1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 254 / 638465340455862651 / Changed ("file_1.txt", Some │ │ "1111111111111111111111111111111111 │ │ 181 / 638465340455862832 / Changed ("file_1.txt", Some │ │ "1111111111111111111111111111111111 │ │ 130 / 638465340455862962 / Changed ("file_1.txt", Some │ │ "1111111111111111111111111111111111 │ │ 238 / 638465340455863200 / Changed ("file_1.txt", Some │ │ "1111111111111111111111111111111111 │ │ 36 / 638465340455863236 / Changed ("file_1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 230 / 638465340455863466 / Changed ("file_1.txt", Some │ │ "1111111111111111111111111111111111 │ │ 125 / 638465340455863591 / Changed ("file_1.txt", Some │ │ "1111111111111111111111111111111111 │ │ 256 / 638465340455863847 / Changed ("file_1.txt", Some │ │ "1111111111111111111111111111111111 │ │ 270 / 638465340455864117 / Changed ("file_1.txt", Some │ │ "1111111111111111111111111111111111 │ │ 163 / 638465340455864280 / Changed ("file_1.txt", Some │ │ "1111111111111111111111111111111111 │ │ 130 / 638465340455864410 / Changed ("file_1.txt", Some │ │ "1111111111111111111111111111111111 │ │ 140 / 638465340455864550 / Changed ("file_1.txt", Some │ │ "1111111111111111111111111111111111 │ │ 146 / 638465340455864696 / Changed ("file_1.txt", Some │ │ "1111111111111111111111111111111111 │ │ 141 / 638465340455864837 / Changed ("file_1.txt", Some │ │ "1111111111111111111111111111111111 │ │ 319 / 638465340455865156 / Changed ("file_1.txt", Some │ │ "1111111111111111111111111111111111 │ │ 224 / 638465340455865380 / Changed ("file_1.txt", Some │ │ "1111111111111111111111111111111111 │ │ 144 / 638465340455865524 / Changed ("file_1.txt", Some │ │ "1111111111111111111111111111111111 │ │ 142 / 638465340455865666 / Changed ("file_1.txt", Some │ │ "1111111111111111111111111111111111 │ │ 137 / 638465340455865803 / Changed ("file_1.txt", Some │ │ "1111111111111111111111111111111111 │ │ 187 / 638465340455865990 / Changed ("file_1.txt", Some │ │ "1111111111111111111111111111111111 │ │ 188 / 638465340455866178 / Changed ("file_1.txt", Some │ │ "1111111111111111111111111111111111 │ │ 143 / 638465340455866321 / Changed ("file_1.txt", Some │ │ "1111111111111111111111111111111111 │ │ 194 / 638465340455866515 / Changed ("file_1.txt", Some │ │ "1111111111111111111111111111111111 │ │ 30 / 638465340455866545 / Changed ("file_1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 248 / 638465340455866793 / Changed ("file_1.txt", Some │ │ "1111111111111111111111111111111111 │ │ 140 / 638465340455866933 / Changed ("file_1.txt", Some │ │ "1111111111111111111111111111111111 │ │ 134 / 638465340455867067 / Changed ("file_1.txt", Some │ │ "1111111111111111111111111111111111 │ │ 148 / 638465340455867215 / Changed ("file_1.txt", Some │ │ "1111111111111111111111111111111111 │ │ 126 / 638465340455867341 / Changed ("file_1.txt", Some │ │ "1111111111111111111111111111111111 │ │ 195 / 638465340455867536 / Changed ("file_1.txt", Some │ │ "1111111111111111111111111111111111 │ │ 136 / 638465340455867672 / Changed ("file_1.txt", Some │ │ "1111111111111111111111111111111111 │ │ 138 / 638465340455867810 / Changed ("file_1.txt", Some │ │ "1111111111111111111111111111111111 │ │ 138 / 638465340455867948 / Changed ("file_1.txt", Some │ │ "1111111111111111111111111111111111 │ │ 220 / 638465340455868168 / Changed ("file_1.txt", Some │ │ "1111111111111111111111111111111111 │ │ 29 / 638465340455868197 / Changed ("file_1.txt", Some │ │ "11111111111111111111111111111111111 │ │ 42759 / 638465340455910956 / Changed ("file_2.txt", Some │ │ "22222222222222222222222222222222 │ │ 118 / 638465340455911074 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 522 / 638465340455911596 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 56 / 638465340455911652 / Changed ("file_2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 154 / 638465340455911806 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 158 / 638465340455911964 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 174 / 638465340455912138 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 124 / 638465340455912262 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 256 / 638465340455912518 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 34 / 638465340455912552 / Changed ("file_2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 258 / 638465340455912810 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 170 / 638465340455912980 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 168 / 638465340455913148 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 167 / 638465340455913315 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 170 / 638465340455913485 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 211 / 638465340455913696 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 210 / 638465340455913906 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 185 / 638465340455914091 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 168 / 638465340455914259 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 186 / 638465340455914445 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 199 / 638465340455914644 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 183 / 638465340455914827 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 176 / 638465340455915003 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 182 / 638465340455915185 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 208 / 638465340455915393 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 179 / 638465340455915572 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 181 / 638465340455915753 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 159 / 638465340455915912 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 214 / 638465340455916126 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 199 / 638465340455916325 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 150 / 638465340455916475 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 219 / 638465340455916694 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 163 / 638465340455916857 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 182 / 638465340455917039 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 205 / 638465340455917244 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 180 / 638465340455917424 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 177 / 638465340455917601 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 194 / 638465340455917795 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 183 / 638465340455917978 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 206 / 638465340455918184 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 183 / 638465340455918367 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 196 / 638465340455918563 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 190 / 638465340455918753 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 178 / 638465340455918931 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 193 / 638465340455919124 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 185 / 638465340455919309 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 201 / 638465340455919510 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 191 / 638465340455919701 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 183 / 638465340455919884 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 156 / 638465340455920040 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 199 / 638465340455920239 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 187 / 638465340455920426 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 181 / 638465340455920607 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 191 / 638465340455920798 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 199 / 638465340455920997 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 187 / 638465340455921184 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 192 / 638465340455921376 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 175 / 638465340455921551 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 160 / 638465340455921711 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 204 / 638465340455921915 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 185 / 638465340455922100 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 202 / 638465340455922302 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 203 / 638465340455922505 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 148 / 638465340455922653 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 183 / 638465340455922836 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 179 / 638465340455923015 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 235 / 638465340455923250 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 184 / 638465340455923434 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 441 / 638465340455923875 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 38 / 638465340455923913 / Changed ("file_2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 244 / 638465340455924157 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 96 / 638465340455924253 / Changed ("file_2.txt", Some │ │ "22222222222222222222222222222222222 │ │ 214 / 638465340455924467 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 211 / 638465340455924678 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 183 / 638465340455924861 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 196 / 638465340455925057 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 187 / 638465340455925244 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 190 / 638465340455925434 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 185 / 638465340455925619 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 178 / 638465340455925797 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 163 / 638465340455925960 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 187 / 638465340455926147 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 199 / 638465340455926346 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 199 / 638465340455926545 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 179 / 638465340455926724 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 186 / 638465340455926910 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 190 / 638465340455927100 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 172 / 638465340455927272 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 187 / 638465340455927459 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 179 / 638465340455927638 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 204 / 638465340455927842 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 172 / 638465340455928014 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 178 / 638465340455928192 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 169 / 638465340455928361 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 169 / 638465340455928530 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 142 / 638465340455928672 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 177 / 638465340455928849 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 166 / 638465340455929015 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 184 / 638465340455929199 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 162 / 638465340455929361 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 139 / 638465340455929500 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 176 / 638465340455929676 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 163 / 638465340455929839 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 165 / 638465340455930004 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 182 / 638465340455930186 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 165 / 638465340455930351 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 185 / 638465340455930536 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 170 / 638465340455930706 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 168 / 638465340455930874 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 173 / 638465340455931047 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 140 / 638465340455931187 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 163 / 638465340455931350 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 165 / 638465340455931515 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 187 / 638465340455931702 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 163 / 638465340455931865 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 169 / 638465340455932034 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 171 / 638465340455932205 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 143 / 638465340455932348 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 170 / 638465340455932518 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 174 / 638465340455932692 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 178 / 638465340455932870 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 174 / 638465340455933044 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 201 / 638465340455933245 / Changed ("file_2.txt", Some │ │ "2222222222222222222222222222222222 │ │ 15032945 / 638465340470966190 / Deleted "file_1.txt" │ │ 3427 / 638465340470969617 / Deleted "file_2.txt" │ │ FSharpList<FileSystemChange> │ │ - path: file1.txt │ │ content: FSharpOption<String> │ │ Value: 1a │ │ IsFailure: False │ │ IsChanged: False │ │ IsCreated: True │ │ IsDeleted: False │ │ IsRenamed: False │ │ - path: file1.txt │ │ content: FSharpOption<String> │ │ Value: 1a │ │ IsFailure: False │ │ IsChanged: True │ │ IsCreated: False │ │ IsDeleted: False │ │ IsRenamed: False │ │ - path: file2.txt │ │ content: FSharpOption<String> │ │ Value: 2a │ │ IsFailure: False │ │ IsChanged: False │ │ IsCreated: True │ │ IsDeleted: False │ │ IsRenamed: False │ │ - path: file2.txt │ │ content: FSharpOption<String> │ │ Value: 2a │ │ IsFailure: False │ │ IsChanged: True │ │ IsCreated: False │ │ IsDeleted: False │ │ IsRenamed: False │ │ - path: file1.txt │ │ content: FSharpOption<String> │ │ Value: 1b │ │ IsFailure: False │ │ IsChanged: True │ │ IsCreated: False │ │ IsDeleted: False │ │ IsRenamed: False │ │ - path: file2.txt │ │ content: FSharpOption<String> │ │ Value: 2b │ │ IsFailure: False │ │ IsChanged: True │ │ IsCreated: False │ │ IsDeleted: False │ │ IsRenamed: False │ │ - oldPath: file1.txt │ │ Item2: - file_1.txt │ │ - FSharpOption<String> │ │ Value: 1b │ │ - IsFailure: False │ │ IsChanged: False │ │ IsCreated: False │ │ IsDeleted: False │ │ IsRenamed: True │ │ - oldPath: file2.txt │ │ Item2: - file_2.txt │ │ - FSharpOption<String> │ │ Value: 2b │ │ - IsFailure: False │ │ IsChanged: False │ │ IsCreated: False │ │ IsDeleted: False │ │ IsRenamed: True │ │ - path: file_1.txt │ │ content: FSharpOption<String> │ │ Value: 1c │ │ IsFailure: False │ │ IsChanged: True │ │ IsCreated: False │ │ IsDeleted: False │ │ IsRenamed: False │ │ - path: file_2.txt │ │ content: FSharpOption<String> │ │ Value: 2c │ │ IsFailure: False │ │ IsChanged: True │ │ IsCreated: False │ │ IsDeleted: False │ │ IsRenamed: False │ │ - path: file_1.txt │ │ IsFailure: False │ │ IsChanged: False │ │ IsCreated: False │ │ IsDeleted: True │ │ IsRenamed: False │ │ - path: file_2.txt │ │ IsFailure: False │ │ IsChanged: False │ │ IsCreated: False │ │ IsDeleted: True │ │ IsRenamed: False │ │ FSharpOption<Unit> │ │ Value: <null> │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ### testEventsSorted (test) │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── //// test let inline sortEvent event = match event with | FileSystemChange.Failure _ -> 0 | FileSystemChange.Created _ -> 1 | FileSystemChange.Changed _ -> 2 | FileSystemChange.Renamed (_oldPath, _) -> 3 | FileSystemChange.Deleted _ -> 4 let inline formatEvents events = events |> Seq.toList |> List.sortBy (snd >> sortEvent) |> List.choose (fun (ticks, event) -> match event with | FileSystemChange.Failure _ -> None | FileSystemChange.Changed (path, _) -> Some (ticks, System.IO.Path.GetFileName path, nameof FileSystemChangeType.Changed) | FileSystemChange.Created (path, _) -> Some (ticks, System.IO.Path.GetFileName path, nameof FileSystemChangeType.Created) | FileSystemChange.Deleted path -> Some (ticks, System.IO.Path.GetFileName path, nameof FileSystemChangeType.Deleted) | FileSystemChange.Renamed (_oldPath, (path, _)) -> Some (ticks, System.IO.Path.GetFileName path, nameof FileSystemChangeType.Renamed) ) |> List.sortBy (fun (_, path, _) -> path) |> List.distinctBy (fun (_, path, event) -> path, event) let inline testEventsSorted (watchFn : string -> FSharp.Control.AsyncSeq<int64 * FileSystemChange> * IDisposable) write = let path = createTempDirectory () let stream, disposable = watchFn path let events = System.Collections.Concurrent.ConcurrentBag () let inline iter () = stream |> FSharp.Control.AsyncSeq.iterAsyncParallel (fun event -> async { events.Add event }) let run = async { let! _ = iter () |> Async.StartChild do! Async.Sleep 250 return! write path } try run |> Async.runWithTimeout 5000 |> _assert_eq (Some ()) finally disposable.Dispose () deleteDirectoryAsync path |> Async.Ignore |> Async.RunSynchronously let events = formatEvents events let eventMap = events |> List.map (fun (ticks, path, event) -> path, (event, ticks)) |> List.groupBy fst |> List.map (fun (path, events) -> let event, _ticks = events |> List.map snd |> List.sortByDescending snd |> List.head path, event ) |> Map.ofList let eventList = events |> List.map (fun (_ticks, path, event) -> path, event) eventMap, eventList ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ #### create and delete (test) │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── //// test let inline write path = async { let n = 3 for i = 1 to n do do! $"{i}" |> writeAllTextAsync (path </> $"file{i}.txt") for i = 1 to n do do! deleteFileAsync (path </> $"file{i}.txt") |> Async.Ignore do! Async.Sleep 150 } let inline run () = let eventMap, eventList = testEventsSorted (watchDirectory (fun _ -> false)) write [[ "file1.txt", nameof FileSystemChangeType.Created "file1.txt", nameof FileSystemChangeType.Changed "file1.txt", nameof FileSystemChangeType.Deleted "file2.txt", nameof FileSystemChangeType.Created "file2.txt", nameof FileSystemChangeType.Changed "file2.txt", nameof FileSystemChangeType.Deleted "file3.txt", nameof FileSystemChangeType.Created "file3.txt", nameof FileSystemChangeType.Changed "file3.txt", nameof FileSystemChangeType.Deleted ]] |> _sequenceEqual eventList [[ "file1.txt", nameof FileSystemChangeType.Deleted "file2.txt", nameof FileSystemChangeType.Deleted "file3.txt", nameof FileSystemChangeType.Deleted ]] |> Map.ofList |> _sequenceEqual eventMap run |> retryFn 3 |> _assert_eq (Some ()) ╭─[ 2.07s - stdout ]───────────────────────────────────────────────────────────╮ │ FSharpOption<Unit> │ │ Value: <null> │ │ 00:00:29 #51 [Debug] watchWithFilter / Disposing watch stream / filter: │ │ FileName, LastWrite │ │ FSharpList<Tuple<String,String>> │ │ ( file1.txt, Created ) │ │ ( file1.txt, Changed ) │ │ ( file1.txt, Deleted ) │ │ ( file2.txt, Created ) │ │ ( file2.txt, Changed ) │ │ ( file2.txt, Deleted ) │ │ ( file3.txt, Created ) │ │ ( file3.txt, Changed ) │ │ ( file3.txt, Deleted ) │ │ FSharpMap<String,String> │ │ - Key: file1.txt │ │ Value: Deleted │ │ - Key: file2.txt │ │ Value: Deleted │ │ - Key: file3.txt │ │ Value: Deleted │ │ FSharpOption<Unit> │ │ Value: <null> │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ #### change (test) │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── //// test let inline write path = async { let n = 2 for i = 1 to n do do! $"{i}" |> writeAllTextAsync (path </> $"file{i}.txt") for i = 1 to n do do! "" |> writeAllTextAsync (path </> $"file{i}.txt") for i = 1 to n do do! deleteFileAsync (path </> $"file{i}.txt") |> Async.Ignore do! Async.Sleep 150 } let inline run () = let eventMap, eventList = testEventsSorted (watchDirectory (fun _ -> false)) write [[ "file1.txt", nameof FileSystemChangeType.Created "file1.txt", nameof FileSystemChangeType.Changed "file1.txt", nameof FileSystemChangeType.Deleted "file2.txt", nameof FileSystemChangeType.Created "file2.txt", nameof FileSystemChangeType.Changed "file2.txt", nameof FileSystemChangeType.Deleted ]] |> _sequenceEqual eventList [[ "file1.txt", nameof FileSystemChangeType.Deleted "file2.txt", nameof FileSystemChangeType.Deleted ]] |> Map.ofList |> _sequenceEqual eventMap run |> retryFn 3 |> _assert_eq (Some ()) ╭─[ 2.45s - stdout ]───────────────────────────────────────────────────────────╮ │ FSharpOption<Unit> │ │ Value: <null> │ │ 00:00:31 #52 [Debug] watchWithFilter / Disposing watch stream / filter: │ │ FileName, LastWrite │ │ FSharpList<Tuple<String,String>> │ │ ( file1.txt, Created ) │ │ ( file1.txt, Changed ) │ │ ( file1.txt, Deleted ) │ │ ( file2.txt, Created ) │ │ ( file2.txt, Changed ) │ │ ( file2.txt, Deleted ) │ │ FSharpMap<String,String> │ │ - Key: file1.txt │ │ Value: Deleted │ │ - Key: file2.txt │ │ Value: Deleted │ │ FSharpOption<Unit> │ │ Value: <null> │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ #### rename (test) │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── //// test let inline write path = async { let n = 2 for i = 1 to n do do! $"{i}" |> writeAllTextAsync (path </> $"file{i}.txt") for i = 1 to n do do! path </> $"file{i}.txt" |> moveFileAsync (path </> $"file_{i}.txt") |> Async.Ignore for i = 1 to n do do! deleteFileAsync (path </> $"file_{i}.txt") |> Async.Ignore do! Async.Sleep 150 } let inline run () = let eventMap, eventList = testEventsSorted (watchDirectory (fun _ -> false)) write [[ "file1.txt", nameof FileSystemChangeType.Created "file1.txt", nameof FileSystemChangeType.Changed "file2.txt", nameof FileSystemChangeType.Created "file2.txt", nameof FileSystemChangeType.Changed "file_1.txt", nameof FileSystemChangeType.Renamed "file_1.txt", nameof FileSystemChangeType.Deleted "file_2.txt", nameof FileSystemChangeType.Renamed "file_2.txt", nameof FileSystemChangeType.Deleted ]] |> _sequenceEqual eventList [[ "file1.txt", nameof FileSystemChangeType.Changed "file2.txt", nameof FileSystemChangeType.Changed "file_1.txt", nameof FileSystemChangeType.Deleted "file_2.txt", nameof FileSystemChangeType.Deleted ]] |> Map.ofList |> _sequenceEqual eventMap run |> retryFn 3 |> _assert_eq (Some ()) ╭─[ 2.82s - stdout ]───────────────────────────────────────────────────────────╮ │ FSharpOption<Unit> │ │ Value: <null> │ │ 00:00:34 #53 [Debug] watchWithFilter / Disposing watch stream / filter: │ │ FileName, LastWrite │ │ FSharpList<Tuple<String,String>> │ │ ( file1.txt, Created ) │ │ ( file1.txt, Changed ) │ │ ( file2.txt, Created ) │ │ ( file2.txt, Changed ) │ │ ( file_1.txt, Renamed ) │ │ ( file_1.txt, Deleted ) │ │ ( file_2.txt, Renamed ) │ │ ( file_2.txt, Deleted ) │ │ FSharpMap<String,String> │ │ - Key: file1.txt │ │ Value: Changed │ │ - Key: file2.txt │ │ Value: Changed │ │ - Key: file_1.txt │ │ Value: Deleted │ │ - Key: file_2.txt │ │ Value: Deleted │ │ FSharpOption<Unit> │ │ Value: <null> │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ #### full (test) │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── //// test let inline write path = async { let n = 2 for i = 1 to n do do! $"{i}" |> writeAllTextAsync (path </> $"file{i}.txt") for i = 1 to n do do! "" |> writeAllTextAsync (path </> $"file{i}.txt") for i = 1 to n do do! path </> $"file{i}.txt" |> moveFileAsync (path </> $"file_{i}.txt") |> Async.Ignore for i = 1 to n do do! $"{i}" |> writeAllTextAsync (path </> $"file_{i}.txt") for i = 1 to n do do! deleteFileAsync (path </> $"file_{i}.txt") |> Async.Ignore do! Async.Sleep 150 } let inline run () = let eventMap, eventList = testEventsSorted (watchDirectory (fun _ -> false)) write [[ "file1.txt", nameof FileSystemChangeType.Created "file1.txt", nameof FileSystemChangeType.Changed "file2.txt", nameof FileSystemChangeType.Created "file2.txt", nameof FileSystemChangeType.Changed "file_1.txt", nameof FileSystemChangeType.Changed "file_1.txt", nameof FileSystemChangeType.Renamed "file_1.txt", nameof FileSystemChangeType.Deleted "file_2.txt", nameof FileSystemChangeType.Changed "file_2.txt", nameof FileSystemChangeType.Renamed "file_2.txt", nameof FileSystemChangeType.Deleted ]] |> _sequenceEqual eventList [[ "file1.txt", nameof FileSystemChangeType.Changed "file2.txt", nameof FileSystemChangeType.Changed "file_1.txt", nameof FileSystemChangeType.Deleted "file_2.txt", nameof FileSystemChangeType.Deleted ]] |> Map.ofList |> _sequenceEqual eventMap run |> retryFn 3 |> _assert_eq (Some ()) ╭─[ 3.10s - stdout ]───────────────────────────────────────────────────────────╮ │ FSharpOption<Unit> │ │ Value: <null> │ │ 00:00:37 #54 [Debug] watchWithFilter / Disposing watch stream / filter: │ │ FileName, LastWrite │ │ FSharpList<Tuple<String,String>> │ │ ( file1.txt, Created ) │ │ ( file1.txt, Changed ) │ │ ( file2.txt, Created ) │ │ ( file2.txt, Changed ) │ │ ( file_1.txt, Changed ) │ │ ( file_1.txt, Renamed ) │ │ ( file_1.txt, Deleted ) │ │ ( file_2.txt, Changed ) │ │ ( file_2.txt, Renamed ) │ │ ( file_2.txt, Deleted ) │ │ FSharpMap<String,String> │ │ - Key: file1.txt │ │ Value: Changed │ │ - Key: file2.txt │ │ Value: Changed │ │ - Key: file_1.txt │ │ Value: Deleted │ │ - Key: file_2.txt │ │ Value: Deleted │ │ FSharpOption<Unit> │ │ Value: <null> │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ [NbConvertApp] Converting notebook FileSystem.dib.ipynb to html /opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. validate(nb) /opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 return _pygments_highlight( [NbConvertApp] Writing 523466 bytes to FileSystem.dib.html ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ # Networking (Polyglot) │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── #!import ../../lib/fsharp/Notebooks.dib #!import ../../lib/fsharp/Testing.dib ── fsharp - import ───────────────────────────────────────────────────────────── #r "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Asp NetCore.Html.Abstractions.dll" #r "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot Net.Interactive.dll" #r "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot Net.Interactive.FSharp.dll" #r "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot Net.Interactive.Formatting.dll" open System open System.IO open System.Text open Microsoft.DotNet.Interactive.Formatting ── fsharp - import ───────────────────────────────────────────────────────────── #r "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot Net.Interactive.FSharp.dll" open Microsoft.DotNet.Interactive.FSharp.FSharpKernelHelpers #r "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot Net.Interactive.dll" open type Microsoft.DotNet.Interactive.Kernel ── fsharp - import ───────────────────────────────────────────────────────────── //// test Formatter.ListExpansionLimit <- 100 ── fsharp - import ───────────────────────────────────────────────────────────── #r @"../../../../../../../.nuget/packages/expecto/10.1.0/lib/net6.0/Expecto.dll" ── fsharp - import ───────────────────────────────────────────────────────────── //// test type AssertExceptionFormatter (ex) = member _.Text = ex.ToString() .Replace("32m", "<span style=\"color: green;\">") .Replace("36m", "</span>") .Replace("31m", "<span style=\"color: red;\">") .Replace("\n", "<br/>\n") Formatter.Register<AssertExceptionFormatter> ((fun (x : AssertExceptionFormatter) -> x.Text), "text/html") ── fsharp - import ───────────────────────────────────────────────────────────── //// test let inline __expect fn log expected actual = if log then printfn $"{actual.ToDisplayString ()}" try "Testing.__expect" |> fn actual expected with :? Expecto.AssertException as ex -> AssertExceptionFormatter(ex).Display () |> ignore failwith (ex.GetType().FullName) let inline __contains log expected actual = __expect Expecto.Expect.contains log expected actual let inline _contains expected actual = __contains true expected actual let inline __assert_eq log expected actual = __expect Expecto.Expect.equal log expected actual let inline _assert_eq expected actual = __assert_eq true expected actual let inline __isGreaterThan log expected actual = __expect Expecto.Expect.isGreaterThan log expected... ── fsharp - import ───────────────────────────────────────────────────────────── //// test let inline __isBetween log a b actual = let inline isBetween actual (a, b) _ = __isGreaterThanOrEqual log a actual __isLessThanOrEqual log b actual __expect isBetween log (a, b) actual let inline _isBetween a b actual = __isBetween true a b actual ── fsharp ────────────────────────────────────────────────────────────────────── #r @"../../../../../../../.nuget/packages/argu/6.2.2/lib/netstandard2.0/Argu.dll" #r @"../../../../../../../.nuget/packages/system.commandline/2.0.0-beta4.22272.1/li b/net6.0/System.CommandLine.dll" ── fsharp ────────────────────────────────────────────────────────────────────── #!import ../../lib/fsharp/Common.fs #!import ../../lib/fsharp/CommonFSharp.fs #!import ../../lib/fsharp/Async.fs #!import ../../lib/fsharp/Runtime.fs ── fsharp - import ───────────────────────────────────────────────────────────── #if !INTERACTIVE namespace Polyglot #endif module Common = let nl = System.Environment.NewLine let q = @"""" let inline cons head tail = head :: tail module String = let inline contains (value : string) (input : string) = input.Contains value let inline endsWith (value : string) (input : string) = input.EndsWith value let inline padLeft totalWidth paddingChar (input : string) = input.PadLeft (totalWidth, paddingChar) let inline replace (oldValue : string) (newValue : string) (input : string) = input.Replace (oldValue, newValue) let inline split separator (input : string) = input.Split separator let inline spli... ── fsharp - import ───────────────────────────────────────────────────────────── #if !INTERACTIVE namespace Polyglot #endif module CommonFSharp = open Common /// ## getUnionCaseName let inline getUnionCaseName<'T> (x: 'T) = match Reflection.FSharpValue.GetUnionFields(x, typeof<'T>) with | case, _ -> case.Name ── fsharp - import ───────────────────────────────────────────────────────────── #if !INTERACTIVE namespace Polyglot #endif module Async = open Common /// ## choice let inline choice asyncs = async { let e = Event<_> () use cts = new System.Threading.CancellationTokenSource () let fn = asyncs |> Seq.map (fun a -> async { let! x = a e.Trigger x }) |> Async.Parallel |> Async.Ignore Async.Start (fn, cts.Token) let! result = Async.AwaitEvent e.Publish cts.Cancel () return result } /// ## map let inline map fn a = async { let! x = a return fn x } /// ## catch let inline catch a = a |> Async.Catch ... ── fsharp - import ───────────────────────────────────────────────────────────── #if !INTERACTIVE namespace Polyglot #endif module Runtime = open Common /// ## isWindows let isWindows = fun () -> System.Runtime.InteropServices.RuntimeInformation.IsOSPlatform System.Runtime.InteropServices.OSPlatform.Windows |> memoize /// ## getExecutableSuffix let inline getExecutableSuffix () = if isWindows () then ".exe" else "" /// ## splitCommand type private CommandParseStep = | Start | Path of quoted: bool | Arguments let splitCommand (command: string) = let rec loop (path, args) chars step = match chars, step with | ('"' | '\'') :: tail, _ when path = "" -> loop (pat... ── fsharp ────────────────────────────────────────────────────────────────────── open Common ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## testPortOpen │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let inline testPortOpen port = async { let! ct = Async.CancellationToken use client = new System.Net.Sockets.TcpClient () try do! client.ConnectAsync ("127.0.0.1", port, ct) |> Async.awaitValueTaskUnit return true with ex -> trace Verbose (fun () -> $"testPortOpen / ex: {ex |> printException}") getLocals return false } ── fsharp ────────────────────────────────────────────────────────────────────── //// test testPortOpen 65536 |> Async.runWithTimeout 120 |> _assert_eq (Some false) ╭─[ 121.45ms - stdout ]────────────────────────────────────────────────────────╮ │ 00:00:00 #1 [Verbose] testPortOpen / ex: System.ArgumentOutOfRangeException: │ │ Specified argument was out of the range of valid values. (Parameter 'port') │ │ FSharpOption<Boolean> │ │ Value: False │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let inline testPortOpenTimeout timeout port = async { let! result = testPortOpen port |> Async.runWithTimeoutAsync timeout return match result with | None -> false | Some result -> result } ── fsharp ────────────────────────────────────────────────────────────────────── //// test testPortOpenTimeout 120 65535 |> Async.RunSynchronously |> _assert_eq false ╭─[ 86.61ms - stdout ]─────────────────────────────────────────────────────────╮ │ 00:00:00 #2 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ False │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## waitForPortAccess │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let inline waitForPortAccess timeout status port = let rec loop retry = async { let! isPortOpen = match timeout with | None -> testPortOpen port | Some timeout -> testPortOpenTimeout timeout port if isPortOpen = status then return retry else if retry % 100 = 0 then let getLocals () = $"port: {port} / retry: {retry} / {getLocals ()}" trace Verbose (fun () -> "waitForPortAccess") getLocals do! Async.Sleep 10 return! loop (retry + 1) } loop 0 ── fsharp ────────────────────────────────────────────────────────────────────── //// test let port = 5555 let inline lockPort () = async { trace Debug (fun () -> "_1") getLocals do! Async.Sleep 5000 use listener = new System.Net.Sockets.TcpListener (System.Net.IPAddress.Parse "127.0.0.1", port) trace Debug (fun () -> "_2") getLocals listener.Start () trace Debug (fun () -> "_3") getLocals do! Async.Sleep 2000 trace Debug (fun () -> "_4") getLocals listener.Stop () trace Debug (fun () -> "_5") getLocals } async { trace Debug (fun () -> "1") getLocals let! child = lockPort () |> Async.StartChild trace Debug (fun () -> "2") getLocals do! Async.Sleep 1 trace Debug (fun () -> "3") getLocals let! retries1 = waitForPortAccess None true port trace Debug (fun () -> "4") getLocals let! retries2 = waitForPortAccess None false port trace Debug (fun () -> "5") getLocals do! child trace Debug (fun () -> "6") getLocals return retries1, retries2 } |> Async.runWithTimeout 20000 |> function | Some (retries1, retries2) -> retries1 |> _isBetween (if Runtime.isWindows () then 2 else 2) (if Runtime.isWindows () then 5 else 1500) retries2 |> _isBetween (if Runtime.isWindows () then 80 else 80) (if Runtime.isWindows () then 150 else 600) true | _ -> false |> _assert_eq true ╭─[ 7.33s - stdout ]───────────────────────────────────────────────────────────╮ │ 00:00:00 #3 [Debug] 1 │ │ 00:00:00 #4 [Debug] _1 │ │ 00:00:00 #5 [Debug] 2 │ │ 00:00:00 #6 [Debug] 3 │ │ 00:00:00 #7 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:00 #8 [Verbose] waitForPortAccess / port: 5555 / retry: 0 │ │ 00:00:00 #9 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:00 #10 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:00 #11 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:00 #12 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:00 #13 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:00 #14 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:00 #15 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:00 #16 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:00 #17 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:00 #18 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:00 #19 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:00 #20 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:00 #21 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:00 #22 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:00 #23 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:00 #24 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:00 #25 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:00 #26 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:00 #27 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:00 #28 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:00 #29 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:00 #30 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:00 #31 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:00 #32 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:00 #33 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:00 #34 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:01 #35 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:01 #36 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:01 #37 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:01 #38 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:01 #39 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:01 #40 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:01 #41 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:01 #42 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:01 #43 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:01 #44 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:01 #45 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:01 #46 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:01 #47 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:01 #48 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:01 #49 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:01 #50 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:01 #51 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:01 #52 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:01 #53 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:01 #54 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:01 #55 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:01 #56 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:01 #57 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:01 #58 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:01 #59 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:01 #60 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:01 #61 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:01 #62 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:01 #63 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:01 #64 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:01 #65 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:01 #66 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:01 #67 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:01 #68 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:01 #69 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:01 #70 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:01 #71 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:01 #72 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:01 #73 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:01 #74 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:01 #75 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:01 #76 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:01 #77 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:01 #78 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:01 #79 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:01 #80 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:01 #81 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:01 #82 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:01 #83 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:01 #84 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:01 #85 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:01 #86 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:01 #87 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:01 #88 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:01 #89 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:01 #90 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:01 #91 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:01 #92 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:01 #93 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:01 #94 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:01 #95 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:01 #96 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:01 #97 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:01 #98 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:01 #99 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:01 #100 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:01 #101 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:01 #102 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:01 #103 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:01 #104 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:01 #105 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:01 #106 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:01 #107 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:01 #108 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:01 #109 [Verbose] waitForPortAccess / port: 5555 / retry: 100 │ │ 00:00:01 #110 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:01 #111 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:01 #112 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:01 #113 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:01 #114 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:01 #115 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:02 #116 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:02 #117 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:02 #118 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:02 #119 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:02 #120 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:02 #121 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:02 #122 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:02 #123 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:02 #124 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:02 #125 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:02 #126 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:02 #127 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:02 #128 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:02 #129 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:02 #130 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:02 #131 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:02 #132 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:02 #133 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:02 #134 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:02 #135 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:02 #136 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:02 #137 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:02 #138 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:02 #139 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:02 #140 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:02 #141 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:02 #142 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:02 #143 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:02 #144 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:02 #145 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:02 #146 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:02 #147 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:02 #148 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:02 #149 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:02 #150 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:02 #151 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:02 #152 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:02 #153 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:02 #154 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:02 #155 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:02 #156 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:02 #157 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:02 #158 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:02 #159 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:02 #160 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:02 #161 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:02 #162 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:02 #163 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:02 #164 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:02 #165 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:02 #166 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:02 #167 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:02 #168 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:02 #169 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:02 #170 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:02 #171 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:02 #172 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:02 #173 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:02 #174 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:02 #175 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:02 #176 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:02 #177 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:02 #178 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:02 #179 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:02 #180 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:02 #181 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:02 #182 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:02 #183 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:02 #184 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:02 #185 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:02 #186 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:02 #187 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:02 #188 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:02 #189 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:02 #190 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:02 #191 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:02 #192 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:02 #193 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:02 #194 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:02 #195 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:02 #196 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:02 #197 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:02 #198 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:02 #199 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:03 #200 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:03 #201 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:03 #202 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:03 #203 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:03 #204 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:03 #205 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:03 #206 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:03 #207 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:03 #208 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:03 #209 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:03 #210 [Verbose] waitForPortAccess / port: 5555 / retry: 200 │ │ 00:00:03 #211 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:03 #212 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:03 #213 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:03 #214 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:03 #215 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:03 #216 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:03 #217 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:03 #218 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:03 #219 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:03 #220 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:03 #221 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:03 #222 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:03 #223 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:03 #224 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:03 #225 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:03 #226 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:03 #227 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:03 #228 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:03 #229 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:03 #230 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:03 #231 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:03 #232 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:03 #233 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:03 #234 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:03 #235 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:03 #236 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:03 #237 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:03 #238 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:03 #239 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:03 #240 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:03 #241 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:03 #242 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:03 #243 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:03 #244 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:03 #245 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:03 #246 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:03 #247 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:03 #248 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:03 #249 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:03 #250 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:03 #251 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:03 #252 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:03 #253 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:03 #254 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:03 #255 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:03 #256 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:03 #257 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:03 #258 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:03 #259 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:03 #260 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:03 #261 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:03 #262 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:03 #263 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:03 #264 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:03 #265 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:03 #266 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:03 #267 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:03 #268 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:03 #269 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:03 #270 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:03 #271 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:03 #272 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:03 #273 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:03 #274 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:03 #275 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:03 #276 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:03 #277 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:03 #278 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:03 #279 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:03 #280 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:03 #281 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:03 #282 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:03 #283 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:04 #284 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:04 #285 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:04 #286 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:04 #287 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:04 #288 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:04 #289 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:04 #290 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:04 #291 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:04 #292 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:04 #293 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:04 #294 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:04 #295 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:04 #296 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:04 #297 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:04 #298 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:04 #299 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:04 #300 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:04 #301 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:04 #302 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:04 #303 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:04 #304 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:04 #305 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:04 #306 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:04 #307 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:04 #308 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:04 #309 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:04 #310 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:04 #311 [Verbose] waitForPortAccess / port: 5555 / retry: 300 │ │ 00:00:04 #312 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:04 #313 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:04 #314 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:04 #315 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:04 #316 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:04 #317 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:04 #318 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:04 #319 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:04 #320 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:04 #321 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:04 #322 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:04 #323 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:04 #324 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:04 #325 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:04 #326 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:04 #327 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:04 #328 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:04 #329 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:04 #330 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:04 #331 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:04 #332 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:04 #333 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:04 #334 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:04 #335 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:04 #336 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:04 #337 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:04 #338 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:04 #339 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:04 #340 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:04 #341 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:04 #342 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:04 #343 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:04 #344 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:04 #345 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:04 #346 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:04 #347 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:04 #348 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:04 #349 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:04 #350 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:04 #351 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:04 #352 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:04 #353 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:04 #354 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:04 #355 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:04 #356 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:04 #357 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:04 #358 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:04 #359 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:04 #360 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:04 #361 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:04 #362 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:04 #363 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:04 #364 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:04 #365 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:04 #366 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:04 #367 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:05 #368 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:05 #369 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:05 #370 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:05 #371 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:05 #372 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:05 #373 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:05 #374 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:05 #375 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:05 #376 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:05 #377 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:05 #378 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:05 #379 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:05 #380 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:05 #381 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:05 #382 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:05 #383 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:05 #384 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:05 #385 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:05 #386 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:05 #387 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:05 #388 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:05 #389 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:05 #390 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:05 #391 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:05 #392 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:05 #393 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:05 #394 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:05 #395 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:05 #396 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:05 #397 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:05 #398 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:05 #399 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:05 #400 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:05 #401 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:05 #402 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:05 #403 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:05 #404 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:05 #405 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:05 #406 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:05 #407 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:05 #408 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:05 #409 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:05 #410 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:05 #411 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:05 #412 [Verbose] waitForPortAccess / port: 5555 / retry: 400 │ │ 00:00:05 #413 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:05 #414 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:05 #415 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:05 #416 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:05 #417 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:05 #418 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:05 #419 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:05 #420 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:05 #421 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:05 #422 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:05 #423 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:05 #424 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:05 #425 [Debug] _2 │ │ 00:00:05 #426 [Debug] _3 │ │ 00:00:05 #427 [Debug] 4 │ │ 00:00:05 #428 [Verbose] waitForPortAccess / port: 5555 / retry: 0 │ │ 00:00:06 #429 [Verbose] waitForPortAccess / port: 5555 / retry: 100 │ │ 00:00:07 #430 [Debug] _4 │ │ 00:00:07 #431 [Debug] _5 │ │ 00:00:07 #432 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:07 #433 [Debug] 5 │ │ 00:00:07 #434 [Debug] 6 │ │ 413 │ │ 413 │ │ 413 │ │ 166 │ │ 166 │ │ 166 │ │ True │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── //// test let port = 5555 let inline lockPort () = async { trace Debug (fun () -> "_1") getLocals do! Async.Sleep 500 use listener = new System.Net.Sockets.TcpListener (System.Net.IPAddress.Parse "127.0.0.1", port) trace Debug (fun () -> "_2") getLocals listener.Start () trace Debug (fun () -> "_3") getLocals do! Async.Sleep 200 trace Debug (fun () -> "_4") getLocals listener.Stop () trace Debug (fun () -> "_5") getLocals } async { trace Debug (fun () -> "1") getLocals let! child = lockPort () |> Async.StartChild trace Debug (fun () -> "2") getLocals do! Async.Sleep 1 trace Debug (fun () -> "3") getLocals let! retries1 = waitForPortAccess (Some 60) true port trace Debug (fun () -> "4") getLocals let! retries2 = waitForPortAccess (Some 60) false port trace Debug (fun () -> "5") getLocals do! child trace Debug (fun () -> "6") getLocals return retries1, retries2 } |> Async.runWithTimeout 2000 |> function | Some (retries1, retries2) -> retries1 |> _isBetween (if Runtime.isWindows () then 4 else 2) (if Runtime.isWindows () then 15 else 150) retries2 |> _isBetween (if Runtime.isWindows () then 5 else 0) (if Runtime.isWindows () then 20 else 60) true | _ -> false |> _assert_eq true ╭─[ 1.20s - stdout ]───────────────────────────────────────────────────────────╮ │ 00:00:08 #435 [Debug] 1 │ │ 00:00:08 #436 [Debug] 2 │ │ 00:00:08 #437 [Debug] _1 │ │ 00:00:08 #438 [Debug] 3 │ │ 00:00:08 #439 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:08 #440 [Verbose] waitForPortAccess / port: 5555 / retry: 0 │ │ 00:00:08 #441 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:08 #442 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:08 #443 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:08 #444 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:08 #445 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:08 #446 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:08 #447 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:08 #448 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:08 #449 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:08 #450 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:08 #451 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:08 #452 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:08 #453 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:08 #454 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:08 #455 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:08 #456 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:08 #457 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:08 #458 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:08 #459 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:08 #460 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:08 #461 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:08 #462 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:08 #463 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:08 #464 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:08 #465 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:08 #466 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:08 #467 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:08 #468 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:08 #469 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:08 #470 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:08 #471 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:08 #472 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:08 #473 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:08 #474 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:08 #475 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:08 #476 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:08 #477 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:08 #478 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:08 #479 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:08 #480 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:08 #481 [Debug] _2 │ │ 00:00:08 #482 [Debug] _3 │ │ 00:00:08 #483 [Debug] 4 │ │ 00:00:08 #484 [Verbose] waitForPortAccess / port: 5555 / retry: 0 │ │ 00:00:08 #485 [Debug] _4 │ │ 00:00:08 #486 [Debug] _5 │ │ 00:00:08 #487 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:08 #488 [Debug] 5 │ │ 00:00:08 #489 [Debug] 6 │ │ 41 │ │ 41 │ │ 41 │ │ 16 │ │ 16 │ │ 16 │ │ True │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## getAvailablePort │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let inline getAvailablePort timeout initialPort = let rec loop port = async { let! isPortOpen = match timeout with | None -> testPortOpen port | Some timeout -> testPortOpenTimeout timeout port if not isPortOpen then return port else return! loop (port + 1) } loop initialPort ── fsharp ────────────────────────────────────────────────────────────────────── //// test let port = 5555 let inline lockPorts () = async { trace Debug (fun () -> "_1") getLocals use listener1 = new System.Net.Sockets.TcpListener (System.Net.IPAddress.Parse "127.0.0.1", port) use listener2 = new System.Net.Sockets.TcpListener (System.Net.IPAddress.Parse "127.0.0.1", port + 1) trace Debug (fun () -> "_2") getLocals listener1.Start () listener2.Start () trace Debug (fun () -> "_3") getLocals do! Async.Sleep 4000 trace Debug (fun () -> "_4") getLocals listener1.Stop () listener2.Stop () trace Debug (fun () -> "_5") getLocals } async { trace Debug (fun () -> "1") getLocals let! child = lockPorts () |> Async.StartChild trace Debug (fun () -> "2") getLocals do! Async.Sleep 240 trace Debug (fun () -> "3") getLocals let! availablePort = getAvailablePort None port trace Debug (fun () -> "4") getLocals let! retries = waitForPortAccess None false port trace Debug (fun () -> "5") getLocals do! child trace Debug (fun () -> "6") getLocals return availablePort, retries } |> Async.runWithTimeout 15000 |> function | Some (availablePort, retries) -> availablePort |> _assert_eq (port + 2) retries |> _isBetween (if Runtime.isWindows () then 100 else 100) (if Runtime.isWindows () then 150 else 1200) true | _ -> false |> _assert_eq true ╭─[ 4.23s - stdout ]───────────────────────────────────────────────────────────╮ │ 00:00:09 #490 [Debug] 1 │ │ 00:00:09 #491 [Debug] 2 │ │ 00:00:09 #492 [Debug] _1 │ │ 00:00:09 #493 [Debug] _2 │ │ 00:00:09 #494 [Debug] _3 │ │ 00:00:09 #495 [Debug] 3 │ │ 00:00:09 #496 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:09 #497 [Debug] 4 │ │ 00:00:09 #498 [Verbose] waitForPortAccess / port: 5555 / retry: 0 │ │ 00:00:10 #499 [Verbose] waitForPortAccess / port: 5555 / retry: 100 │ │ 00:00:12 #500 [Verbose] waitForPortAccess / port: 5555 / retry: 200 │ │ 00:00:13 #501 [Verbose] waitForPortAccess / port: 5555 / retry: 300 │ │ 00:00:13 #502 [Debug] _4 │ │ 00:00:13 #503 [Debug] _5 │ │ 00:00:13 #504 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:13 #505 [Debug] 5 │ │ 00:00:13 #506 [Debug] 6 │ │ 5557 │ │ 304 │ │ 304 │ │ 304 │ │ True │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── //// test let port = 5555 let inline lockPorts () = async { trace Debug (fun () -> "_1") getLocals use listener1 = new System.Net.Sockets.TcpListener (System.Net.IPAddress.Parse "127.0.0.1", port) use listener2 = new System.Net.Sockets.TcpListener (System.Net.IPAddress.Parse "127.0.0.1", port + 1) trace Debug (fun () -> "_2") getLocals listener1.Start () listener2.Start () trace Debug (fun () -> "_3") getLocals do! Async.Sleep 400 trace Debug (fun () -> "_4") getLocals listener1.Stop () listener2.Stop () trace Debug (fun () -> "_5") getLocals } async { trace Debug (fun () -> "1") getLocals let! child = lockPorts () |> Async.StartChild trace Debug (fun () -> "2") getLocals do! Async.Sleep 240 trace Debug (fun () -> "3") getLocals let! availablePort = getAvailablePort (Some 60) port trace Debug (fun () -> "4") getLocals let! retries = waitForPortAccess (Some 60) false port trace Debug (fun () -> "5") getLocals do! child trace Debug (fun () -> "6") getLocals return availablePort, retries } |> Async.runWithTimeout 1500 |> function | Some (availablePort, retries) -> availablePort |> _assert_eq (port + 2) retries |> _isBetween (if Runtime.isWindows () then 2 else 1) (if Runtime.isWindows () then 10 else 120) true | _ -> false |> _assert_eq true ╭─[ 711.81ms - stdout ]────────────────────────────────────────────────────────╮ │ 00:00:13 #507 [Debug] 1 │ │ 00:00:13 #509 [Debug] 2 │ │ 00:00:13 #508 [Debug] _1 │ │ 00:00:13 #510 [Debug] _2 │ │ 00:00:13 #511 [Debug] _3 │ │ 00:00:13 #512 [Debug] 3 │ │ 00:00:13 #513 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:13 #514 [Debug] 4 │ │ 00:00:13 #515 [Verbose] waitForPortAccess / port: 5555 / retry: 0 │ │ 00:00:14 #516 [Debug] _4 │ │ 00:00:14 #517 [Debug] _5 │ │ 00:00:14 #518 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:14 #519 [Debug] 5 │ │ 00:00:14 #520 [Debug] 6 │ │ 5557 │ │ 13 │ │ 13 │ │ 13 │ │ True │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ [NbConvertApp] Converting notebook Networking.dib.ipynb to html /opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. validate(nb) /opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 return _pygments_highlight( [NbConvertApp] Writing 379331 bytes to Networking.dib.html ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ # Runtime (Polyglot) │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── #!import ../../lib/fsharp/Notebooks.dib #!import ../../lib/fsharp/Testing.dib ── fsharp - import ───────────────────────────────────────────────────────────── #r "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Asp NetCore.Html.Abstractions.dll" #r "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot Net.Interactive.dll" #r "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot Net.Interactive.FSharp.dll" #r "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot Net.Interactive.Formatting.dll" open System open System.IO open System.Text open Microsoft.DotNet.Interactive.Formatting ── fsharp - import ───────────────────────────────────────────────────────────── #r "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot Net.Interactive.FSharp.dll" open Microsoft.DotNet.Interactive.FSharp.FSharpKernelHelpers #r "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot Net.Interactive.dll" open type Microsoft.DotNet.Interactive.Kernel ── fsharp - import ───────────────────────────────────────────────────────────── //// test Formatter.ListExpansionLimit <- 100 ── fsharp - import ───────────────────────────────────────────────────────────── #r @"../../../../../../../.nuget/packages/expecto/10.1.0/lib/net6.0/Expecto.dll" ── fsharp - import ───────────────────────────────────────────────────────────── //// test type AssertExceptionFormatter (ex) = member _.Text = ex.ToString() .Replace("32m", "<span style=\"color: green;\">") .Replace("36m", "</span>") .Replace("31m", "<span style=\"color: red;\">") .Replace("\n", "<br/>\n") Formatter.Register<AssertExceptionFormatter> ((fun (x : AssertExceptionFormatter) -> x.Text), "text/html") ── fsharp - import ───────────────────────────────────────────────────────────── //// test let inline __expect fn log expected actual = if log then printfn $"{actual.ToDisplayString ()}" try "Testing.__expect" |> fn actual expected with :? Expecto.AssertException as ex -> AssertExceptionFormatter(ex).Display () |> ignore failwith (ex.GetType().FullName) let inline __contains log expected actual = __expect Expecto.Expect.contains log expected actual let inline _contains expected actual = __contains true expected actual let inline __assert_eq log expected actual = __expect Expecto.Expect.equal log expected actual let inline _assert_eq expected actual = __assert_eq true expected actual let inline __isGreaterThan log expected actual = __expect Expecto.Expect.isGreaterThan log expected... ── fsharp - import ───────────────────────────────────────────────────────────── //// test let inline __isBetween log a b actual = let inline isBetween actual (a, b) _ = __isGreaterThanOrEqual log a actual __isLessThanOrEqual log b actual __expect isBetween log (a, b) actual let inline _isBetween a b actual = __isBetween true a b actual ── fsharp ────────────────────────────────────────────────────────────────────── #r @"../../../../../../../.nuget/packages/fsharp.control.asyncseq/3.2.1/lib/netstan dard2.1/FSharp.Control.AsyncSeq.dll" #r @"../../../../../../../.nuget/packages/system.reactive/6.0.1-preview.1/lib/net6. 0/System.Reactive.dll" #r @"../../../../../../../.nuget/packages/system.reactive.linq/6.0.1-preview.1/lib/ netstandard2.0/System.Reactive.Linq.dll" #r @"../../../../../../../.nuget/packages/argu/6.2.2/lib/netstandard2.0/Argu.dll" #r @"../../../../../../../.nuget/packages/system.commandline/2.0.0-beta4.22272.1/li b/net6.0/System.CommandLine.dll" ── fsharp ────────────────────────────────────────────────────────────────────── #!import ../../lib/fsharp/Common.fs #!import ../../lib/fsharp/CommonFSharp.fs #!import ../../lib/fsharp/Async.fs #!import ../../lib/fsharp/AsyncSeq.fs #!import ../../lib/fsharp/Runtime.fs #!import ../../lib/fsharp/FileSystem.fs ── fsharp - import ───────────────────────────────────────────────────────────── #if !INTERACTIVE namespace Polyglot #endif module Common = let nl = System.Environment.NewLine let q = @"""" let inline cons head tail = head :: tail module String = let inline contains (value : string) (input : string) = input.Contains value let inline endsWith (value : string) (input : string) = input.EndsWith value let inline padLeft totalWidth paddingChar (input : string) = input.PadLeft (totalWidth, paddingChar) let inline replace (oldValue : string) (newValue : string) (input : string) = input.Replace (oldValue, newValue) let inline split separator (input : string) = input.Split separator let inline spli... ── fsharp - import ───────────────────────────────────────────────────────────── #if !INTERACTIVE namespace Polyglot #endif module CommonFSharp = open Common /// ## getUnionCaseName let inline getUnionCaseName<'T> (x: 'T) = match Reflection.FSharpValue.GetUnionFields(x, typeof<'T>) with | case, _ -> case.Name ── fsharp - import ───────────────────────────────────────────────────────────── #if !INTERACTIVE namespace Polyglot #endif module Async = open Common /// ## choice let inline choice asyncs = async { let e = Event<_> () use cts = new System.Threading.CancellationTokenSource () let fn = asyncs |> Seq.map (fun a -> async { let! x = a e.Trigger x }) |> Async.Parallel |> Async.Ignore Async.Start (fn, cts.Token) let! result = Async.AwaitEvent e.Publish cts.Cancel () return result } /// ## map let inline map fn a = async { let! x = a return fn x } /// ## catch let inline catch a = a |> Async.Catch ... ── fsharp - import ───────────────────────────────────────────────────────────── #if !INTERACTIVE namespace Polyglot #endif module AsyncSeq = open Common /// ## subscribeEvent let inline subscribeEvent (event: IEvent<'H, 'A>) map = let observable = System.Reactive.Linq.Observable.FromEventPattern<'H, 'A>(event.AddHandler, event.RemoveHandler) System.Reactive.Linq.Observable.Select (observable, fun event -> map event.EventArgs) |> FSharp.Control.AsyncSeq.ofObservableBuffered let subscribeToken (token : System.Threading.CancellationToken) = let tcs = new System.Threading.Tasks.TaskCompletionSource () System.Action tcs.SetResult |> token.Register |> ignore let start = System.DateTime.Now.Ticks FSharp.Control.AsyncSeq.unfoldAsync (fun (... ── fsharp - import ───────────────────────────────────────────────────────────── #if !INTERACTIVE namespace Polyglot #endif module Runtime = open Common /// ## isWindows let isWindows = fun () -> System.Runtime.InteropServices.RuntimeInformation.IsOSPlatform System.Runtime.InteropServices.OSPlatform.Windows |> memoize /// ## getExecutableSuffix let inline getExecutableSuffix () = if isWindows () then ".exe" else "" /// ## splitCommand type private CommandParseStep = | Start | Path of quoted: bool | Arguments let splitCommand (command: string) = let rec loop (path, args) chars step = match chars, step with | ('"' | '\'') :: tail, _ when path = "" -> loop (pat... ── fsharp - import ───────────────────────────────────────────────────────────── #if !INTERACTIVE namespace Polyglot #endif module FileSystem = open Common /// ## Operators module Operators = let inline (</>) a b = System.IO.Path.Combine (a, b) open Operators /// ## createTempDirectoryName let inline createTempDirectoryName () = let root = System.Reflection.Assembly.GetEntryAssembly().GetName().Name System.IO.Path.GetTempPath () </> $"!{root}" </> string (newGuidFromDateTime System.DateTime.Now) /// ## createTempDirectory let inline createTempDirectory () = let tempFolder = createTempDirectoryName () let result = System.IO.Directory.CreateDirectory tempFolder if not result.Exists then let ge... ── fsharp ────────────────────────────────────────────────────────────────────── open Common ── fsharp ────────────────────────────────────────────────────────────────────── //// test open FileSystem.Operators ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## isWindows │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let isWindows = fun () -> System.Runtime.InteropServices.RuntimeInformation.IsOSPlatform System.Runtime.InteropServices.OSPlatform.Windows |> memoize ── fsharp ────────────────────────────────────────────────────────────────────── //// test isWindows () ╭─[ 54.77ms - return value ]───────────────────────────────────────────────────╮ │ <div class="dni-plaintext"><pre>False</pre></div><style> │ │ .dni-code-hint { │ │ font-style: italic; │ │ overflow: hidden; │ │ white-space: nowrap; │ │ } │ │ .dni-treeview { │ │ white-space: nowrap; │ │ } │ │ .dni-treeview td { │ │ vertical-align: top; │ │ text-align: start; │ │ } │ │ details.dni-treeview { │ │ padding-left: 1em; │ │ } │ │ table td { │ │ text-align: start; │ │ } │ │ table tr { │ │ vertical-align: top; │ │ margin: 0em 0px; │ │ } │ │ table tr td pre │ │ { │ │ vertical-align: top !important; │ │ margin: 0em 0px !important; │ │ } │ │ table th { │ │ text-align: start; │ │ } │ │ </style> │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## getExecutableSuffix │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let inline getExecutableSuffix () = if isWindows () then ".exe" else "" ── fsharp ────────────────────────────────────────────────────────────────────── //// test getExecutableSuffix () ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## splitCommand │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── type private CommandParseStep = | Start | Path of quoted: bool | Arguments let splitCommand (command: string) = let rec loop (path, args) chars step = match chars, step with | ('"' | '\'') :: tail, _ when path = "" -> loop (path, args) tail (Path true) | ('"' | '\'') :: tail, Path true -> loop (path, args) tail (Path false) | ' ' :: tail, Path true -> loop ($"{path} ", args) tail (Path true) | ' ' :: tail, (Start | Path _) -> loop (path, args) tail Arguments | char :: tail, Arguments -> loop (path, $"{args}{char}") tail Arguments | char :: tail, _ -> loop ($"{path}{char}", args) tail step | _, _ -> path |> String.replace @"\" "/", args loop ("", "") (command |> Seq.toList) Start ── fsharp ────────────────────────────────────────────────────────────────────── //// test splitCommand "" |> _assert_eq ("", "") splitCommand "/a/b/c" |> _assert_eq ("/a/b/c", "") splitCommand "cat file.txt" |> _assert_eq ("cat", "file.txt") splitCommand """..\..\file.exe file1.txt file2.txt""" |> _assert_eq ("../../file.exe", "file1.txt file2.txt") splitCommand @"c:\dir\file.exe ""file1.txt file2.txt""" |> _assert_eq ("c:/dir/file.exe", @"""file1.txt file2.txt""") splitCommand @"""..\..\dir name\file.exe"" ""file 1.txt"" file2.txt" |> _assert_eq ("../../dir name/file.exe", @"""file 1.txt"" file2.txt") splitCommand @"""..\..\file 1.exe"" -c \\""echo 1\\""" |> _assert_eq ("../../file 1.exe", @"-c \\""echo 1\\""") splitCommand @"..\..\file 1.exe -c \\""echo 1\\""" |> _assert_eq ("../../file", @"1.exe -c \\""echo 1\\""") ╭─[ 51.20ms - stdout ]─────────────────────────────────────────────────────────╮ │ ( , ) │ │ ( /a/b/c, ) │ │ ( cat, file.txt ) │ │ ( ../../file.exe, file1.txt file2.txt ) │ │ ( c:/dir/file.exe, "file1.txt file2.txt" ) │ │ ( ../../dir name/file.exe, "file 1.txt" file2.txt ) │ │ ( ../../file 1.exe, -c \\"echo 1\\" ) │ │ ( ../../file, 1.exe -c \\"echo 1\\" ) │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## executeAsync │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── type ExecutionLine = { ProcessId : int Line : string Error : bool } type ExecutionOptions = { Command : string WorkingDirectory : string option CancellationToken : System.Threading.CancellationToken option OnLine : (ExecutionLine -> Async<unit>) option } let inline executeWithOptionsAsync (options : ExecutionOptions) = async { let fileName, arguments = options.Command |> splitCommand let workingDirectory = options.WorkingDirectory |> Option.defaultValue "" trace Debug (fun () -> $"executeAsync / options: {options}") getLocals let startInfo = System.Diagnostics.ProcessStartInfo ( Arguments = arguments, CreateNoWindow = true, FileName = fileName, RedirectStandardError = true, RedirectStandardOutput = true, StandardOutputEncoding = System.Text.Encoding.UTF8, UseShellExecute = false, WorkingDirectory = workingDirectory ) use proc = new System.Diagnostics.Process (StartInfo = startInfo) let output = System.Collections.Concurrent.ConcurrentStack<string> () let inline event error (e: System.Diagnostics.DataReceivedEventArgs) = async { if e.Data <> null then match options.OnLine with | Some onLine -> do! onLine { ProcessId = proc.Id Line = e.Data Error = error } | None -> () trace Verbose (fun () -> $"> {e.Data}") Common.getLocals output.Push $"{ if error then '[['.ToString() else System.String.Empty }{ e.Data }{ if error then ']]'.ToString() else System.String.Empty }" } proc.OutputDataReceived.Add (event false >> Async.StartImmediate) proc.ErrorDataReceived.Add (event true >> Async.StartImmediate) if proc.Start () |> not then failwith $"executeAsync / proc.Start () error" proc.BeginErrorReadLine () proc.BeginOutputReadLine () let! ct = options.CancellationToken |> Option.defaultValue System.Threading.CancellationToken.None |> Async.mergeCancellationTokenWithDefaultAsync use reg = ct.Register (fun _ -> if not proc.HasExited then proc.Kill () ) let! exitCode = async { try do! proc.WaitForExitAsync ct |> Async.AwaitTask return proc.ExitCode with :? System.Threading.Tasks.TaskCanceledException as ex -> trace Warning (fun () -> $"executeAsync / WaitForExitAsync / ex: {ex |> printException}") getLocals ex |> printException |> output.Push return System.Int32.MinValue } let output = output |> Seq.rev |> String.concat "\n" trace Debug (fun () -> $"executeAsync / exitCode: {exitCode} / output.Length: {output.Length}" ) getLocals return exitCode, output } let inline executeAsync command = executeWithOptionsAsync { Command = command CancellationToken = None OnLine = None WorkingDirectory = None } ── fsharp ────────────────────────────────────────────────────────────────────── //// test let tempFolder = FileSystem.createTempDirectory () let fileName = "test.txt" let path = tempFolder </> fileName async { let! exitCode, result = executeAsync @$"pwsh -c ""Get-Content {path}""" exitCode |> _assert_eq 1 result |> _stringContains "not exist" do! "0" |> FileSystem.writeAllTextAsync path return! executeWithOptionsAsync { Command = @$"pwsh -c ""Get-Content {fileName}""" CancellationToken = None OnLine = None WorkingDirectory = Some tempFolder } } |> Async.runWithTimeout 10000 |> function | Some (exitCode, output) -> exitCode |> _assert_eq 0 output |> _assert_eq "0" true | _ -> false |> _assert_eq true ╭─[ 1.51s - stdout ]───────────────────────────────────────────────────────────╮ │ 00:00:00 #1 [Debug] executeAsync / options: { Command = │ │ "pwsh -c "Get-Content │ │ /tmp/!dotnet-repl/20240320-1221-3577-7737-7f80f75b635e/test.txt"" │ │ WorkingDirectory = None │ │ CancellationToken = None │ │ OnLine = None } │ │ 00:00:00 #2 [Verbose] > Get-Content: Cannot find path │ │ '/tmp/!dotnet-repl/20240320-1221-3577-7737-7f80f75b635e/test.txt' because it │ │ does not exist. │ │ 00:00:00 #3 [Debug] executeAsync / exitCode: 1 / output.Length: 142 │ │ 1 │ │ [Get-Content: Cannot find path │ │ '/tmp/!dotnet-repl/20240320-1221-3577-7737-7f80f75b635e/test.txt' because it │ │ does not exist.] │ │ 00:00:00 #4 [Debug] executeAsync / options: { Command = "pwsh -c │ │ "Get-Content test.txt"" │ │ WorkingDirectory = │ │ Some "/tmp/!dotnet-repl/20240320-1221-3577-7737-7f80f75b635e" │ │ CancellationToken = None │ │ OnLine = None } │ │ 00:00:01 #5 [Verbose] > 0 │ │ 00:00:01 #6 [Debug] executeAsync / exitCode: 0 / output.Length: 1 │ │ 0 │ │ 0 │ │ True │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── //// test let tempFolder = FileSystem.createTempDirectory () let path = tempFolder </> "test.txt" let command = @$"pwsh -c ""Get-Content {path}""" async { do! "0" |> FileSystem.writeAllTextAsync path let cts = new System.Threading.CancellationTokenSource () trace Debug (fun () -> "1") getLocals let! result = executeWithOptionsAsync { Command = command CancellationToken = Some cts.Token OnLine = None WorkingDirectory = None } |> Async.StartChild trace Debug (fun () -> "2") getLocals do! Async.Sleep 100 trace Debug (fun () -> "3") getLocals cts.Cancel () trace Debug (fun () -> "4") getLocals let! exitCode, output = result trace Debug (fun () -> "5") getLocals return exitCode, output } |> Async.runWithTimeout 10000 |> function | Some (exitCode, output) -> exitCode |> _assert_eq -2147483648 output |> _assert_eq "System.Threading.Tasks.TaskCanceledException: A task was canceled." true | _ -> false |> _assert_eq true ╭─[ 460.72ms - stdout ]────────────────────────────────────────────────────────╮ │ 00:00:01 #7 [Debug] 1 │ │ 00:00:01 #9 [Debug] 2 │ │ 00:00:01 #8 [Debug] executeAsync / options: { Command = │ │ "pwsh -c "Get-Content │ │ /tmp/!dotnet-repl/20240320-1221-3729-2906-23deefa44904/test.txt"" │ │ WorkingDirectory = None │ │ CancellationToken = Some System.Threading.CancellationToken │ │ OnLine = None } │ │ 00:00:01 #10 [Debug] 3 │ │ 00:00:01 #11 [Debug] 4 │ │ 00:00:01 #12 [Warning] executeAsync / WaitForExitAsync / ex: │ │ System.Threading.Tasks.TaskCanceledException: A task was canceled. │ │ 00:00:01 #13 [Debug] executeAsync / exitCode: -2147483648 / output.Length: │ │ 66 │ │ 00:00:01 #14 [Debug] 5 │ │ -2147483648 │ │ System.Threading.Tasks.TaskCanceledException: A task was canceled. │ │ True │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## splitArgs │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let inline splitArgs commandLine = commandLine |> System.CommandLine.Parsing.CommandLineStringSplitter.Instance.Split ── fsharp ────────────────────────────────────────────────────────────────────── //// test """a b "c d" e""" |> splitArgs |> Seq.toArray |> _assert_eq [[| "a"; "b"; "c d"; "e" |]] ╭─[ 15.43ms - stdout ]─────────────────────────────────────────────────────────╮ │ [ a, b, c d, e ] │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## parseArgs │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let inline parseArgs<'T when 'T :> Argu.IArgParserTemplate> args = let assemblyName = System.Reflection.Assembly.GetEntryAssembly().GetName().Name let errorHandler : Argu.IExiter = if [[ "Microsoft.DotNet.Interactive.App"; "dotnet-repl" ]] |> List.contains assemblyName then Argu.ExceptionExiter () else Argu.ProcessExiter (function Argu.ErrorCode.HelpText -> None | _ -> Some System.ConsoleColor.Red) let parser = Argu.ArgumentParser.Create<'T> ( programName = $"{assemblyName}{getExecutableSuffix ()}", errorHandler = errorHandler ) parser.ParseCommandLine args ── fsharp ────────────────────────────────────────────────────────────────────── //// test [[<RequireQualifiedAccess>]] type Arguments = | [[<Argu.ArguAttributes.MainCommand; Argu.ArguAttributes.ExactlyOnce; Argu.ArguAttributes.Last>]] Paths of paths : string list interface Argu.IArgParserTemplate with member s.Usage = match s with | Paths _ -> nameof Paths ── fsharp ────────────────────────────────────────────────────────────────────── //// test Argu.ArgumentParser.Create<Arguments>().PrintUsage () ╭─[ 59.17ms - return value ]───────────────────────────────────────────────────╮ │ USAGE: dotnet-repl [--help] <paths>... │ │ │ │ PATHS: │ │ │ │ <paths>... Paths │ │ │ │ OPTIONS: │ │ │ │ --help display this list of options. │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── //// test fun () -> parseArgs<Arguments> [[||]] |> ignore |> _throwsC (fun ex _ -> printException ex |> _stringContains "Argu.ArguParseException: ERROR: missing parameter '<paths>...'." ) ╭─[ 32.19ms - stdout ]─────────────────────────────────────────────────────────╮ │ FSI_0030+it@3-246 │ │ Argu.ArguParseException: ERROR: missing parameter '<paths>...'. │ │ USAGE: dotnet-repl [--help] <paths>... │ │ │ │ PATHS: │ │ │ │ <paths>... Paths │ │ │ │ OPTIONS: │ │ │ │ --help display this list of options. │ │ │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let inline parseAllArgs<'T when 'T :> Argu.IArgParserTemplate> args = args |> parseArgs<'T> |> fun results -> results.GetAllResults () ── fsharp ────────────────────────────────────────────────────────────────────── //// test [[<RequireQualifiedAccess>]] type Arguments = | [[<Argu.ArguAttributes.MainCommand; Argu.ArguAttributes.ExactlyOnce; Argu.ArguAttributes.Last>]] Paths of paths : string list interface Argu.IArgParserTemplate with member s.Usage = match s with | Paths _ -> nameof Paths parseAllArgs<Arguments> [[| "a b"; "c" |]] |> _assert_eq [[ Arguments.Paths [[ "a b"; "c" ]] ]] ╭─[ 58.85ms - stdout ]─────────────────────────────────────────────────────────╮ │ FSharpList<Arguments> │ │ - paths: [ a b, c ] │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let inline parseArgsMap<'T when 'T :> Argu.IArgParserTemplate> args = args |> parseAllArgs<'T> |> List.groupBy CommonFSharp.getUnionCaseName<'T> |> Map.ofList ── fsharp ────────────────────────────────────────────────────────────────────── //// test parseArgsMap<Arguments> [[| "a b"; "c" |]] |> _assert_eq ( [[ nameof Arguments.Paths, [[ Arguments.Paths [[ "a b"; "c" ]] ]] ]] |> Map.ofList ) ╭─[ 32.60ms - stdout ]─────────────────────────────────────────────────────────╮ │ FSharpMap<String,FSharpList<Arguments>> │ │ - Key: Paths │ │ Value: FSharpList<Arguments> │ │ - paths: [ a b, c ] │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ [NbConvertApp] Converting notebook Runtime.dib.ipynb to html /opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. validate(nb) /opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 return _pygments_highlight( [NbConvertApp] Writing 339646 bytes to Runtime.dib.html ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ # Toml (Polyglot) │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── #!import ../../lib/fsharp/Notebooks.dib #!import ../../lib/fsharp/Testing.dib ── fsharp - import ───────────────────────────────────────────────────────────── #r "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Asp NetCore.Html.Abstractions.dll" #r "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot Net.Interactive.dll" #r "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot Net.Interactive.FSharp.dll" #r "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot Net.Interactive.Formatting.dll" open System open System.IO open System.Text open Microsoft.DotNet.Interactive.Formatting ── fsharp - import ───────────────────────────────────────────────────────────── #r "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot Net.Interactive.FSharp.dll" open Microsoft.DotNet.Interactive.FSharp.FSharpKernelHelpers #r "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot Net.Interactive.dll" open type Microsoft.DotNet.Interactive.Kernel ── fsharp - import ───────────────────────────────────────────────────────────── //// test Formatter.ListExpansionLimit <- 100 ── fsharp - import ───────────────────────────────────────────────────────────── #r @"../../../../../../../.nuget/packages/expecto/10.1.0/lib/net6.0/Expecto.dll" ── fsharp - import ───────────────────────────────────────────────────────────── //// test type AssertExceptionFormatter (ex) = member _.Text = ex.ToString() .Replace("32m", "<span style=\"color: green;\">") .Replace("36m", "</span>") .Replace("31m", "<span style=\"color: red;\">") .Replace("\n", "<br/>\n") Formatter.Register<AssertExceptionFormatter> ((fun (x : AssertExceptionFormatter) -> x.Text), "text/html") ── fsharp - import ───────────────────────────────────────────────────────────── //// test let inline __expect fn log expected actual = if log then printfn $"{actual.ToDisplayString ()}" try "Testing.__expect" |> fn actual expected with :? Expecto.AssertException as ex -> AssertExceptionFormatter(ex).Display () |> ignore failwith (ex.GetType().FullName) let inline __contains log expected actual = __expect Expecto.Expect.contains log expected actual let inline _contains expected actual = __contains true expected actual let inline __assert_eq log expected actual = __expect Expecto.Expect.equal log expected actual let inline _assert_eq expected actual = __assert_eq true expected actual let inline __isGreaterThan log expected actual = __expect Expecto.Expect.isGreaterThan log expected... ── fsharp - import ───────────────────────────────────────────────────────────── //// test let inline __isBetween log a b actual = let inline isBetween actual (a, b) _ = __isGreaterThanOrEqual log a actual __isLessThanOrEqual log b actual __expect isBetween log (a, b) actual let inline _isBetween a b actual = __isBetween true a b actual ── fsharp ────────────────────────────────────────────────────────────────────── #r @"../../../../../../../.nuget/packages/tomlyn/0.17.0/lib/net7.0/Tomlyn.dll" ── fsharp ────────────────────────────────────────────────────────────────────── #!import ../../lib/fsharp/Common.fs ── fsharp - import ───────────────────────────────────────────────────────────── #if !INTERACTIVE namespace Polyglot #endif module Common = let nl = System.Environment.NewLine let q = @"""" let inline cons head tail = head :: tail module String = let inline contains (value : string) (input : string) = input.Contains value let inline endsWith (value : string) (input : string) = input.EndsWith value let inline padLeft totalWidth paddingChar (input : string) = input.PadLeft (totalWidth, paddingChar) let inline replace (oldValue : string) (newValue : string) (input : string) = input.Replace (oldValue, newValue) let inline split separator (input : string) = input.Split separator let inline spli... ── fsharp ────────────────────────────────────────────────────────────────────── open Common ── fsharp ────────────────────────────────────────────────────────────────────── let inline (/./) (table: Tomlyn.Model.TomlTable) (key: string) : Tomlyn.Model.TomlTable = table.[[key]] :?> Tomlyn.Model.TomlTable let inline (/../) (table: Tomlyn.Model.TomlTable) (key: string) : 'T seq = table.[[key]] :?> Tomlyn.Model.TomlArray |> Seq.cast<'T> ── fsharp ────────────────────────────────────────────────────────────────────── //// test let tomlContent = """ [[extension]] paths = [["/a", "/b"]] """ let toml = Tomlyn.Toml.Parse tomlContent let tomlModel = Tomlyn.Toml.ToModel toml let paths : string seq = tomlModel /./ "extension" /../ "paths" paths |> Seq.toList |> _assert_eq [[ "/a"; "/b" ]] ╭─[ 193.83ms - stdout ]────────────────────────────────────────────────────────╮ │ [ /a, /b ] │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ [NbConvertApp] Converting notebook Toml.dib.ipynb to html /opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. validate(nb) /opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 return _pygments_highlight( [NbConvertApp] Writing 277987 bytes to Toml.dib.html 00:00:00 #1 [Debug] writeDibCode / output: Fs / path: Async.dib 00:00:00 #1 [Debug] writeDibCode / output: Fs / path: CommonFSharp.dib 00:00:00 #1 [Debug] writeDibCode / output: Fs / path: Common.dib 00:00:00 #1 [Debug] writeDibCode / output: Fs / path: AsyncSeq.dib 00:00:00 #4 [Debug] parseDibCode / output: Fs / file: CommonFSharp.dib 00:00:00 #3 [Debug] parseDibCode / output: Fs / file: Async.dib 00:00:00 #5 [Debug] parseDibCode / output: Fs / file: Common.dib 00:00:00 #5 [Debug] parseDibCode / output: Fs / file: AsyncSeq.dib 00:00:00 #6 [Debug] writeDibCode / output: Fs / path: Threading.dib 00:00:00 #8 [Debug] writeDibCode / output: Fs / path: FileSystem.dib 00:00:00 #9 [Debug] writeDibCode / output: Fs / path: Networking.dib 00:00:00 #10 [Debug] parseDibCode / output: Fs / file: Threading.dib 00:00:00 #11 [Debug] parseDibCode / output: Fs / file: FileSystem.dib 00:00:00 #12 [Debug] parseDibCode / output: Fs / file: Networking.dib 00:00:00 #7 [Debug] writeDibCode / output: Fs / path: Crypto.dib 00:00:00 #13 [Debug] writeDibCode / output: Fs / path: Runtime.dib 00:00:00 #15 [Debug] parseDibCode / output: Fs / file: Runtime.dib 00:00:00 #14 [Debug] parseDibCode / output: Fs / file: Crypto.dib 00:00:00 #16 [Debug] writeDibCode / output: Fs / path: Toml.dib 00:00:00 #17 [Debug] parseDibCode / output: Fs / file: Toml.dib
In [ ]:
{ . "$ScriptDir/../lib/rust/fable/build.ps1" } | Invoke-Block
── pwsh ──────────────────────────────────────────────────────────────────────── . ../../../scripts/nbs_header.ps1 . ../../../scripts/core.ps1 ── pwsh ──────────────────────────────────────────────────────────────────────── dotnet fable --optimize --lang rs --extension .rs ╭─[ 5.74s - stdout ]───────────────────────────────────────────────────────────╮ │ Fable 4.14.0: F# to Rust compiler (status: alpha) │ │ │ │ Thanks to the contributor! @inchingforward │ │ Stand with Ukraine! https://standwithukraine.com.ua/ │ │ │ │ Parsing fable-library-rust.fsproj... │ │ .> dotnet restore fable-library-rust.fable-temp.csproj │ │ -p:FABLE_COMPILER=true -p:FABLE_COMPILER_4=true -p:FABLE_COMPILER_RUST=true │ │ Determining projects to restore... │ │ Restored │ │ /home/runner/work/polyglot/polyglot/lib/rust/fable/fable-library-rust.fable- │ │ temp.csproj (in 67 ms). │ │ .> dotnet restore │ │ /home/runner/work/polyglot/polyglot/lib/rust/fable/fable-library-rust.fsproj │ │ Determining projects to restore... │ │ Restored │ │ /home/runner/work/polyglot/polyglot/lib/rust/fable/fable-library-rust.fsproj │ │ (in 251 ms). │ │ Project and references (1 source files) parsed in 4343ms │ │ │ │ Started Fable compilation... │ │ │ │ Fable compilation finished in 363ms │ │ │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ [NbConvertApp] Converting notebook build.dib.ipynb to html /opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. validate(nb) /opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 return _pygments_highlight( [NbConvertApp] Writing 273204 bytes to build.dib.html
In [ ]:
{ . "$ScriptDir/../apps/spiral/build.ps1" } | Invoke-Block
── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ # Supervisor (Polyglot) │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── #!import ../../lib/fsharp/Notebooks.dib #!import ../../lib/fsharp/Testing.dib ── fsharp - import ───────────────────────────────────────────────────────────── #r "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Asp NetCore.Html.Abstractions.dll" #r "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot Net.Interactive.dll" #r "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot Net.Interactive.FSharp.dll" #r "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot Net.Interactive.Formatting.dll" open System open System.IO open System.Text open Microsoft.DotNet.Interactive.Formatting ── fsharp - import ───────────────────────────────────────────────────────────── #r "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot Net.Interactive.FSharp.dll" open Microsoft.DotNet.Interactive.FSharp.FSharpKernelHelpers #r "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot Net.Interactive.dll" open type Microsoft.DotNet.Interactive.Kernel ── fsharp - import ───────────────────────────────────────────────────────────── //// test Formatter.ListExpansionLimit <- 100 ── fsharp - import ───────────────────────────────────────────────────────────── #r @"../../../../../../../.nuget/packages/expecto/10.1.0/lib/net6.0/Expecto.dll" ── fsharp - import ───────────────────────────────────────────────────────────── //// test type AssertExceptionFormatter (ex) = member _.Text = ex.ToString() .Replace("32m", "<span style=\"color: green;\">") .Replace("36m", "</span>") .Replace("31m", "<span style=\"color: red;\">") .Replace("\n", "<br/>\n") Formatter.Register<AssertExceptionFormatter> ((fun (x : AssertExceptionFormatter) -> x.Text), "text/html") ── fsharp - import ───────────────────────────────────────────────────────────── //// test let inline __expect fn log expected actual = if log then printfn $"{actual.ToDisplayString ()}" try "Testing.__expect" |> fn actual expected with :? Expecto.AssertException as ex -> AssertExceptionFormatter(ex).Display () |> ignore failwith (ex.GetType().FullName) let inline __contains log expected actual = __expect Expecto.Expect.contains log expected actual let inline _contains expected actual = __contains true expected actual let inline __assert_eq log expected actual = __expect Expecto.Expect.equal log expected actual let inline _assert_eq expected actual = __assert_eq true expected actual let inline __isGreaterThan log expected actual = __expect Expecto.Expect.isGreaterThan log expected... ── fsharp - import ───────────────────────────────────────────────────────────── //// test let inline __isBetween log a b actual = let inline isBetween actual (a, b) _ = __isGreaterThanOrEqual log a actual __isLessThanOrEqual log b actual __expect isBetween log (a, b) actual let inline _isBetween a b actual = __isBetween true a b actual ── fsharp ────────────────────────────────────────────────────────────────────── #r @"../../../../../../../.nuget/packages/fsharp.control.asyncseq/3.2.1/lib/netstan dard2.1/FSharp.Control.AsyncSeq.dll" #r @"../../../../../../../.nuget/packages/system.reactive/6.0.1-preview.1/lib/net6. 0/System.Reactive.dll" #r @"../../../../../../../.nuget/packages/system.reactive.linq/6.0.1-preview.1/lib/ netstandard2.0/System.Reactive.Linq.dll" #r @"../../../../../../../.nuget/packages/argu/6.2.2/lib/netstandard2.0/Argu.dll" #r @"../../../../../../../.nuget/packages/system.commandline/2.0.0-beta4.22272.1/li b/net6.0/System.CommandLine.dll" #r @"../../../../../../../.nuget/packages/microsoft.aspnetcore.http.connections.com mon/7.0.0/lib/net7.0/Microsoft.AspNetCore.Http.Connections.Common.dll" #r @"../../../../../../../.nuget/packages/microsoft.aspnetcore.http.connections.cli ent/7.0.0/lib/net7.0/Microsoft.AspNetCore.Http.Connections.Client.dll" #r @"../../../../../../../.nuget/packages/microsoft.aspnetcore.signalr.common/7.0.0 /lib/net7.0/Microsoft.AspNetCore.SignalR.Common.dll" #r @"../../../../../../../.nuget/packages/microsoft.aspnetcore.signalr.client/7.0.0 /lib/net7.0/Microsoft.AspNetCore.SignalR.Client.dll" #r @"../../../../../../../.nuget/packages/microsoft.aspnetcore.signalr.client.core/ 7.0.0/lib/net7.0/Microsoft.AspNetCore.SignalR.Client.Core.dll" #r @"../../../../../../../.nuget/packages/fsharp.json/0.4.1/lib/netstandard2.0/FSha rp.Json.dll" ── fsharp ────────────────────────────────────────────────────────────────────── #!import ../../lib/fsharp/Common.fs #!import ../../lib/fsharp/CommonFSharp.fs #!import ../../lib/fsharp/Threading.fs #!import ../../lib/fsharp/Async.fs #!import ../../lib/fsharp/AsyncSeq.fs #!import ../../lib/fsharp/Networking.fs #!import ../../lib/fsharp/Runtime.fs #!import ../../lib/fsharp/FileSystem.fs ── fsharp - import ───────────────────────────────────────────────────────────── #if !INTERACTIVE namespace Polyglot #endif module Common = let nl = System.Environment.NewLine let q = @"""" let inline cons head tail = head :: tail module String = let inline contains (value : string) (input : string) = input.Contains value let inline endsWith (value : string) (input : string) = input.EndsWith value let inline padLeft totalWidth paddingChar (input : string) = input.PadLeft (totalWidth, paddingChar) let inline replace (oldValue : string) (newValue : string) (input : string) = input.Replace (oldValue, newValue) let inline split separator (input : string) = input.Split separator let inline spli... ── fsharp - import ───────────────────────────────────────────────────────────── #if !INTERACTIVE namespace Polyglot #endif module CommonFSharp = open Common /// ## getUnionCaseName let inline getUnionCaseName<'T> (x: 'T) = match Reflection.FSharpValue.GetUnionFields(x, typeof<'T>) with | case, _ -> case.Name ── fsharp - import ───────────────────────────────────────────────────────────── #if !INTERACTIVE namespace Polyglot #endif module Threading = open Common /// ## newDisposableToken let inline newDisposableToken (mergeToken: System.Threading.CancellationToken option) = let cts = new System.Threading.CancellationTokenSource () let cts = match mergeToken with | None -> cts | Some mergeToken -> System.Threading.CancellationTokenSource.CreateLinkedTokenSource [[| cts.Token; mergeToken |]] let disposable = newDisposable cts.Cancel cts.Token, disposable ── fsharp - import ───────────────────────────────────────────────────────────── #if !INTERACTIVE namespace Polyglot #endif module Async = open Common /// ## choice let inline choice asyncs = async { let e = Event<_> () use cts = new System.Threading.CancellationTokenSource () let fn = asyncs |> Seq.map (fun a -> async { let! x = a e.Trigger x }) |> Async.Parallel |> Async.Ignore Async.Start (fn, cts.Token) let! result = Async.AwaitEvent e.Publish cts.Cancel () return result } /// ## map let inline map fn a = async { let! x = a return fn x } /// ## catch let inline catch a = a |> Async.Catch ... ── fsharp - import ───────────────────────────────────────────────────────────── #if !INTERACTIVE namespace Polyglot #endif module AsyncSeq = open Common /// ## subscribeEvent let inline subscribeEvent (event: IEvent<'H, 'A>) map = let observable = System.Reactive.Linq.Observable.FromEventPattern<'H, 'A>(event.AddHandler, event.RemoveHandler) System.Reactive.Linq.Observable.Select (observable, fun event -> map event.EventArgs) |> FSharp.Control.AsyncSeq.ofObservableBuffered let subscribeToken (token : System.Threading.CancellationToken) = let tcs = new System.Threading.Tasks.TaskCompletionSource () System.Action tcs.SetResult |> token.Register |> ignore let start = System.DateTime.Now.Ticks FSharp.Control.AsyncSeq.unfoldAsync (fun (... ── fsharp - import ───────────────────────────────────────────────────────────── #if !INTERACTIVE namespace Polyglot #endif module Networking = open Common /// ## testPortOpen let inline testPortOpen port = async { let! ct = Async.CancellationToken use client = new System.Net.Sockets.TcpClient () try do! client.ConnectAsync ("127.0.0.1", port, ct) |> Async.awaitValueTaskUnit return true with ex -> trace Verbose (fun () -> $"testPortOpen / ex: {ex |> printException}") getLocals return false } let inline testPortOpenTimeout timeout port = async { let! result = testPortOpen port |> Async.runWithTimeoutAsync timeout return match result with | None -> false ... ── fsharp - import ───────────────────────────────────────────────────────────── #if !INTERACTIVE namespace Polyglot #endif module Runtime = open Common /// ## isWindows let isWindows = fun () -> System.Runtime.InteropServices.RuntimeInformation.IsOSPlatform System.Runtime.InteropServices.OSPlatform.Windows |> memoize /// ## getExecutableSuffix let inline getExecutableSuffix () = if isWindows () then ".exe" else "" /// ## splitCommand type private CommandParseStep = | Start | Path of quoted: bool | Arguments let splitCommand (command: string) = let rec loop (path, args) chars step = match chars, step with | ('"' | '\'') :: tail, _ when path = "" -> loop (pat... ── fsharp - import ───────────────────────────────────────────────────────────── #if !INTERACTIVE namespace Polyglot #endif module FileSystem = open Common /// ## Operators module Operators = let inline (</>) a b = System.IO.Path.Combine (a, b) open Operators /// ## createTempDirectoryName let inline createTempDirectoryName () = let root = System.Reflection.Assembly.GetEntryAssembly().GetName().Name System.IO.Path.GetTempPath () </> $"!{root}" </> string (newGuidFromDateTime System.DateTime.Now) /// ## createTempDirectory let inline createTempDirectory () = let tempFolder = createTempDirectoryName () let result = System.IO.Directory.CreateDirectory tempFolder if not result.Exists then let ge... ── fsharp ────────────────────────────────────────────────────────────────────── open Common open FileSystem.Operators open Microsoft.AspNetCore.SignalR.Client ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## sendJson │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let inline sendJson (port : int) (json : string) = async { let! portOpen = Networking.testPortOpen port if portOpen then try let connection = HubConnectionBuilder().WithUrl($"http://127.0.0.1:{port}").Build() do! connection.StartAsync () |> Async.AwaitTask let! result = connection.InvokeAsync<string>("ClientToServerMsg", json) |> Async.AwaitTask do! connection.StopAsync () |> Async.AwaitTask trace Debug (fun () -> $"sendJson / port: {port} / json: {json} / result.Length: {result |> Option.ofObj |> Option.map String.length}") getLocals return Some result with ex -> trace Critical (fun () -> $"sendJson / port: {port} / json: {json} / ex: {ex |> printException}") getLocals return None else trace Debug (fun () -> "sendJson / error: port not open") getLocals return None } ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## sendObj │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let inline sendObj port obj = obj |> System.Text.Json.JsonSerializer.Serialize |> sendJson port ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## awaitCompiler │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── type VSCPos = {| line : int; character : int |} type VSCRange = VSCPos * VSCPos type RString = VSCRange * string type TracedError = {| trace : string list; message : string |} type ClientErrorsRes = | FatalError of string | TracedError of TracedError | PackageErrors of {| uri : string; errors : RString list |} | TokenizerErrors of {| uri : string; errors : RString list |} | ParserErrors of {| uri : string; errors : RString list |} | TypeErrors of {| uri : string; errors : RString list |} ── fsharp ────────────────────────────────────────────────────────────────────── let inline awaitCompiler port cancellationToken = async { let! ct = cancellationToken |> Option.defaultValue System.Threading.CancellationToken.None |> Async.mergeCancellationTokenWithDefaultAsync let cts = new System.Threading.CancellationTokenSource () let compiler = MailboxProcessor.Start (fun inbox -> async { let! availablePort = Networking.getAvailablePort (Some 60) port if availablePort <> port then inbox.Post port else let repositoryRoot = FileSystem.getSourceDirectory () |> FileSystem.findParent ".paket" false let compilerPath = repositoryRoot </> "deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release" |> System.IO.Path.GetFullPath let dllPath = compilerPath </> "Spiral.dll" let! exitCode, result = Runtime.executeWithOptionsAsync { Command = $@"dotnet ""{dllPath}"" --port {availablePort} --default-int i32 --default-float f64" CancellationToken = Some ct WorkingDirectory = None OnLine = Some <| fun { Line = line } -> async { if line |> String.contains $"Server bound to: http://localhost:{availablePort}" then do! Networking.waitForPortAccess (Some 500) true availablePort |> Async.Ignore let rec loop retry = async { let getLocals () = $"port: {availablePort} / retry: {retry} / {getLocals ()}" try let pingObj = {| Ping = true |} let! pingResult = pingObj |> sendObj availablePort trace Verbose (fun () -> $"awaitCompiler / Ping / result: {pingResult}") getLocals with ex -> trace Verbose (fun () -> $"awaitCompiler / Ping / ex: {ex |> printException}") getLocals do! Async.Sleep 10 do! loop (retry + 1) } do! loop 0 inbox.Post availablePort } } trace Debug (fun () -> $"awaitCompiler / exitCode: {exitCode} / result: {result}") getLocals cts.Cancel () }, ct) let! serverPort = compiler.Receive () let connection = HubConnectionBuilder().WithUrl($"http://127.0.0.1:{serverPort}").Build () do! connection.StartAsync () |> Async.AwaitTask let event = Event<_> () let disposable = connection.On<string> ("ServerToClientMsg", event.Trigger) let stream = FSharp.Control.AsyncSeq.unfoldAsync (fun () -> async { let! msg = event.Publish |> Async.AwaitEvent return Some (msg |> FSharp.Json.Json.deserialize<ClientErrorsRes>, ()) }) () let disposable = newDisposable (fun () -> disposable.Dispose () connection.StopAsync () |> Async.AwaitTask |> Async.StartImmediate ) return serverPort, stream, cts.Token, disposable } ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## getFileUri │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let inline getFileUri (path : string) = let path = if Runtime.isWindows () |> not then path else $"{path.[[0]] |> System.Char.ToLower}{path.[[1..]]}" |> String.replace "\\" "/" $"file:///{path |> String.trimStart [[| '/' |]]}" ── fsharp ────────────────────────────────────────────────────────────────────── let inline getFilePathFromUri uri = match System.Uri.TryCreate (uri, System.UriKind.Absolute) with | true, uri -> uri.AbsolutePath |> System.IO.Path.GetFullPath | _ -> failwith "invalid uri" ── fsharp ────────────────────────────────────────────────────────────────────── let inline getCompilerPort () = 13805 ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## serialize_obj │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let serializeObj obj = obj |> FSharp.Json.Json.serialize |> String.replace "\\\\" "\\" |> String.replace "\\r\\n" "\n" |> String.replace "\\n" "\n" ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## buildFile │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let inline buildFile timeout port cancellationToken path = async { let fullPath = path |> System.IO.Path.GetFullPath let fileDir = fullPath |> System.IO.Path.GetDirectoryName let fileName = fullPath |> System.IO.Path.GetFileNameWithoutExtension let! code = fullPath |> FileSystem.readAllTextAsync let eventFilter = function | FileSystem.FileSystemChange.Changed (path, _) when path = $"{fileName}.fsx" -> true | _ -> false let stream, disposable = fileDir |> FileSystem.watchDirectory eventFilter use _ = disposable let token, disposable = Threading.newDisposableToken cancellationToken use _ = disposable let! serverPort, errors, ct, disposable = awaitCompiler port (Some token) use _ = disposable let fsxContentSeq = stream |> FSharp.Control.AsyncSeq.choose (function | _, (FileSystem.FileSystemChange.Changed (path, Some content) as event) when event |> eventFilter -> Some content | _ -> None ) |> FSharp.Control.AsyncSeq.map (fun content -> Some (content |> String.replace "\r\n" "\n"), None ) let inline printErrorData (data : {| uri : string; errors : RString list |}) = let fileName = data.uri |> System.IO.Path.GetFileName let errors = data.errors |> List.map snd |> String.concat "\n" $"{fileName}:\n{errors}" let errorsSeq = errors |> FSharp.Control.AsyncSeq.choose (fun error -> match error with | FatalError message -> Some (message, error) | TracedError data -> Some (data.message, error) | PackageErrors data when data.errors |> List.isEmpty |> not -> Some (data |> printErrorData, error) | TokenizerErrors data when data.errors |> List.isEmpty |> not -> Some (data |> printErrorData, error) | ParserErrors data when data.errors |> List.isEmpty |> not -> Some (data |> printErrorData, error) | TypeErrors data when data.errors |> List.isEmpty |> not -> Some (data |> printErrorData, error) | _ -> None ) |> FSharp.Control.AsyncSeq.map (fun (message, error) -> None, Some (message, error) ) let timerSeq = 1000 |> FSharp.Control.AsyncSeq.intervalMs |> FSharp.Control.AsyncSeq.map (fun _ -> None, None) let outputSeq = [[ fsxContentSeq; errorsSeq; timerSeq ]] |> FSharp.Control.AsyncSeq.mergeAll let! outputChild = ((None, [[]], 0), outputSeq) ||> FSharp.Control.AsyncSeq.scan ( fun (fsxContentResult, errors, typeErrorCount) (fsxContent, error) -> match fsxContent, error with | Some fsxContent, None -> Some fsxContent, errors, typeErrorCount | None, Some (_, FatalError "File main has a type error somewhere in its path.") -> fsxContentResult, errors, typeErrorCount + 1 | None, Some error -> fsxContentResult, error :: errors, typeErrorCount | None, None when typeErrorCount >= 1 -> fsxContentResult, errors, typeErrorCount + 1 | _ -> fsxContentResult, errors, typeErrorCount ) |> FSharp.Control.AsyncSeq.takeWhileInclusive (fun (fsxContent, errors, typeErrorCount) -> trace Debug (fun () -> $"buildFile / takeWhileInclusive / fsxContent: {fsxContent |> Option.defaultValue System.String.Empty |> String.ellipsis 750} / errors: {errors |> serializeObj} / typeErrorCount: {typeErrorCount}") getLocals match fsxContent, errors with | None, [[]] when typeErrorCount > 2 -> false | None, [[]] -> true | _ -> false ) |> FSharp.Control.AsyncSeq.tryLast |> Async.withCancellationToken ct |> Async.catch |> Async.runWithTimeoutAsync timeout |> Async.StartChild let fileOpenObj = {| FileOpen = {| uri = fullPath |> getFileUri; spiText = code |} |} let! _fileOpenResult = fileOpenObj |> sendObj serverPort do! Async.Sleep 60 let buildFileObj = {| BuildFile = {| uri = fullPath |> getFileUri; backend = "Fsharp" |} |} let! _buildFileResult = buildFileObj |> sendObj serverPort return! outputChild |> Async.map (function | Some (Ok (Some (message, errors, _))) -> message, errors |> List.distinct |> List.rev | Some (Error ex) -> trace Critical (fun () -> $"buildFile / error: {ex |> serializeObj}") getLocals None, [[]] | _ -> None, [[]] ) } ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## persistCode │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let inline persistCode code = async { let tempDir = FileSystem.createTempDirectory () let mainPath = tempDir </> "main.spi" do! code |> FileSystem.writeAllTextAsync mainPath let repositoryRoot = FileSystem.getSourceDirectory () |> FileSystem.findParent ".paket" false let spiprojPath = tempDir </> "package.spiproj" let spiprojCode = $"""packageDir: {repositoryRoot </> "lib"} packages: |core- spiral- modules: main """ do! spiprojCode |> FileSystem.writeAllTextAsync spiprojPath let disposable = newDisposable (fun () -> () // tempDir |> FileSystem.deleteDirectoryAsync |> Async.Ignore |> Async.RunSynchronously ) return mainPath, disposable } ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## buildCode │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let inline buildCode timeout cancellationToken code = async { let! mainPath, disposable = persistCode code use _ = disposable let port = getCompilerPort () return! mainPath |> buildFile timeout port cancellationToken } ── fsharp ────────────────────────────────────────────────────────────────────── //// test let buildCode timeout cancellationToken code = buildCode timeout cancellationToken code ── fsharp ────────────────────────────────────────────────────────────────────── //// test """inl app () = console.write_line "text" 1i32 inl main () = app |> dyn |> ignore """ |> buildCode 15000 None |> Async.runWithTimeout 15000 |> Option.map (fun (fsxContent, errors) -> fsxContent, errors |> List.map fst) |> _assert_eq ( Some ( Some """let rec closure0 () () : int32 = let v0 : string = "text" System.Console.WriteLine v0 1 let v0 : (unit -> int32) = closure0() () """, [[]] ) ) ╭─[ 2.34s - stdout ]───────────────────────────────────────────────────────────╮ │ 00:00:00 #1 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:00 #2 [Debug] executeAsync / options: { Command = │ │ "dotnet "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The │ │ Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" │ │ --port 13805 --default-int i32 --default-float f64" │ │ WorkingDirectory = None │ │ CancellationToken = Some System.Threading.CancellationToken │ │ OnLine = Some <fun:buildCode@3-1005> } │ │ 00:00:00 #3 [Verbose] > pwd: /home/runner/work/polyglot/polyglot/apps/spiral │ │ 00:00:00 #4 [Verbose] > dll_path: │ │ /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral │ │ Language 2/artifacts/bin/The Spiral Language 2/release │ │ 00:00:00 #5 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:00 #6 [Verbose] waitForPortAccess / port: 13805 / retry: 0 │ │ 00:00:00 #7 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:00 #8 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:00 #9 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:00 #10 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:00 #11 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:00 #12 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:00 #13 [Verbose] > Starting the Spiral Server. It is bound to: │ │ http://localhost:13805 │ │ 00:00:00 #14 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:00 #15 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:00 #16 [Debug] sendJson / port: 13805 / json: {"Ping":true} / │ │ result.Length: │ │ 00:00:00 #17 [Verbose] awaitCompiler / Ping / result: Some(null) / port: │ │ 13805 / retry: 0 │ │ 00:00:00 #18 [Verbose] > Server bound to: http://localhost:13805 │ │ 00:00:00 #19 [Debug] buildFile / takeWhileInclusive / fsxContent: / errors: │ │ [] / typeErrorCount: 0 │ │ 00:00:00 #20 [Debug] buildFile / takeWhileInclusive / fsxContent: / errors: │ │ [] / typeErrorCount: 0 │ │ 00:00:00 #21 [Debug] sendJson / port: 13805 / json: │ │ {"FileOpen":{"spiText":"inl app () =\n console.write_line │ │ \u0022text\u0022\n 1i32\n\ninl main () =\n app\n |\u003E dyn\n │ │ |\u003E │ │ ignore\n","uri":"file:///tmp/!dotnet-repl/20240320-1222-1147-4792-445c12c046 │ │ d3/main.spi"}} / result.Length: │ │ 00:00:00 #22 [Debug] sendJson / port: 13805 / json: │ │ {"BuildFile":{"backend":"Fsharp","uri":"file:///tmp/!dotnet-repl/20240320-12 │ │ 22-1147-4792-445c12c046d3/main.spi"}} / result.Length: │ │ 00:00:01 #23 [Verbose] > Building │ │ /tmp/!dotnet-repl/20240320-1222-1147-4792-445c12c046d3/main.spi │ │ 00:00:01 #24 [Debug] buildFile / takeWhileInclusive / fsxContent: / errors: │ │ [] / typeErrorCount: 0 │ │ 00:00:02 #25 [Debug] buildFile / takeWhileInclusive / fsxContent: let rec │ │ closure0 () () : int32 = │ │ let v0 : string = "text" │ │ System.Console.WriteLine v0 │ │ 1 │ │ let v0 : (unit -> int32) = closure0() │ │ () │ │ / errors: [] / typeErrorCount: 0 │ │ 00:00:02 #26 [Debug] watchWithFilter / Disposing watch stream / filter: │ │ FileName, LastWrite │ │ FSharpOption<Tuple<FSharpOption<String>,FSharpList<String>>> │ │ Value: - FSharpOption<String> │ │ Value: let rec closure0 () () : int32 = │ │ let v0 : string = "text" │ │ System.Console.WriteLine v0 │ │ 1 │ │ let v0 : (unit -> int32) = closure0() │ │ () │ │ │ │ - [ ] │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── //// test "" |> buildCode 10000 None |> Async.runWithTimeout 10000 |> _assert_eq None ╭─[ 10.10s - stdout ]──────────────────────────────────────────────────────────╮ │ 00:00:02 #27 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:02 #28 [Debug] executeAsync / options: { Command = │ │ "dotnet "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The │ │ Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" │ │ --port 13805 --default-int i32 --default-float f64" │ │ WorkingDirectory = None │ │ CancellationToken = Some System.Threading.CancellationToken │ │ OnLine = Some <fun:buildCode@3-1005> } │ │ 00:00:02 #29 [Verbose] > pwd: │ │ /home/runner/work/polyglot/polyglot/apps/spiral │ │ 00:00:02 #30 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:02 #32 [Verbose] > dll_path: │ │ /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral │ │ Language 2/artifacts/bin/The Spiral Language 2/release │ │ 00:00:02 #32 [Verbose] waitForPortAccess / port: 13805 / retry: 0 │ │ 00:00:02 #33 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:02 #34 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:02 #35 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:02 #36 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:02 #37 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:02 #38 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:02 #39 [Verbose] > Starting the Spiral Server. It is bound to: │ │ http://localhost:13805 │ │ 00:00:02 #40 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:02 #41 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:02 #42 [Debug] sendJson / port: 13805 / json: {"Ping":true} / │ │ result.Length: │ │ 00:00:02 #43 [Verbose] awaitCompiler / Ping / result: Some(null) / port: │ │ 13805 / retry: 0 │ │ 00:00:02 #44 [Verbose] > Server bound to: http://localhost:13805 │ │ 00:00:02 #45 [Debug] buildFile / takeWhileInclusive / fsxContent: / errors: │ │ [] / typeErrorCount: 0 │ │ 00:00:02 #46 [Debug] buildFile / takeWhileInclusive / fsxContent: / errors: │ │ [] / typeErrorCount: 0 │ │ 00:00:02 #47 [Debug] sendJson / port: 13805 / json: │ │ {"FileOpen":{"spiText":"","uri":"file:///tmp/!dotnet-repl/20240320-1222-1380 │ │ -8082-806c5df4642d/main.spi"}} / result.Length: │ │ 00:00:02 #48 [Debug] sendJson / port: 13805 / json: │ │ {"BuildFile":{"backend":"Fsharp","uri":"file:///tmp/!dotnet-repl/20240320-12 │ │ 22-1380-8082-806c5df4642d/main.spi"}} / result.Length: │ │ 00:00:03 #49 [Verbose] > Building │ │ /tmp/!dotnet-repl/20240320-1222-1380-8082-806c5df4642d/main.spi │ │ 00:00:03 #50 [Debug] buildFile / takeWhileInclusive / fsxContent: / errors: │ │ [] / typeErrorCount: 0 │ │ 00:00:04 #51 [Verbose] > Cannot find `main` in file main. │ │ 00:00:04 #52 [Verbose] > Build skipped for │ │ /tmp/!dotnet-repl/20240320-1222-1380-8082-806c5df4642d/main.spi │ │ 00:00:04 #53 [Debug] buildFile / takeWhileInclusive / fsxContent: / errors: │ │ [] / typeErrorCount: 0 │ │ 00:00:05 #54 [Debug] buildFile / takeWhileInclusive / fsxContent: / errors: │ │ [] / typeErrorCount: 0 │ │ 00:00:06 #55 [Debug] buildFile / takeWhileInclusive / fsxContent: / errors: │ │ [] / typeErrorCount: 0 │ │ 00:00:07 #56 [Debug] buildFile / takeWhileInclusive / fsxContent: / errors: │ │ [] / typeErrorCount: 0 │ │ 00:00:08 #57 [Debug] buildFile / takeWhileInclusive / fsxContent: / errors: │ │ [] / typeErrorCount: 0 │ │ 00:00:09 #58 [Debug] buildFile / takeWhileInclusive / fsxContent: / errors: │ │ [] / typeErrorCount: 0 │ │ 00:00:10 #59 [Debug] buildFile / takeWhileInclusive / fsxContent: / errors: │ │ [] / typeErrorCount: 0 │ │ 00:00:11 #60 [Debug] buildFile / takeWhileInclusive / fsxContent: / errors: │ │ [] / typeErrorCount: 0 │ │ 00:00:12 #61 [Debug] runWithTimeoutAsync / timeout: 10000 │ │ 00:00:12 #62 [Debug] watchWithFilter / Disposing watch stream / filter: │ │ FileName, LastWrite │ │ <null> │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── //// test "inl app () = 0i32 inl a = 1 inl main () = app |> dyn |> ignore " |> buildCode 10000 None |> Async.runWithTimeout 10000 |> Option.map (fun (fsxContent, errors) -> fsxContent, errors |> List.map fst) |> _assert_eq ( Some ( None, [[ "main.spi: Global inl/let statements should all return functions known at parse time." ]] ) ) ╭─[ 991.53ms - stdout ]────────────────────────────────────────────────────────╮ │ 00:00:12 #63 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:12 #64 [Debug] executeAsync / options: { Command = │ │ "dotnet "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The │ │ Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" │ │ --port 13805 --default-int i32 --default-float f64" │ │ WorkingDirectory = None │ │ CancellationToken = Some System.Threading.CancellationToken │ │ OnLine = Some <fun:buildCode@3-1005> } │ │ 00:00:12 #65 [Verbose] > pwd: │ │ /home/runner/work/polyglot/polyglot/apps/spiral │ │ 00:00:12 #66 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:12 #67 [Verbose] waitForPortAccess / port: 13805 / retry: 0 │ │ 00:00:12 #68 [Verbose] > dll_path: │ │ /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral │ │ Language 2/artifacts/bin/The Spiral Language 2/release │ │ 00:00:12 #69 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:12 #70 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:12 #71 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:12 #72 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:12 #73 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:12 #74 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:12 #75 [Verbose] > Starting the Spiral Server. It is bound to: │ │ http://localhost:13805 │ │ 00:00:12 #76 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:12 #77 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:12 #80 [Debug] sendJson / port: 13805 / json: {"Ping":true} / │ │ result.Length: │ │ 00:00:12 #81 [Verbose] awaitCompiler / Ping / result: Some(null) / port: │ │ 13805 / retry: 0 │ │ 00:00:12 #82 [Verbose] > Server bound to: http://localhost:13805 │ │ 00:00:12 #83 [Debug] buildFile / takeWhileInclusive / fsxContent: / errors: │ │ [] / typeErrorCount: 0 │ │ 00:00:12 #84 [Debug] buildFile / takeWhileInclusive / fsxContent: / errors: │ │ [] / typeErrorCount: 0 │ │ 00:00:12 #85 [Debug] sendJson / port: 13805 / json: │ │ {"FileOpen":{"spiText":"inl app () =\n 0i32\n\ninl a = 1\n\ninl main () │ │ =\n app\n |\u003E dyn\n |\u003E │ │ ignore\n","uri":"file:///tmp/!dotnet-repl/20240320-1222-2391-9165-92cde49743 │ │ 95/main.spi"}} / result.Length: │ │ 00:00:12 #86 [Debug] sendJson / port: 13805 / json: │ │ {"BuildFile":{"backend":"Fsharp","uri":"file:///tmp/!dotnet-repl/20240320-12 │ │ 22-2391-9165-92cde4974395/main.spi"}} / result.Length: │ │ 00:00:13 #87 [Verbose] > Building │ │ /tmp/!dotnet-repl/20240320-1222-2391-9165-92cde4974395/main.spi │ │ 00:00:13 #88 [Debug] buildFile / takeWhileInclusive / fsxContent: / errors: │ │ [ │ │ [ │ │ "main.spi: │ │ Global inl/let statements should all return functions known at parse time.", │ │ { │ │ "ParserErrors": { │ │ "errors": [ │ │ [ │ │ [ │ │ { │ │ "character": 0, │ │ "line": 3 │ │ }, │ │ { │ │ "character": 9, │ │ "line": 3 │ │ } │ │ ], │ │ "Global inl/let statements should all return functions known at │ │ parse time." │ │ ] │ │ ], │ │ "uri": │ │ "file:///tmp/!dotnet-repl/20240320-1222-2391-9165-92cde4974395/main.spi" │ │ } │ │ } │ │ ] │ │ ] / typeErrorCount: 0 │ │ 00:00:13 #89 [Debug] watchWithFilter / Disposing watch stream / filter: │ │ FileName, LastWrite │ │ FSharpOption<Tuple<FSharpOption<String>,FSharpList<String>>> │ │ Value: - <null> │ │ - [ main.spi: │ │ Global inl/let statements should all return functions known at parse time. ] │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── //// test """inl main () = 1i32 / 0i32 """ |> buildCode 10000 None |> Async.runWithTimeout 10000 |> Option.map (fun (fsxContent, errors) -> fsxContent, errors |> List.map fst) |> _assert_eq ( Some ( None, [[ "An attempt to divide by zero has been detected at compile time." ]] ) ) ╭─[ 1.88s - stdout ]───────────────────────────────────────────────────────────╮ │ 00:00:13 #90 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:13 #91 [Debug] executeAsync / options: { Command = │ │ "dotnet "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The │ │ Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" │ │ --port 13805 --default-int i32 --default-float f64" │ │ WorkingDirectory = None │ │ CancellationToken = Some System.Threading.CancellationToken │ │ OnLine = Some <fun:buildCode@3-1005> } │ │ 00:00:13 #92 [Verbose] > pwd: │ │ /home/runner/work/polyglot/polyglot/apps/spiral │ │ 00:00:13 #93 [Verbose] > dll_path: │ │ /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral │ │ Language 2/artifacts/bin/The Spiral Language 2/release │ │ 00:00:13 #94 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:13 #95 [Verbose] waitForPortAccess / port: 13805 / retry: 0 │ │ 00:00:13 #96 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:13 #97 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:13 #98 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:13 #99 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:13 #100 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:13 #101 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:13 #102 [Verbose] > Starting the Spiral Server. It is bound to: │ │ http://localhost:13805 │ │ 00:00:13 #103 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:13 #104 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:13 #106 [Debug] sendJson / port: 13805 / json: {"Ping":true} / │ │ result.Length: │ │ 00:00:13 #107 [Verbose] awaitCompiler / Ping / result: Some(null) / port: │ │ 13805 / retry: 0 │ │ 00:00:13 #108 [Verbose] > Server bound to: http://localhost:13805 │ │ 00:00:13 #109 [Debug] buildFile / takeWhileInclusive / fsxContent: / │ │ errors: [] / typeErrorCount: 0 │ │ 00:00:13 #110 [Debug] buildFile / takeWhileInclusive / fsxContent: / │ │ errors: [] / typeErrorCount: 0 │ │ 00:00:13 #111 [Debug] sendJson / port: 13805 / json: │ │ {"FileOpen":{"spiText":"inl main () =\n 1i32 / │ │ 0i32\n","uri":"file:///tmp/!dotnet-repl/20240320-1222-2491-9153-9afab6407398 │ │ /main.spi"}} / result.Length: │ │ 00:00:13 #112 [Debug] sendJson / port: 13805 / json: │ │ {"BuildFile":{"backend":"Fsharp","uri":"file:///tmp/!dotnet-repl/20240320-12 │ │ 22-2491-9153-9afab6407398/main.spi"}} / result.Length: │ │ 00:00:14 #113 [Verbose] > Building │ │ /tmp/!dotnet-repl/20240320-1222-2491-9153-9afab6407398/main.spi │ │ 00:00:14 #115 [Debug] buildFile / takeWhileInclusive / fsxContent: / │ │ errors: [] / typeErrorCount: 0 │ │ 00:00:15 #116 [Debug] buildFile / takeWhileInclusive / fsxContent: / │ │ errors: [ │ │ [ │ │ "An attempt to divide by zero has been detected at compile time.", │ │ { │ │ "TracedError": { │ │ "message": "An attempt to divide by zero has been detected at │ │ compile time.", │ │ "trace": [ │ │ "Error trace on line: 1, column: 10 in module: │ │ /tmp/!dotnet-repl/20240320-1222-2491-9153-9afab6407398/main.spi. │ │ inl main () = │ │ ^ │ │ ", │ │ "Error trace on line: 2, column: 5 in module: │ │ /tmp/!dotnet-repl/20240320-1222-2491-9153-9afab6407398/main.spi. │ │ 1i32 / 0i32 │ │ ^ │ │ " │ │ ] │ │ } │ │ } │ │ ] │ │ ] / typeErrorCount: 0 │ │ 00:00:15 #117 [Debug] watchWithFilter / Disposing watch stream / filter: │ │ FileName, LastWrite │ │ FSharpOption<Tuple<FSharpOption<String>,FSharpList<String>>> │ │ Value: - <null> │ │ - [ An attempt to divide by zero has been detected at compile time. ] │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── //// test """inl main () = 1 + "" """ |> buildCode 10000 None |> Async.runWithTimeout 10000 |> Option.map (fun (fsxContent, errors) -> fsxContent, errors |> List.map fst) |> _assert_eq ( Some ( None, [[ "main.spi: Constraint satisfaction error. Got: string Fails to satisfy: number" ]] ) ) ╭─[ 1.70s - stdout ]───────────────────────────────────────────────────────────╮ │ 00:00:15 #118 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:15 #119 [Debug] executeAsync / options: { Command = │ │ "dotnet "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The │ │ Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" │ │ --port 13805 --default-int i32 --default-float f64" │ │ WorkingDirectory = None │ │ CancellationToken = Some System.Threading.CancellationToken │ │ OnLine = Some <fun:buildCode@3-1005> } │ │ 00:00:15 #120 [Verbose] > pwd: │ │ /home/runner/work/polyglot/polyglot/apps/spiral │ │ 00:00:15 #121 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:15 #122 [Verbose] waitForPortAccess / port: 13805 / retry: 0 │ │ 00:00:15 #123 [Verbose] > dll_path: │ │ /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral │ │ Language 2/artifacts/bin/The Spiral Language 2/release │ │ 00:00:15 #124 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:15 #125 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:15 #126 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:15 #127 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:15 #128 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:15 #129 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:15 #130 [Verbose] > Starting the Spiral Server. It is bound to: │ │ http://localhost:13805 │ │ 00:00:15 #131 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:15 #132 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:15 #133 [Debug] sendJson / port: 13805 / json: {"Ping":true} / │ │ result.Length: │ │ 00:00:15 #134 [Verbose] awaitCompiler / Ping / result: Some(null) / port: │ │ 13805 / retry: 0 │ │ 00:00:15 #135 [Verbose] > Server bound to: http://localhost:13805 │ │ 00:00:15 #136 [Debug] buildFile / takeWhileInclusive / fsxContent: / │ │ errors: [] / typeErrorCount: 0 │ │ 00:00:15 #137 [Debug] buildFile / takeWhileInclusive / fsxContent: / │ │ errors: [] / typeErrorCount: 0 │ │ 00:00:15 #138 [Debug] sendJson / port: 13805 / json: │ │ {"FileOpen":{"spiText":"inl main () =\n 1 \u002B │ │ \u0022\u0022\n","uri":"file:///tmp/!dotnet-repl/20240320-1222-2681-8120-8630 │ │ 094f425a/main.spi"}} / result.Length: │ │ 00:00:15 #140 [Debug] sendJson / port: 13805 / json: │ │ {"BuildFile":{"backend":"Fsharp","uri":"file:///tmp/!dotnet-repl/20240320-12 │ │ 22-2681-8120-8630094f425a/main.spi"}} / result.Length: │ │ 00:00:16 #141 [Verbose] > Building │ │ /tmp/!dotnet-repl/20240320-1222-2681-8120-8630094f425a/main.spi │ │ 00:00:16 #142 [Debug] buildFile / takeWhileInclusive / fsxContent: / │ │ errors: [] / typeErrorCount: 0 │ │ 00:00:16 #144 [Debug] buildFile / takeWhileInclusive / fsxContent: / │ │ errors: [] / typeErrorCount: 1 │ │ 00:00:16 #145 [Debug] buildFile / takeWhileInclusive / fsxContent: / │ │ errors: [ │ │ [ │ │ "main.spi: │ │ Constraint satisfaction error. │ │ Got: string │ │ Fails to satisfy: number", │ │ { │ │ "TypeErrors": { │ │ "errors": [ │ │ [ │ │ [ │ │ { │ │ "character": 8, │ │ "line": 1 │ │ }, │ │ { │ │ "character": 10, │ │ "line": 1 │ │ } │ │ ], │ │ "Constraint satisfaction error. │ │ Got: string │ │ Fails to satisfy: number" │ │ ] │ │ ], │ │ "uri": │ │ "file:///tmp/!dotnet-repl/20240320-1222-2681-8120-8630094f425a/main.spi" │ │ } │ │ } │ │ ] │ │ ] / typeErrorCount: 1 │ │ 00:00:16 #146 [Debug] watchWithFilter / Disposing watch stream / filter: │ │ FileName, LastWrite │ │ FSharpOption<Tuple<FSharpOption<String>,FSharpList<String>>> │ │ Value: - <null> │ │ - [ main.spi: │ │ Constraint satisfaction error. │ │ Got: string │ │ Fails to satisfy: number ] │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── //// test """inl main () = x + y """ |> buildCode 10000 None |> Async.runWithTimeout 10000 |> Option.map (fun (fsxContent, errors) -> fsxContent, errors |> List.map fst) |> _assert_eq ( Some ( None, [[ "main.spi: Unbound variable: x. Unbound variable: y." ]] ) ) ╭─[ 1.71s - stdout ]───────────────────────────────────────────────────────────╮ │ 00:00:16 #147 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:17 #148 [Debug] executeAsync / options: { Command = │ │ "dotnet "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The │ │ Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" │ │ --port 13805 --default-int i32 --default-float f64" │ │ WorkingDirectory = None │ │ CancellationToken = Some System.Threading.CancellationToken │ │ OnLine = Some <fun:buildCode@3-1005> } │ │ 00:00:17 #149 [Verbose] > pwd: │ │ /home/runner/work/polyglot/polyglot/apps/spiral │ │ 00:00:17 #150 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:17 #151 [Verbose] waitForPortAccess / port: 13805 / retry: 0 │ │ 00:00:17 #152 [Verbose] > dll_path: │ │ /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral │ │ Language 2/artifacts/bin/The Spiral Language 2/release │ │ 00:00:17 #153 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:17 #154 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:17 #155 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:17 #156 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:17 #157 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:17 #158 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:17 #159 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:17 #160 [Verbose] > Starting the Spiral Server. It is bound to: │ │ http://localhost:13805 │ │ 00:00:17 #161 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:17 #162 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:17 #163 [Debug] sendJson / port: 13805 / json: {"Ping":true} / │ │ result.Length: │ │ 00:00:17 #164 [Verbose] awaitCompiler / Ping / result: Some(null) / port: │ │ 13805 / retry: 0 │ │ 00:00:17 #165 [Verbose] > Server bound to: http://localhost:13805 │ │ 00:00:17 #166 [Debug] buildFile / takeWhileInclusive / fsxContent: / │ │ errors: [] / typeErrorCount: 0 │ │ 00:00:17 #167 [Debug] buildFile / takeWhileInclusive / fsxContent: / │ │ errors: [] / typeErrorCount: 0 │ │ 00:00:17 #168 [Debug] sendJson / port: 13805 / json: │ │ {"FileOpen":{"spiText":"inl main () =\n x \u002B │ │ y\n","uri":"file:///tmp/!dotnet-repl/20240320-1222-2851-5156-5d202b73698f/ma │ │ in.spi"}} / result.Length: │ │ 00:00:17 #169 [Debug] sendJson / port: 13805 / json: │ │ {"BuildFile":{"backend":"Fsharp","uri":"file:///tmp/!dotnet-repl/20240320-12 │ │ 22-2851-5156-5d202b73698f/main.spi"}} / result.Length: │ │ 00:00:17 #170 [Verbose] > Building │ │ /tmp/!dotnet-repl/20240320-1222-2851-5156-5d202b73698f/main.spi │ │ 00:00:18 #172 [Debug] buildFile / takeWhileInclusive / fsxContent: / │ │ errors: [] / typeErrorCount: 0 │ │ 00:00:18 #173 [Debug] buildFile / takeWhileInclusive / fsxContent: / │ │ errors: [] / typeErrorCount: 1 │ │ 00:00:18 #174 [Debug] buildFile / takeWhileInclusive / fsxContent: / │ │ errors: [ │ │ [ │ │ "main.spi: │ │ Unbound variable: x. │ │ Unbound variable: y.", │ │ { │ │ "TypeErrors": { │ │ "errors": [ │ │ [ │ │ [ │ │ { │ │ "character": 4, │ │ "line": 1 │ │ }, │ │ { │ │ "character": 5, │ │ "line": 1 │ │ } │ │ ], │ │ "Unbound variable: x." │ │ ], │ │ [ │ │ [ │ │ { │ │ "character": 8, │ │ "line": 1 │ │ }, │ │ { │ │ "character": 9, │ │ "line": 1 │ │ } │ │ ], │ │ "Unbound variable: y." │ │ ] │ │ ], │ │ "uri": │ │ "file:///tmp/!dotnet-repl/20240320-1222-2851-5156-5d202b73698f/main.spi" │ │ } │ │ } │ │ ] │ │ ] / typeErrorCount: 1 │ │ 00:00:18 #175 [Debug] watchWithFilter / Disposing watch stream / filter: │ │ FileName, LastWrite │ │ FSharpOption<Tuple<FSharpOption<String>,FSharpList<String>>> │ │ Value: - <null> │ │ - [ main.spi: │ │ Unbound variable: x. │ │ Unbound variable: y. ] │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── //// test """union a = | B | c inl main () = () """ |> buildCode 10000 None |> Async.runWithTimeout 10000 |> Option.map (fun (fsxContent, errors) -> fsxContent, errors |> List.map fst) |> _assert_eq ( Some ( None, [[ "main.spi: Expected: uppercase variable" ]] ) ) ╭─[ 1.03s - stdout ]───────────────────────────────────────────────────────────╮ │ 00:00:18 #176 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:18 #177 [Debug] executeAsync / options: { Command = │ │ "dotnet "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The │ │ Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" │ │ --port 13805 --default-int i32 --default-float f64" │ │ WorkingDirectory = None │ │ CancellationToken = Some System.Threading.CancellationToken │ │ OnLine = Some <fun:buildCode@3-1005> } │ │ 00:00:18 #179 [Verbose] > pwd: │ │ /home/runner/work/polyglot/polyglot/apps/spiral │ │ 00:00:18 #180 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:18 #181 [Verbose] waitForPortAccess / port: 13805 / retry: 0 │ │ 00:00:18 #182 [Verbose] > dll_path: │ │ /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral │ │ Language 2/artifacts/bin/The Spiral Language 2/release │ │ 00:00:18 #183 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:18 #184 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:18 #185 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:19 #186 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:19 #187 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:19 #188 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:19 #189 [Verbose] > Starting the Spiral Server. It is bound to: │ │ http://localhost:13805 │ │ 00:00:19 #190 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:19 #191 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:19 #192 [Debug] sendJson / port: 13805 / json: {"Ping":true} / │ │ result.Length: │ │ 00:00:19 #193 [Verbose] awaitCompiler / Ping / result: Some(null) / port: │ │ 13805 / retry: 0 │ │ 00:00:19 #194 [Verbose] > Server bound to: http://localhost:13805 │ │ 00:00:19 #195 [Debug] buildFile / takeWhileInclusive / fsxContent: / │ │ errors: [] / typeErrorCount: 0 │ │ 00:00:19 #196 [Debug] buildFile / takeWhileInclusive / fsxContent: / │ │ errors: [] / typeErrorCount: 0 │ │ 00:00:19 #197 [Debug] sendJson / port: 13805 / json: │ │ {"FileOpen":{"spiText":"union a =\n | B\n | c\n\ninl main () =\n │ │ ()\n","uri":"file:///tmp/!dotnet-repl/20240320-1222-3023-2393-2ae3ca3603f7/m │ │ ain.spi"}} / result.Length: │ │ 00:00:19 #198 [Debug] sendJson / port: 13805 / json: │ │ {"BuildFile":{"backend":"Fsharp","uri":"file:///tmp/!dotnet-repl/20240320-12 │ │ 22-3023-2393-2ae3ca3603f7/main.spi"}} / result.Length: │ │ 00:00:19 #199 [Verbose] > Building │ │ /tmp/!dotnet-repl/20240320-1222-3023-2393-2ae3ca3603f7/main.spi │ │ 00:00:19 #200 [Debug] buildFile / takeWhileInclusive / fsxContent: / │ │ errors: [ │ │ [ │ │ "main.spi: │ │ Expected: uppercase variable", │ │ { │ │ "ParserErrors": { │ │ "errors": [ │ │ [ │ │ [ │ │ { │ │ "character": 6, │ │ "line": 2 │ │ }, │ │ { │ │ "character": 7, │ │ "line": 2 │ │ } │ │ ], │ │ "Expected: uppercase variable" │ │ ] │ │ ], │ │ "uri": │ │ "file:///tmp/!dotnet-repl/20240320-1222-3023-2393-2ae3ca3603f7/main.spi" │ │ } │ │ } │ │ ] │ │ ] / typeErrorCount: 0 │ │ 00:00:19 #201 [Debug] watchWithFilter / Disposing watch stream / filter: │ │ FileName, LastWrite │ │ FSharpOption<Tuple<FSharpOption<String>,FSharpList<String>>> │ │ Value: - <null> │ │ - [ main.spi: │ │ Expected: uppercase variable ] │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── //// test """ /// abc inl main () = () """ |> buildCode 10000 None |> Async.runWithTimeout 10000 |> Option.map (fun (fsxContent, errors) -> fsxContent, errors |> List.map fst) |> _assert_eq ( Some ( None, [[ "main.spi: Expected: whitespace" ]] ) ) ╭─[ 862.24ms - stdout ]────────────────────────────────────────────────────────╮ │ 00:00:19 #202 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:19 #203 [Debug] executeAsync / options: { Command = │ │ "dotnet "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The │ │ Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" │ │ --port 13805 --default-int i32 --default-float f64" │ │ WorkingDirectory = None │ │ CancellationToken = Some System.Threading.CancellationToken │ │ OnLine = Some <fun:buildCode@3-1005> } │ │ 00:00:19 #205 [Verbose] > pwd: │ │ /home/runner/work/polyglot/polyglot/apps/spiral │ │ 00:00:19 #206 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:19 #207 [Verbose] waitForPortAccess / port: 13805 / retry: 0 │ │ 00:00:19 #208 [Verbose] > dll_path: │ │ /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral │ │ Language 2/artifacts/bin/The Spiral Language 2/release │ │ 00:00:19 #209 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:20 #210 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:20 #211 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:20 #212 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:20 #213 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:20 #214 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:20 #215 [Verbose] > Starting the Spiral Server. It is bound to: │ │ http://localhost:13805 │ │ 00:00:20 #216 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:20 #217 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:20 #218 [Debug] sendJson / port: 13805 / json: {"Ping":true} / │ │ result.Length: │ │ 00:00:20 #219 [Verbose] awaitCompiler / Ping / result: Some(null) / port: │ │ 13805 / retry: 0 │ │ 00:00:20 #220 [Verbose] > Server bound to: http://localhost:13805 │ │ 00:00:20 #221 [Debug] buildFile / takeWhileInclusive / fsxContent: / │ │ errors: [] / typeErrorCount: 0 │ │ 00:00:20 #222 [Debug] buildFile / takeWhileInclusive / fsxContent: / │ │ errors: [] / typeErrorCount: 0 │ │ 00:00:20 #223 [Debug] sendJson / port: 13805 / json: │ │ {"FileOpen":{"spiText":"\n/// abc\ninl main () =\n │ │ ()\n","uri":"file:///tmp/!dotnet-repl/20240320-1222-3124-2453-2aca0b202955/m │ │ ain.spi"}} / result.Length: │ │ 00:00:20 #224 [Debug] sendJson / port: 13805 / json: │ │ {"BuildFile":{"backend":"Fsharp","uri":"file:///tmp/!dotnet-repl/20240320-12 │ │ 22-3124-2453-2aca0b202955/main.spi"}} / result.Length: │ │ 00:00:20 #225 [Debug] buildFile / takeWhileInclusive / fsxContent: / │ │ errors: [ │ │ [ │ │ "main.spi: │ │ Expected: whitespace", │ │ { │ │ "TokenizerErrors": { │ │ "errors": [ │ │ [ │ │ [ │ │ { │ │ "character": 2, │ │ "line": 1 │ │ }, │ │ { │ │ "character": 3, │ │ "line": 1 │ │ } │ │ ], │ │ "Expected: whitespace" │ │ ] │ │ ], │ │ "uri": │ │ "file:///tmp/!dotnet-repl/20240320-1222-3124-2453-2aca0b202955/main.spi" │ │ } │ │ } │ │ ] │ │ ] / typeErrorCount: 0 │ │ 00:00:20 #226 [Debug] watchWithFilter / Disposing watch stream / filter: │ │ FileName, LastWrite │ │ FSharpOption<Tuple<FSharpOption<String>,FSharpList<String>>> │ │ Value: - <null> │ │ - [ main.spi: │ │ Expected: whitespace ] │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── //// test """ inl main () = real inl real_unbox forall a. (obj : a) : a = typecase obj with | _ => obj real_unbox () () """ |> buildCode 10000 None |> Async.runWithTimeout 10000 |> Option.map (fun (fsxContent, errors) -> fsxContent, errors |> List.map fst) |> _assert_eq ( Some ( None, [[ "Cannot apply a forall with a term." ]] ) ) ╭─[ 1.89s - stdout ]───────────────────────────────────────────────────────────╮ │ 00:00:20 #227 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:20 #228 [Debug] executeAsync / options: { Command = │ │ "dotnet "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The │ │ Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" │ │ --port 13805 --default-int i32 --default-float f64" │ │ WorkingDirectory = None │ │ CancellationToken = Some System.Threading.CancellationToken │ │ OnLine = Some <fun:buildCode@3-1005> } │ │ 00:00:20 #229 [Verbose] > pwd: │ │ /home/runner/work/polyglot/polyglot/apps/spiral │ │ 00:00:20 #230 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:20 #231 [Verbose] waitForPortAccess / port: 13805 / retry: 0 │ │ 00:00:20 #232 [Verbose] > dll_path: │ │ /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral │ │ Language 2/artifacts/bin/The Spiral Language 2/release │ │ 00:00:20 #234 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:20 #235 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:20 #236 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:20 #237 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:20 #238 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:20 #239 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:20 #240 [Verbose] > Starting the Spiral Server. It is bound to: │ │ http://localhost:13805 │ │ 00:00:20 #241 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:20 #242 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:21 #243 [Debug] sendJson / port: 13805 / json: {"Ping":true} / │ │ result.Length: │ │ 00:00:21 #244 [Verbose] awaitCompiler / Ping / result: Some(null) / port: │ │ 13805 / retry: 0 │ │ 00:00:21 #245 [Verbose] > Server bound to: http://localhost:13805 │ │ 00:00:21 #246 [Debug] buildFile / takeWhileInclusive / fsxContent: / │ │ errors: [] / typeErrorCount: 0 │ │ 00:00:21 #247 [Debug] buildFile / takeWhileInclusive / fsxContent: / │ │ errors: [] / typeErrorCount: 0 │ │ 00:00:21 #248 [Debug] sendJson / port: 13805 / json: │ │ {"FileOpen":{"spiText":"\ninl main () =\n real\n inl real_unbox │ │ forall a. (obj : a) : a =\n typecase obj with\n | _ │ │ =\u003E obj\n real_unbox ()\n │ │ ()\n","uri":"file:///tmp/!dotnet-repl/20240320-1222-3210-1057-1d1b40777b6a/m │ │ ain.spi"}} / result.Length: │ │ 00:00:21 #249 [Debug] sendJson / port: 13805 / json: │ │ {"BuildFile":{"backend":"Fsharp","uri":"file:///tmp/!dotnet-repl/20240320-12 │ │ 22-3210-1057-1d1b40777b6a/main.spi"}} / result.Length: │ │ 00:00:21 #250 [Verbose] > Building │ │ /tmp/!dotnet-repl/20240320-1222-3210-1057-1d1b40777b6a/main.spi │ │ 00:00:22 #252 [Debug] buildFile / takeWhileInclusive / fsxContent: / │ │ errors: [] / typeErrorCount: 0 │ │ 00:00:22 #253 [Debug] buildFile / takeWhileInclusive / fsxContent: / │ │ errors: [ │ │ [ │ │ "Cannot apply a forall with a term.", │ │ { │ │ "TracedError": { │ │ "message": "Cannot apply a forall with a term.", │ │ "trace": [ │ │ "Error trace on line: 2, column: 10 in module: │ │ /tmp/!dotnet-repl/20240320-1222-3210-1057-1d1b40777b6a/main.spi. │ │ inl main () = │ │ ^ │ │ ", │ │ "Error trace on line: 4, column: 9 in module: │ │ /tmp/!dotnet-repl/20240320-1222-3210-1057-1d1b40777b6a/main.spi. │ │ inl real_unbox forall a. (obj : a) : a = │ │ ^ │ │ ", │ │ "Error trace on line: 7, column: 9 in module: │ │ /tmp/!dotnet-repl/20240320-1222-3210-1057-1d1b40777b6a/main.spi. │ │ real_unbox () │ │ ^ │ │ " │ │ ] │ │ } │ │ } │ │ ] │ │ ] / typeErrorCount: 0 │ │ 00:00:22 #254 [Debug] watchWithFilter / Disposing watch stream / filter: │ │ FileName, LastWrite │ │ FSharpOption<Tuple<FSharpOption<String>,FSharpList<String>>> │ │ Value: - <null> │ │ - [ Cannot apply a forall with a term. ] │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── //// test """ inl main () = real inl real_unbox forall a. (obj : a) : a = typecase obj with | _ => obj real_unbox `i32 1 """ |> buildCode 10000 None |> Async.runWithTimeout 10000 |> Option.map (fun (fsxContent, errors) -> fsxContent, errors |> List.map fst) |> _assert_eq ( Some ( None, [[ "The main function should not have a forall." ]] ) ) ╭─[ 1.74s - stdout ]───────────────────────────────────────────────────────────╮ │ 00:00:22 #255 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:22 #256 [Debug] executeAsync / options: { Command = │ │ "dotnet "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The │ │ Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" │ │ --port 13805 --default-int i32 --default-float f64" │ │ WorkingDirectory = None │ │ CancellationToken = Some System.Threading.CancellationToken │ │ OnLine = Some <fun:buildCode@3-1005> } │ │ 00:00:22 #257 [Verbose] > pwd: │ │ /home/runner/work/polyglot/polyglot/apps/spiral │ │ 00:00:22 #258 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:22 #259 [Verbose] waitForPortAccess / port: 13805 / retry: 0 │ │ 00:00:22 #260 [Verbose] > dll_path: │ │ /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral │ │ Language 2/artifacts/bin/The Spiral Language 2/release │ │ 00:00:22 #261 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:22 #262 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:22 #263 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:22 #264 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:22 #265 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:22 #266 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:22 #267 [Verbose] > Starting the Spiral Server. It is bound to: │ │ http://localhost:13805 │ │ 00:00:22 #268 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:22 #269 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:22 #271 [Debug] sendJson / port: 13805 / json: {"Ping":true} / │ │ result.Length: │ │ 00:00:22 #272 [Verbose] awaitCompiler / Ping / result: Some(null) / port: │ │ 13805 / retry: 0 │ │ 00:00:22 #273 [Verbose] > Server bound to: http://localhost:13805 │ │ 00:00:22 #274 [Debug] buildFile / takeWhileInclusive / fsxContent: / │ │ errors: [] / typeErrorCount: 0 │ │ 00:00:22 #275 [Debug] buildFile / takeWhileInclusive / fsxContent: / │ │ errors: [] / typeErrorCount: 0 │ │ 00:00:22 #276 [Debug] sendJson / port: 13805 / json: │ │ {"FileOpen":{"spiText":"\ninl main () =\n real\n inl real_unbox │ │ forall a. (obj : a) : a =\n typecase obj with\n | _ │ │ =\u003E obj\n real_unbox \u0060i32 │ │ 1\n","uri":"file:///tmp/!dotnet-repl/20240320-1222-3399-9994-9e235f6867f8/ma │ │ in.spi"}} / result.Length: │ │ 00:00:23 #277 [Debug] sendJson / port: 13805 / json: │ │ {"BuildFile":{"backend":"Fsharp","uri":"file:///tmp/!dotnet-repl/20240320-12 │ │ 22-3399-9994-9e235f6867f8/main.spi"}} / result.Length: │ │ 00:00:23 #278 [Verbose] > Building │ │ /tmp/!dotnet-repl/20240320-1222-3399-9994-9e235f6867f8/main.spi │ │ 00:00:23 #280 [Debug] buildFile / takeWhileInclusive / fsxContent: / │ │ errors: [] / typeErrorCount: 0 │ │ 00:00:24 #281 [Debug] buildFile / takeWhileInclusive / fsxContent: / │ │ errors: [ │ │ [ │ │ "The main function should not have a forall.", │ │ { │ │ "TracedError": { │ │ "message": "The main function should not have a forall.", │ │ "trace": [] │ │ } │ │ } │ │ ] │ │ ] / typeErrorCount: 0 │ │ 00:00:24 #282 [Debug] watchWithFilter / Disposing watch stream / filter: │ │ FileName, LastWrite │ │ FSharpOption<Tuple<FSharpOption<String>,FSharpList<String>>> │ │ Value: - <null> │ │ - [ The main function should not have a forall. ] │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── //// test """ inl init_series start end inc = inl total : f64 = conv ((end - start) / inc) + 1 listm.init total (conv >> (*) inc >> (+) start) : list f64 type integration = (f64 -> f64) -> f64 -> f64 -> f64 inl integral dt : integration = fun f a b => init_series (a + dt / 2) (b - dt / 2) dt |> listm.map (f >> (*) dt) |> listm.fold (+) 0 inl main () = integral 0.1 (fun x => x ** 2) 0 1 """ |> buildCode 10000 None |> Async.runWithTimeout 10000 |> Option.map (fun (fsxContent, errors) -> fsxContent, errors |> List.map fst) |> _assert_eq ( Some ( Some "0.3325000000000001\n", [[]] ) ) ╭─[ 1.93s - stdout ]───────────────────────────────────────────────────────────╮ │ 00:00:24 #283 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:24 #284 [Debug] executeAsync / options: { Command = │ │ "dotnet "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The │ │ Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" │ │ --port 13805 --default-int i32 --default-float f64" │ │ WorkingDirectory = None │ │ CancellationToken = Some System.Threading.CancellationToken │ │ OnLine = Some <fun:buildCode@3-1005> } │ │ 00:00:24 #285 [Verbose] > pwd: │ │ /home/runner/work/polyglot/polyglot/apps/spiral │ │ 00:00:24 #286 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:24 #287 [Verbose] waitForPortAccess / port: 13805 / retry: 0 │ │ 00:00:24 #288 [Verbose] > dll_path: │ │ /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral │ │ Language 2/artifacts/bin/The Spiral Language 2/release │ │ 00:00:24 #289 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:24 #290 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:24 #291 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:24 #292 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:24 #293 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:24 #294 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:24 #295 [Verbose] > Starting the Spiral Server. It is bound to: │ │ http://localhost:13805 │ │ 00:00:24 #296 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:24 #297 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:24 #298 [Debug] sendJson / port: 13805 / json: {"Ping":true} / │ │ result.Length: │ │ 00:00:24 #299 [Verbose] awaitCompiler / Ping / result: Some(null) / port: │ │ 13805 / retry: 0 │ │ 00:00:24 #300 [Verbose] > Server bound to: http://localhost:13805 │ │ 00:00:24 #301 [Debug] buildFile / takeWhileInclusive / fsxContent: / │ │ errors: [] / typeErrorCount: 0 │ │ 00:00:24 #302 [Debug] buildFile / takeWhileInclusive / fsxContent: / │ │ errors: [] / typeErrorCount: 0 │ │ 00:00:24 #303 [Debug] sendJson / port: 13805 / json: │ │ {"FileOpen":{"spiText":"\ninl init_series start end inc =\n inl total : │ │ f64 = conv ((end - start) / inc) \u002B 1\n listm.init total (conv │ │ \u003E\u003E (*) inc \u003E\u003E (\u002B) start) : list f64\n\ntype │ │ integration = (f64 -\u003E f64) -\u003E f64 -\u003E f64 -\u003E f64\n\ninl │ │ integral dt : integration =\n fun f a b =\u003E\n init_series (a │ │ \u002B dt / 2) (b - dt / 2) dt\n |\u003E listm.map (f \u003E\u003E │ │ (*) dt)\n |\u003E listm.fold (\u002B) 0\n\ninl main () =\n │ │ integral 0.1 (fun x =\u003E x ** 2) 0 │ │ 1\n","uri":"file:///tmp/!dotnet-repl/20240320-1222-3578-7842-7100c6377ab6/ma │ │ in.spi"}} / result.Length: │ │ 00:00:24 #304 [Debug] sendJson / port: 13805 / json: │ │ {"BuildFile":{"backend":"Fsharp","uri":"file:///tmp/!dotnet-repl/20240320-12 │ │ 22-3578-7842-7100c6377ab6/main.spi"}} / result.Length: │ │ 00:00:24 #306 [Verbose] > Building │ │ /tmp/!dotnet-repl/20240320-1222-3578-7842-7100c6377ab6/main.spi │ │ 00:00:25 #307 [Debug] buildFile / takeWhileInclusive / fsxContent: / │ │ errors: [] / typeErrorCount: 0 │ │ 00:00:26 #309 [Debug] buildFile / takeWhileInclusive / fsxContent: │ │ 0.3325000000000001 │ │ / errors: [] / typeErrorCount: 0 │ │ 00:00:26 #310 [Debug] watchWithFilter / Disposing watch stream / filter: │ │ FileName, LastWrite │ │ FSharpOption<Tuple<FSharpOption<String>,FSharpList<String>>> │ │ Value: - FSharpOption<String> │ │ Value: 0.3325000000000001 │ │ │ │ - [ ] │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── //// test """ inl init_series start end inc = inl total : f64 = conv ((end - start) / inc) + 1 listm.init total (conv >> (*) inc >> (+) start) : list f64 type integration = (f64 -> f64) -> f64 -> f64 -> f64 inl integral dt : integration = fun f a b => init_series (a + dt / 2) (b - dt / 2) dt |> listm.map (f >> (*) dt) |> listm.fold (+) 0 inl main () = integral 0.01 (fun x => x ** 2) 0 1 """ |> buildCode 10000 None |> Async.runWithTimeout 10000 |> Option.map (fun (fsxContent, errors) -> fsxContent, errors |> List.map fst) // |> _assert_eq None // |> fun x -> printfn $"{x.ToDisplayString ()}" ╭─[ 1.98s - return value ]─────────────────────────────────────────────────────╮ │ <details open="open" class="dni-treeview"><summary><span │ │ class="dni-code-hint"><code>Some((Some(0.33332500000000004<br/>), [ │ │ ]))</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><t │ │ d>Value</td><td><details class="dni-treeview"><summary><span │ │ class="dni-code-hint"><code>(Some(0.33332500000000004<br/>), [ │ │ ])</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ │ >Item1</td><td><details class="dni-treeview"><summary><span │ │ class="dni-code-hint"><code>Some(0.33332500000000004<br/>)</code></span></su │ │ mmary><div><table><thead><tr></tr></thead><tbody><tr><td>Value</td><td><div │ │ class="dni-plaintext"><pre>0.33332500000000004 │ │ </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item │ │ 2</td><td><div c... │ ╰──────────────────────────────────────────────────────────────────────────────╯ ╭─[ 1.98s - stdout ]───────────────────────────────────────────────────────────╮ │ 00:00:26 #311 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:26 #312 [Debug] executeAsync / options: { Command = │ │ "dotnet "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The │ │ Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" │ │ --port 13805 --default-int i32 --default-float f64" │ │ WorkingDirectory = None │ │ CancellationToken = Some System.Threading.CancellationToken │ │ OnLine = Some <fun:buildCode@3-1005> } │ │ 00:00:26 #313 [Verbose] > pwd: │ │ /home/runner/work/polyglot/polyglot/apps/spiral │ │ 00:00:26 #314 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:26 #315 [Verbose] waitForPortAccess / port: 13805 / retry: 0 │ │ 00:00:26 #316 [Verbose] > dll_path: │ │ /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral │ │ Language 2/artifacts/bin/The Spiral Language 2/release │ │ 00:00:26 #317 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:26 #318 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:26 #319 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:26 #320 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:26 #321 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:26 #322 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:26 #323 [Verbose] > Starting the Spiral Server. It is bound to: │ │ http://localhost:13805 │ │ 00:00:26 #324 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:26 #325 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:26 #326 [Debug] sendJson / port: 13805 / json: {"Ping":true} / │ │ result.Length: │ │ 00:00:26 #327 [Verbose] awaitCompiler / Ping / result: Some(null) / port: │ │ 13805 / retry: 0 │ │ 00:00:26 #328 [Verbose] > Server bound to: http://localhost:13805 │ │ 00:00:26 #329 [Debug] buildFile / takeWhileInclusive / fsxContent: / │ │ errors: [] / typeErrorCount: 0 │ │ 00:00:26 #330 [Debug] buildFile / takeWhileInclusive / fsxContent: / │ │ errors: [] / typeErrorCount: 0 │ │ 00:00:26 #331 [Debug] sendJson / port: 13805 / json: │ │ {"FileOpen":{"spiText":"\ninl init_series start end inc =\n inl total : │ │ f64 = conv ((end - start) / inc) \u002B 1\n listm.init total (conv │ │ \u003E\u003E (*) inc \u003E\u003E (\u002B) start) : list f64\n\ntype │ │ integration = (f64 -\u003E f64) -\u003E f64 -\u003E f64 -\u003E f64\n\ninl │ │ integral dt : integration =\n fun f a b =\u003E\n init_series (a │ │ \u002B dt / 2) (b - dt / 2) dt\n |\u003E listm.map (f \u003E\u003E │ │ (*) dt)\n |\u003E listm.fold (\u002B) 0\n\ninl main () =\n │ │ integral 0.01 (fun x =\u003E x ** 2) 0 │ │ 1\n","uri":"file:///tmp/!dotnet-repl/20240320-1222-3767-6738-66a060ae7a4e/ma │ │ in.spi"}} / result.Length: │ │ 00:00:26 #332 [Debug] sendJson / port: 13805 / json: │ │ {"BuildFile":{"backend":"Fsharp","uri":"file:///tmp/!dotnet-repl/20240320-12 │ │ 22-3767-6738-66a060ae7a4e/main.spi"}} / result.Length: │ │ 00:00:26 #334 [Verbose] > Building │ │ /tmp/!dotnet-repl/20240320-1222-3767-6738-66a060ae7a4e/main.spi │ │ 00:00:27 #335 [Debug] buildFile / takeWhileInclusive / fsxContent: / │ │ errors: [] / typeErrorCount: 0 │ │ 00:00:27 #337 [Debug] buildFile / takeWhileInclusive / fsxContent: │ │ 0.33332500000000004 │ │ / errors: [] / typeErrorCount: 0 │ │ 00:00:27 #338 [Debug] watchWithFilter / Disposing watch stream / filter: │ │ FileName, LastWrite │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## getFileTokenRange │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let inline getFileTokenRange port cancellationToken path = async { let fullPath = path |> System.IO.Path.GetFullPath let! code = fullPath |> FileSystem.readAllTextAsync let lines = code |> String.split [[| '\n' |]] let token, disposable = Threading.newDisposableToken cancellationToken use _ = disposable let! serverPort, _errors, ct, disposable = awaitCompiler port (Some token) use _ = disposable let fileOpenObj = {| FileOpen = {| uri = fullPath |> getFileUri; spiText = code |} |} let! _fileOpenResult = fileOpenObj |> sendObj serverPort let fileTokenRangeObj = {| FileTokenRange = {| uri = fullPath |> getFileUri range = [[| {| line = 0; character = 0 |} {| line = lines.Length - 1; character = lines.[[lines.Length - 1]].Length |} |]] |} |} let! fileTokenRangeResult = fileTokenRangeObj |> sendObj serverPort |> Async.withCancellationToken ct return fileTokenRangeResult |> Option.map FSharp.Json.Json.deserialize<int array> } ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## getCodeTokenRange │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let inline getCodeTokenRange cancellationToken code = async { let! mainPath, disposable = persistCode code use _ = disposable let port = getCompilerPort () return! mainPath |> getFileTokenRange port cancellationToken } ── fsharp ────────────────────────────────────────────────────────────────────── //// test """inl main () = ()""" |> getCodeTokenRange None |> Async.runWithTimeout 10000 |> Option.flatten |> _assert_eq (Some [[| 0; 0; 3; 7; 0; 0; 4; 4; 0; 0; 0; 5; 1; 8; 0; 0; 1; 1; 8; 0; 0; 2; 1; 4; 0; 0; 2; 1; 8; 0; 0; 1; 1; 8; 0 |]]) ╭─[ 2.42s - stdout ]───────────────────────────────────────────────────────────╮ │ 00:00:32 #343 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:32 #344 [Debug] executeAsync / options: { Command = │ │ "dotnet "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The │ │ Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" │ │ --port 13805 --default-int i32 --default-float f64" │ │ WorkingDirectory = None │ │ CancellationToken = Some System.Threading.CancellationToken │ │ OnLine = Some <fun:it@4-434> } │ │ 00:00:32 #345 [Verbose] > pwd: │ │ /home/runner/work/polyglot/polyglot/apps/spiral │ │ 00:00:32 #346 [Verbose] > dll_path: │ │ /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral │ │ Language 2/artifacts/bin/The Spiral Language 2/release │ │ 00:00:32 #347 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:32 #348 [Verbose] waitForPortAccess / port: 13805 / retry: 0 │ │ 00:00:32 #349 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:32 #350 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:32 #351 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:32 #352 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:32 #353 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:32 #354 [Verbose] > Starting the Spiral Server. It is bound to: │ │ http://localhost:13805 │ │ 00:00:32 #355 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:32 #356 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:32 #358 [Debug] sendJson / port: 13805 / json: {"Ping":true} / │ │ result.Length: │ │ 00:00:32 #359 [Verbose] awaitCompiler / Ping / result: Some(null) / port: │ │ 13805 / retry: 0 │ │ 00:00:32 #360 [Verbose] > Server bound to: http://localhost:13805 │ │ 00:00:33 #361 [Debug] sendJson / port: 13805 / json: │ │ {"FileOpen":{"spiText":"inl main () = │ │ ()","uri":"file:///tmp/!dotnet-repl/20240320-1222-4402-0298-0ee2334db3e6/mai │ │ n.spi"}} / result.Length: │ │ 00:00:33 #362 [Debug] sendJson / port: 13805 / json: │ │ {"FileTokenRange":{"range":[ │ │ {"character":0,"line":0},{"character":16,"line":0}],"uri":"file:///tmp/!dotn │ │ et-repl/20240320-1222-4402-0298-0ee2334db3e6/main.spi"}} / result.Length: │ │ Some(177) │ │ FSharpOption<Int32[]> │ │ Value: [ 0, 0, 3, 7, 0, 0, 4, 4, 0, 0, 0, 5, 1, 8, 0, 0, 1, 1, 8, 0, │ │ 0, 2, 1, 4, 0, 0, 2, 1, 8, 0, 0, 1, 1, 8, 0 ] │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── //// test """inl main () = 1i32""" |> getCodeTokenRange None |> Async.runWithTimeout 10000 |> Option.flatten |> _assert_eq (Some [[| 0; 0; 3; 7; 0; 0; 4; 4; 0; 0; 0; 5; 1; 8; 0; 0; 1; 1; 8; 0; 0; 2; 1; 4; 0; 0; 2; 1; 3; 0; 0; 1; 3; 12; 0 |]]) ╭─[ 2.49s - stdout ]───────────────────────────────────────────────────────────╮ │ 00:00:35 #365 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:35 #366 [Debug] executeAsync / options: { Command = │ │ "dotnet "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The │ │ Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" │ │ --port 13805 --default-int i32 --default-float f64" │ │ WorkingDirectory = None │ │ CancellationToken = Some System.Threading.CancellationToken │ │ OnLine = Some <fun:it@4-801> } │ │ 00:00:35 #367 [Verbose] > pwd: │ │ /home/runner/work/polyglot/polyglot/apps/spiral │ │ 00:00:35 #368 [Verbose] > dll_path: │ │ /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral │ │ Language 2/artifacts/bin/The Spiral Language 2/release │ │ 00:00:35 #369 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:35 #370 [Verbose] waitForPortAccess / port: 13805 / retry: 0 │ │ 00:00:35 #371 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:35 #372 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:35 #373 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:35 #374 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:35 #375 [Verbose] > Starting the Spiral Server. It is bound to: │ │ http://localhost:13805 │ │ 00:00:35 #376 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:35 #377 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:35 #378 [Debug] sendJson / port: 13805 / json: {"Ping":true} / │ │ result.Length: │ │ 00:00:35 #379 [Verbose] awaitCompiler / Ping / result: Some(null) / port: │ │ 13805 / retry: 0 │ │ 00:00:35 #380 [Verbose] > Server bound to: http://localhost:13805 │ │ 00:00:35 #381 [Debug] sendJson / port: 13805 / json: │ │ {"FileOpen":{"spiText":"inl main () = │ │ 1i32","uri":"file:///tmp/!dotnet-repl/20240320-1222-4653-5351-53d234b3d826/m │ │ ain.spi"}} / result.Length: │ │ 00:00:35 #382 [Debug] sendJson / port: 13805 / json: │ │ {"FileTokenRange":{"range":[ │ │ {"character":0,"line":0},{"character":18,"line":0}],"uri":"file:///tmp/!dotn │ │ et-repl/20240320-1222-4653-5351-53d234b3d826/main.spi"}} / result.Length: │ │ Some(178) │ │ FSharpOption<Int32[]> │ │ Value: [ 0, 0, 3, 7, 0, 0, 4, 4, 0, 0, 0, 5, 1, 8, 0, 0, 1, 1, 8, 0, │ │ 0, 2, 1, 4, 0, 0, 2, 1, 3, 0, 0, 1, 3, 12, 0 ] │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## Arguments │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── [[<RequireQualifiedAccess>]] type Arguments = | Build_File of string * string | File_Token_Range of string * string | Execute_Command of string | Timeout of int | Port of int interface Argu.IArgParserTemplate with member s.Usage = match s with | Build_File _ -> nameof Build_File | File_Token_Range _ -> nameof File_Token_Range | Execute_Command _ -> nameof Execute_Command | Timeout _ -> nameof Timeout | Port _ -> nameof Port ── fsharp ────────────────────────────────────────────────────────────────────── //// test Argu.ArgumentParser.Create<Arguments>().PrintUsage () ╭─[ 85.99ms - return value ]───────────────────────────────────────────────────╮ │ USAGE: dotnet-repl [--help] [--build-file <string> <string>] │ │ [--file-token-range <string> <string>] │ │ [--execute-command <string>] [--timeout <int>] [--port │ │ <int>] │ │ │ │ OPTIONS: │ │ │ │ --build-file <string> <string> │ │ Build_File │ │ --file-token-range <string> <string> │ │ File_Token_Range │ │ --execute-command <string> │ │ Execute_Command │ │ --timeout <int> Timeout │ │ --port <int> Port │ │ --help display this list of options. │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## main │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let main args = let argsMap = args |> Runtime.parseArgsMap<Arguments> let buildFileActions = argsMap |> Map.tryFind (nameof Arguments.Build_File) |> Option.defaultValue [[]] |> List.choose (function | Arguments.Build_File (inputPath, outputPath) -> Some (inputPath, outputPath) | _ -> None ) let fileTokenRangeActions = argsMap |> Map.tryFind (nameof Arguments.File_Token_Range) |> Option.defaultValue [[]] |> List.choose (function | Arguments.File_Token_Range (inputPath, outputPath) -> Some (inputPath, outputPath) | _ -> None ) let executeCommandActions = argsMap |> Map.tryFind (nameof Arguments.Execute_Command) |> Option.defaultValue [[]] |> List.choose (function | Arguments.Execute_Command command -> Some command | _ -> None ) let timeout = match argsMap |> Map.tryFind (nameof Arguments.Timeout) with | Some [[ Arguments.Timeout timeout ]] -> timeout | _ -> 60000 * 60 let port = match argsMap |> Map.tryFind (nameof Arguments.Port) with | Some [[ Arguments.Port port ]] -> Some port | _ -> None async { let! buildFileResult = buildFileActions |> List.map (fun (inputPath, outputPath) -> async { let port = port |> Option.defaultWith getCompilerPort let! outputCode, errors = inputPath |> buildFile timeout port None errors |> List.map snd |> List.iter (fun error -> trace Critical (fun () -> $"main / error: {error |> serializeObj}") getLocals ) match outputCode with | Some outputCode -> do! outputCode |> FileSystem.writeAllTextAsync outputPath return 0 | None -> return 1 }) |> Async.Sequential let! fileTokenRangeResult = fileTokenRangeActions |> List.map (fun (inputPath, outputPath) -> async { let port = port |> Option.defaultWith getCompilerPort let! tokenRange = inputPath |> getFileTokenRange port None match tokenRange with | Some tokenRange -> do! tokenRange |> FSharp.Json.Json.serialize |> FileSystem.writeAllTextAsync outputPath return 0 | None -> return 1 }) |> Async.Sequential let! executeCommandResult = executeCommandActions |> List.map (fun command -> async { let port = port |> Option.defaultWith getCompilerPort let localToken, disposable = Threading.newDisposableToken None use _ = disposable let! serverPort, _errors, compilerToken, disposable = awaitCompiler port (Some localToken) use _ = disposable let! exitCode, result = Runtime.executeWithOptionsAsync { Command = command CancellationToken = Some compilerToken WorkingDirectory = None OnLine = None } trace Debug (fun () -> $"main / executeCommand / exitCode: {exitCode}") getLocals return exitCode }) |> Async.Sequential return [[| buildFileResult; fileTokenRangeResult; executeCommandResult |]] |> Array.collect id |> Array.sum } |> Async.runWithTimeout timeout |> Option.defaultValue 1 ── fsharp ────────────────────────────────────────────────────────────────────── //// test let args = System.Environment.GetEnvironmentVariable "ARGS" |> Runtime.splitArgs |> Seq.toArray match args with | [[||]] -> 0 | args -> if main args = 0 then 0 else failwith "main failed" ╭─[ 14.27ms - return value ]───────────────────────────────────────────────────╮ │ <div class="dni-plaintext"><pre>0</pre></div><style> │ │ .dni-code-hint { │ │ font-style: italic; │ │ overflow: hidden; │ │ white-space: nowrap; │ │ } │ │ .dni-treeview { │ │ white-space: nowrap; │ │ } │ │ .dni-treeview td { │ │ vertical-align: top; │ │ text-align: start; │ │ } │ │ details.dni-treeview { │ │ padding-left: 1em; │ │ } │ │ table td { │ │ text-align: start; │ │ } │ │ table tr { │ │ vertical-align: top; │ │ margin: 0em 0px; │ │ } │ │ table tr td pre │ │ { │ │ vertical-align: top !important; │ │ margin: 0em 0px !important; │ │ } │ │ table th { │ │ text-align: start; │ │ } │ │ </style> │ ╰──────────────────────────────────────────────────────────────────────────────╯ [NbConvertApp] Converting notebook Supervisor.dib.ipynb to html /opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. validate(nb) /opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 return _pygments_highlight( [NbConvertApp] Writing 463242 bytes to Supervisor.dib.html 00:00:00 #1 [Debug] writeDibCode / output: Fs / path: Supervisor.dib 00:00:00 #2 [Debug] parseDibCode / output: Fs / file: Supervisor.dib 00:00:00 #1 [Debug] persistCodeProject / packages: [Argu; FSharp.Control.AsyncSeq; FSharp.Json; ... ] / modules: [lib/fsharp/Common.fs; lib/fsharp/CommonFSharp.fs; lib/fsharp/Threading.fs; ... ] / name: Supervisor / code.Length: 19286 00:00:00 #2 [Debug] buildProject / fullPath: /home/runner/work/polyglot/polyglot/target/polyglot/builder/Supervisor/Supervisor.fsproj 00:00:00 #3 [Debug] executeAsync / options: { Command = "dotnet publish "/home/runner/work/polyglot/polyglot/target/polyglot/builder/Supervisor/Supervisor.fsproj" --configuration Release --output "/home/runner/work/polyglot/polyglot/apps/spiral/dist" --runtime linux-x64" WorkingDirectory = Some "/home/runner/work/polyglot/polyglot/target/polyglot/builder/Supervisor" CancellationToken = None OnLine = None } 00:00:00 #4 [Verbose] > MSBuild version 17.10.0-preview-24101-01+07fd5d51f for .NET 00:00:00 #5 [Verbose] > Determining projects to restore... 00:00:00 #6 [Verbose] > Paket version 8.1.0-alpha001+27cb9f111f156e8b68d08dc293857425c0ade23d 00:00:00 #7 [Verbose] > The last full restore is still up to date. Nothing left to do. 00:00:00 #8 [Verbose] > Total time taken: 0 milliseconds 00:00:01 #9 [Verbose] > Paket version 8.1.0-alpha001+27cb9f111f156e8b68d08dc293857425c0ade23d 00:00:01 #10 [Verbose] > Restoring /home/runner/work/polyglot/polyglot/target/polyglot/builder/Supervisor/Supervisor.fsproj 00:00:01 #11 [Verbose] > Starting restore process. 00:00:01 #12 [Verbose] > Total time taken: 0 milliseconds 00:00:02 #13 [Verbose] > Restored /home/runner/work/polyglot/polyglot/target/polyglot/builder/Supervisor/Supervisor.fsproj (in 349 ms). 00:00:02 #14 [Verbose] > /usr/share/dotnet/sdk/9.0.100-preview.1.24101.2/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.RuntimeIdentifierInference.targets(313,5): message NETSDK1057: You are using a preview version of .NET. See: https://aka.ms/dotnet-support-policy [/home/runner/work/polyglot/polyglot/target/polyglot/builder/Supervisor/Supervisor.fsproj] 00:00:11 #15 [Verbose] > Supervisor -> /home/runner/work/polyglot/polyglot/target/polyglot/builder/Supervisor/bin/Release/net9.0/linux-x64/Supervisor.dll 00:00:12 #16 [Verbose] > Supervisor -> /home/runner/work/polyglot/polyglot/apps/spiral/dist 00:00:12 #17 [Debug] executeAsync / exitCode: 0 / output.Length: 1148 00:00:12 #18 [Debug] executeAsync / options: { Command = "dotnet publish "/home/runner/work/polyglot/polyglot/target/polyglot/builder/Supervisor/Supervisor.fsproj" --configuration Release --output "/home/runner/work/polyglot/polyglot/apps/spiral/dist" --runtime win-x64" WorkingDirectory = Some "/home/runner/work/polyglot/polyglot/target/polyglot/builder/Supervisor" CancellationToken = None OnLine = None } 00:00:12 #19 [Verbose] > MSBuild version 17.10.0-preview-24101-01+07fd5d51f for .NET 00:00:12 #20 [Verbose] > Determining projects to restore... 00:00:13 #21 [Verbose] > Restored /home/runner/work/polyglot/polyglot/target/polyglot/builder/Supervisor/Supervisor.fsproj (in 315 ms). 00:00:13 #22 [Verbose] > /usr/share/dotnet/sdk/9.0.100-preview.1.24101.2/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.RuntimeIdentifierInference.targets(313,5): message NETSDK1057: You are using a preview version of .NET. See: https://aka.ms/dotnet-support-policy [/home/runner/work/polyglot/polyglot/target/polyglot/builder/Supervisor/Supervisor.fsproj] 00:00:22 #23 [Verbose] > Supervisor -> /home/runner/work/polyglot/polyglot/target/polyglot/builder/Supervisor/bin/Release/net9.0/win-x64/Supervisor.dll 00:00:22 #24 [Verbose] > Supervisor -> /home/runner/work/polyglot/polyglot/apps/spiral/dist 00:00:22 #25 [Debug] executeAsync / exitCode: 0 / output.Length: 738 ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ # Eval (Polyglot) │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── #!import ../../lib/fsharp/Notebooks.dib #!import ../../lib/fsharp/Testing.dib ── fsharp - import ───────────────────────────────────────────────────────────── #r "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Asp NetCore.Html.Abstractions.dll" #r "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot Net.Interactive.dll" #r "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot Net.Interactive.FSharp.dll" #r "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot Net.Interactive.Formatting.dll" open System open System.IO open System.Text open Microsoft.DotNet.Interactive.Formatting ── fsharp - import ───────────────────────────────────────────────────────────── #r "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot Net.Interactive.FSharp.dll" open Microsoft.DotNet.Interactive.FSharp.FSharpKernelHelpers #r "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot Net.Interactive.dll" open type Microsoft.DotNet.Interactive.Kernel ── fsharp - import ───────────────────────────────────────────────────────────── //// test Formatter.ListExpansionLimit <- 100 ── fsharp - import ───────────────────────────────────────────────────────────── #r @"../../../../../../../.nuget/packages/expecto/10.1.0/lib/net6.0/Expecto.dll" ── fsharp - import ───────────────────────────────────────────────────────────── //// test type AssertExceptionFormatter (ex) = member _.Text = ex.ToString() .Replace("32m", "<span style=\"color: green;\">") .Replace("36m", "</span>") .Replace("31m", "<span style=\"color: red;\">") .Replace("\n", "<br/>\n") Formatter.Register<AssertExceptionFormatter> ((fun (x : AssertExceptionFormatter) -> x.Text), "text/html") ── fsharp - import ───────────────────────────────────────────────────────────── //// test let inline __expect fn log expected actual = if log then printfn $"{actual.ToDisplayString ()}" try "Testing.__expect" |> fn actual expected with :? Expecto.AssertException as ex -> AssertExceptionFormatter(ex).Display () |> ignore failwith (ex.GetType().FullName) let inline __contains log expected actual = __expect Expecto.Expect.contains log expected actual let inline _contains expected actual = __contains true expected actual let inline __assert_eq log expected actual = __expect Expecto.Expect.equal log expected actual let inline _assert_eq expected actual = __assert_eq true expected actual let inline __isGreaterThan log expected actual = __expect Expecto.Expect.isGreaterThan log expected... ── fsharp - import ───────────────────────────────────────────────────────────── //// test let inline __isBetween log a b actual = let inline isBetween actual (a, b) _ = __isGreaterThanOrEqual log a actual __isLessThanOrEqual log b actual __expect isBetween log (a, b) actual let inline _isBetween a b actual = __isBetween true a b actual ── fsharp ────────────────────────────────────────────────────────────────────── #r @"../../../../../../../.nuget/packages/fsharp.control.asyncseq/3.2.1/lib/netstan dard2.1/FSharp.Control.AsyncSeq.dll" #r @"../../../../../../../.nuget/packages/system.reactive/6.0.1-preview.1/lib/net6. 0/System.Reactive.dll" #r @"../../../../../../../.nuget/packages/system.reactive.linq/6.0.1-preview.1/lib/ netstandard2.0/System.Reactive.Linq.dll" #r @"../../../../../../../.nuget/packages/argu/6.2.2/lib/netstandard2.0/Argu.dll" #r @"../../../../../../../.nuget/packages/system.commandline/2.0.0-beta4.22272.1/li b/net6.0/System.CommandLine.dll" #r @"../../../../../../../.nuget/packages/microsoft.aspnetcore.http.connections.com mon/7.0.0/lib/net7.0/Microsoft.AspNetCore.Http.Connections.Common.dll" #r @"../../../../../../../.nuget/packages/microsoft.aspnetcore.http.connections.cli ent/7.0.0/lib/net7.0/Microsoft.AspNetCore.Http.Connections.Client.dll" #r @"../../../../../../../.nuget/packages/microsoft.aspnetcore.signalr.common/7.0.0 /lib/net7.0/Microsoft.AspNetCore.SignalR.Common.dll" #r @"../../../../../../../.nuget/packages/microsoft.aspnetcore.signalr.client/7.0.0 /lib/net7.0/Microsoft.AspNetCore.SignalR.Client.dll" #r @"../../../../../../../.nuget/packages/microsoft.aspnetcore.signalr.client.core/ 7.0.0/lib/net7.0/Microsoft.AspNetCore.SignalR.Client.Core.dll" #r @"../../../../../../../.nuget/packages/fsharp.json/0.4.1/lib/netstandard2.0/FSha rp.Json.dll" ── fsharp ────────────────────────────────────────────────────────────────────── #!import ../../lib/fsharp/Common.fs #!import ../../lib/fsharp/CommonFSharp.fs #!import ../../lib/fsharp/Threading.fs #!import ../../lib/fsharp/Async.fs #!import ../../lib/fsharp/AsyncSeq.fs #!import ../../lib/fsharp/Networking.fs #!import ../../lib/fsharp/Runtime.fs #!import ../../lib/fsharp/FileSystem.fs #!import ../../apps/builder/Builder.fs #!import ../../apps/spiral/Supervisor.fs ── fsharp - import ───────────────────────────────────────────────────────────── #if !INTERACTIVE namespace Polyglot #endif module Common = let nl = System.Environment.NewLine let q = @"""" let inline cons head tail = head :: tail module String = let inline contains (value : string) (input : string) = input.Contains value let inline endsWith (value : string) (input : string) = input.EndsWith value let inline padLeft totalWidth paddingChar (input : string) = input.PadLeft (totalWidth, paddingChar) let inline replace (oldValue : string) (newValue : string) (input : string) = input.Replace (oldValue, newValue) let inline split separator (input : string) = input.Split separator let inline spli... ── fsharp - import ───────────────────────────────────────────────────────────── #if !INTERACTIVE namespace Polyglot #endif module CommonFSharp = open Common /// ## getUnionCaseName let inline getUnionCaseName<'T> (x: 'T) = match Reflection.FSharpValue.GetUnionFields(x, typeof<'T>) with | case, _ -> case.Name ── fsharp - import ───────────────────────────────────────────────────────────── #if !INTERACTIVE namespace Polyglot #endif module Threading = open Common /// ## newDisposableToken let inline newDisposableToken (mergeToken: System.Threading.CancellationToken option) = let cts = new System.Threading.CancellationTokenSource () let cts = match mergeToken with | None -> cts | Some mergeToken -> System.Threading.CancellationTokenSource.CreateLinkedTokenSource [[| cts.Token; mergeToken |]] let disposable = newDisposable cts.Cancel cts.Token, disposable ── fsharp - import ───────────────────────────────────────────────────────────── #if !INTERACTIVE namespace Polyglot #endif module Async = open Common /// ## choice let inline choice asyncs = async { let e = Event<_> () use cts = new System.Threading.CancellationTokenSource () let fn = asyncs |> Seq.map (fun a -> async { let! x = a e.Trigger x }) |> Async.Parallel |> Async.Ignore Async.Start (fn, cts.Token) let! result = Async.AwaitEvent e.Publish cts.Cancel () return result } /// ## map let inline map fn a = async { let! x = a return fn x } /// ## catch let inline catch a = a |> Async.Catch ... ── fsharp - import ───────────────────────────────────────────────────────────── #if !INTERACTIVE namespace Polyglot #endif module AsyncSeq = open Common /// ## subscribeEvent let inline subscribeEvent (event: IEvent<'H, 'A>) map = let observable = System.Reactive.Linq.Observable.FromEventPattern<'H, 'A>(event.AddHandler, event.RemoveHandler) System.Reactive.Linq.Observable.Select (observable, fun event -> map event.EventArgs) |> FSharp.Control.AsyncSeq.ofObservableBuffered let subscribeToken (token : System.Threading.CancellationToken) = let tcs = new System.Threading.Tasks.TaskCompletionSource () System.Action tcs.SetResult |> token.Register |> ignore let start = System.DateTime.Now.Ticks FSharp.Control.AsyncSeq.unfoldAsync (fun (... ── fsharp - import ───────────────────────────────────────────────────────────── #if !INTERACTIVE namespace Polyglot #endif module Networking = open Common /// ## testPortOpen let inline testPortOpen port = async { let! ct = Async.CancellationToken use client = new System.Net.Sockets.TcpClient () try do! client.ConnectAsync ("127.0.0.1", port, ct) |> Async.awaitValueTaskUnit return true with ex -> trace Verbose (fun () -> $"testPortOpen / ex: {ex |> printException}") getLocals return false } let inline testPortOpenTimeout timeout port = async { let! result = testPortOpen port |> Async.runWithTimeoutAsync timeout return match result with | None -> false ... ── fsharp - import ───────────────────────────────────────────────────────────── #if !INTERACTIVE namespace Polyglot #endif module Runtime = open Common /// ## isWindows let isWindows = fun () -> System.Runtime.InteropServices.RuntimeInformation.IsOSPlatform System.Runtime.InteropServices.OSPlatform.Windows |> memoize /// ## getExecutableSuffix let inline getExecutableSuffix () = if isWindows () then ".exe" else "" /// ## splitCommand type private CommandParseStep = | Start | Path of quoted: bool | Arguments let splitCommand (command: string) = let rec loop (path, args) chars step = match chars, step with | ('"' | '\'') :: tail, _ when path = "" -> loop (pat... ── fsharp - import ───────────────────────────────────────────────────────────── #if !INTERACTIVE namespace Polyglot #endif module FileSystem = open Common /// ## Operators module Operators = let inline (</>) a b = System.IO.Path.Combine (a, b) open Operators /// ## createTempDirectoryName let inline createTempDirectoryName () = let root = System.Reflection.Assembly.GetEntryAssembly().GetName().Name System.IO.Path.GetTempPath () </> $"!{root}" </> string (newGuidFromDateTime System.DateTime.Now) /// ## createTempDirectory let inline createTempDirectory () = let tempFolder = createTempDirectoryName () let result = System.IO.Directory.CreateDirectory tempFolder if not result.Exists then let ge... ── fsharp - import ───────────────────────────────────────────────────────────── #if !INTERACTIVE namespace Polyglot #endif module Builder = open Common open FileSystem.Operators /// ## buildProject let inline buildProject runtime outputDir path = async { let fullPath = path |> System.IO.Path.GetFullPath let fileDir = fullPath |> System.IO.Path.GetDirectoryName let extension = fullPath |> System.IO.Path.GetExtension let getLocals () = $"fullPath: {fullPath} / {getLocals ()}" trace Debug (fun () -> "buildProject") getLocals match extension with | ".fsproj" -> () | _ -> failwith "Invalid project file" let runtimes = runtime |> Option.map List.singleton |> Option.defaultValue [[ "linux-x64"; "wi... ── fsharp - import ───────────────────────────────────────────────────────────── #if !INTERACTIVE namespace Polyglot #endif module Supervisor = open Common open FileSystem.Operators open Microsoft.AspNetCore.SignalR.Client /// ## sendJson let inline sendJson (port : int) (json : string) = async { let! portOpen = Networking.testPortOpen port if portOpen then try let connection = HubConnectionBuilder().WithUrl($"http://127.0.0.1:{port}").Build() do! connection.StartAsync () |> Async.AwaitTask let! result = connection.InvokeAsync<string>("ClientToServerMsg", json) |> Async.AwaitTask do! connection.StopAsync () |> Async.AwaitTask trace Debug (fun () -> $"sendJson / port: {port} / json: {json} /... ── fsharp ────────────────────────────────────────────────────────────────────── open Common open FileSystem.Operators ── fsharp ────────────────────────────────────────────────────────────────────── open System open System.Collections.Generic open System.IO open System.Text open System.Threading // open FSharp.Compiler // open FSharp.Compiler.Interactive.Shell // open FSharp.Compiler.Diagnostics // open FSharp.Compiler.EditorServices ── fsharp ────────────────────────────────────────────────────────────────────── let inline mapErrors (severity, errors, lastTopLevelIndex) allCode = let allCodeLineLength = allCode |> String.split [[| '\n' |]] |> Array.length errors |> List.map (fun (_, error) -> match error with | Supervisor.FatalError message -> ( severity, message, 0, ("", (0, 0), (0, 0)) ) |> List.singleton | Supervisor.TracedError data -> data.trace |> List.truncate 5 |> List.append [[ data.message ]] |> List.map (fun message -> ( severity, message, 0, ("", (0, 0), (0, 0)) ) ) | Supervisor.PackageErrors data | Supervisor.TokenizerErrors data | Supervisor.ParserErrors data | Supervisor.TypeErrors data -> data.errors |> List.filter (fun ((rangeStart, _), _) -> trace Debug (fun () -> $"Eval.mapErrors / rangeStart.line: {rangeStart.line} / lastTopLevelIndex: {lastTopLevelIndex} / allCodeLineLength: {allCodeLineLength} / filtered: {rangeStart.line > allCodeLineLength}") getLocals rangeStart.line > allCodeLineLength ) |> List.map (fun ((rangeStart, rangeEnd), message) -> ( severity, message, 0, ( (data.uri |> System.IO.Path.GetFileName), ( (match lastTopLevelIndex with | Some i when rangeStart.line >= i + allCodeLineLength + 3 -> rangeStart.line - allCodeLineLength - 2 | _ -> rangeStart.line - allCodeLineLength), (match lastTopLevelIndex with | Some i when rangeStart.line >= i + allCodeLineLength + 3 -> rangeStart.character - 4 | _ -> rangeStart.character) ), ( (match lastTopLevelIndex with | Some i when rangeStart.line >= i + allCodeLineLength + 3 -> rangeEnd.line - allCodeLineLength - 2 | _ -> rangeEnd.line - allCodeLineLength), (match lastTopLevelIndex with | Some i when rangeStart.line >= i + allCodeLineLength + 3 -> rangeEnd.character - 4 | _ -> rangeEnd.character) ) ) ) ) ) |> List.collect id |> List.toArray ── fsharp ────────────────────────────────────────────────────────────────────── let spiralExDir = Path.GetTempPath () </> "!spiral-ex" let maxTermCountPath = spiralExDir </> "max_term_count.txt" let mutable allCode = "" ── fsharp ────────────────────────────────────────────────────────────────────── let log2 (text : string) = if traceLevel = TraceLevel.Verbose then try let tmpPath = Path.GetTempPath () let logDir = Path.Combine (tmpPath, "_log_spiral_kernel") Directory.CreateDirectory logDir |> ignore let dateTimeStr = DateTime.Now.ToString "yyyy-MM-dd HH-mm-ss-fff" let logFile = Path.Combine (logDir, $"log_{dateTimeStr}_{Random().Next()}.txt") let dateTimeStr = DateTime.Now.ToString "yyyy-MM-dd HH:mm:ss.fff" let fileName = "SpiralScriptHelpers" File.AppendAllText (logFile, $"{dateTimeStr} {fileName} {text}{Environment.NewLine}") |> ignore with ex -> trace Debug (fun () -> $"V.log / ex: {ex |> printException}") getLocals ── fsharp ────────────────────────────────────────────────────────────────────── let log (text : string) = if traceLevel = TraceLevel.Verbose then try let tmpPath = Path.GetTempPath () let logDir = Path.Combine (tmpPath, "_log_spiral_kernel") Directory.CreateDirectory logDir |> ignore let logFile = Path.Combine (logDir, "log.txt") let dateTimeStr = DateTime.Now.ToString "yyyy-MM-dd HH:mm:ss.fff" let fileName = "SpiralScriptHelpers" File.AppendAllText (logFile, $"{dateTimeStr} {fileName} {text}{Environment.NewLine}") |> ignore with ex -> trace Debug (fun () -> $"SpiralScriptHelpers.log / ex: {ex |> printException}") getLocals log2 text ── fsharp ────────────────────────────────────────────────────────────────────── let assemblyName = Reflection.Assembly.GetEntryAssembly().GetName().Name let inline startTokenRangeWatcher () = if [[ "dotnet-repl" ]] |> List.contains assemblyName |> not then let tmpSpiralDir = Path.GetTempPath () </> "!dotnet-interactive-spiral" let tmpCodeDir = tmpSpiralDir </> "code" let tmpTokensDir = tmpSpiralDir </> "tokens" [[ tmpSpiralDir; tmpCodeDir; tmpTokensDir ]] |> List.iter (fun dir -> if Directory.Exists dir |> not then Directory.CreateDirectory dir |> ignore) let stream, disposable = FileSystem.watchDirectory (fun _ -> false) tmpCodeDir try let port = Supervisor.getCompilerPort () + 2 let existingFilesChild = tmpCodeDir |> System.IO.Directory.GetFiles |> Array.map (fun codePath -> async { try let tokensPath = tmpTokensDir </> (codePath |> System.IO.Path.GetFileName) if File.Exists tokensPath |> not then let! tokens = codePath |> Supervisor.getFileTokenRange port None match tokens with | Some tokens -> do! tokens |> FSharp.Json.Json.serialize |> FileSystem.writeAllTextAsync tokensPath | None -> log $"Eval.watchDirectory / GetFiles / tokens: None / {getLocals ()}" with ex -> log $"Eval.watchDirectory / GetFiles / ex: {ex |> printException} / {getLocals ()}" }) |> Async.Sequential |> Async.Ignore let streamAsyncChild = stream |> FSharp.Control.AsyncSeq.iterAsyncParallel (fun (ticks, event) -> async { try let getLocals () = $"ticks: {ticks} / event: {event} / {getLocals ()}" match event with | FileSystem.FileSystemChange.Changed (path, _) -> let codePath = tmpCodeDir </> path do! codePath |> FileSystem.waitForFileAccess (Some ( System.IO.FileAccess.Read, System.IO.FileShare.Read )) |> Async.runWithTimeoutAsync 1000 |> Async.Ignore let! tokens = codePath |> Supervisor.getFileTokenRange port None match tokens with | Some tokens -> do! tokens |> FSharp.Json.Json.serialize |> FileSystem.writeAllTextAsync (tmpTokensDir </> path) | None -> log $"Eval.watchDirectory / iterAsyncParallel / tokens: None / {getLocals ()}" | _ -> () with ex -> log $"Eval.watchDirectory / iterAsyncParallel / ex: {ex |> printException} / {getLocals ()}" }) async { do! Async.Sleep 3000 existingFilesChild |> Async.StartImmediate streamAsyncChild |> Async.Start } |> Async.Start with ex -> log $"Eval / ex: {ex |> printException}" disposable else newDisposable (fun () -> ()) ── fsharp ────────────────────────────────────────────────────────────────────── let inline eval (fsi_eval: string -> System.Threading.CancellationToken -> Choice<'a,Exception> * (TraceLevel * string * int * (string * (int * int) * (int * int))) array) (cancellationToken: Option<System.Threading.CancellationToken>) (code: string) = log $"Eval / code: %A{code}" let rawCellCode = if code |> String.trim <> "// // trace" then code |> String.replace "\r\n" "\n" else if traceLevel = Info then traceLevel <- Verbose else traceLevel <- Info traceDump <- traceLevel = Verbose "inl main () = ()" let lines = rawCellCode |> String.split [[| '\n' |]] if lines |> Array.exists (fun line -> line |> String.startsWith "#r " && line |> String.endsWith "\"") then let cancellationToken = defaultArg cancellationToken System.Threading.CancellationToken.None let ch, errors = fsi_eval code cancellationToken match ch with | Choice1Of2 v -> Ok(v), errors | Choice2Of2 ex -> Error(ex), errors else try let lastBlock = lines |> Array.tryFindBack (fun line -> line |> String.length > 0 && line.[[0]] <> ' ' ) let hasMain = lastBlock |> Option.exists (fun line -> line |> String.startsWith "inl main " || line |> String.startsWith "let main " ) let cellCode, lastTopLevelIndex = if hasMain then rawCellCode, None else let lastTopLevelIndex, _ = (lines |> Array.indexed, (None, false)) ||> Array.foldBack (fun (i, line) (lastTopLevelIndex, finished) -> trace Debug (fun () -> $"i: {i} / line: '{line}' / lastTopLevelIndex: {lastTopLevelIndex} / finished: {finished}") getLocals match line with | _ when finished -> lastTopLevelIndex, true | "" -> lastTopLevelIndex, false | line when line |> String.startsWith " " || line |> String.startsWith "// " -> lastTopLevelIndex, false | line when line |> String.startsWith "open " || line |> String.startsWith "prototype " || line |> String.startsWith "instance " || line |> String.startsWith "type " || line |> String.startsWith "union " || line |> String.startsWith "nominal " -> lastTopLevelIndex, true | line when line |> String.startsWith "inl " || line |> String.startsWith "let " -> let m = System.Text.RegularExpressions.Regex.Match ( line, @"^(inl|let) +([[~\(\w]][[\w\d']]*(?:| *[[~\w]][[\w\d']]*\)|, *[[~\w]][[\w\d']]*)) +[[:=]]" ) trace Debug (fun () -> $"m: '{m}' / m.Groups.Count: {m.Groups.Count}") getLocals if m.Groups.Count = 3 then Some i, false else lastTopLevelIndex, true | _ -> Some i, false ) let code = match lastTopLevelIndex with | Some lastTopLevelIndex -> lines |> Array.mapi (fun i line -> match i with | i when i < lastTopLevelIndex -> line | i when i = lastTopLevelIndex -> $"\nlet main () =\n {line}" | _ when line |> String.trim = "" -> "" | _ -> $" {line}" ) |> String.concat "\n" | None -> $"{rawCellCode}\n\ninl main () = ()\n" code, lastTopLevelIndex let newAllCode = $"{allCode}\n\n{cellCode}" let rustArgs = lines |> Array.tryPick (fun line -> if line |> String.startsWith "// // rust=" then line |> String.split [[| '=' |]] |> Array.tryItem 1 else None ) let timeout = lines |> Array.tryPick (fun line -> if line |> String.startsWith "// // timeout=" then line |> String.split [[| '=' |]] |> Array.tryItem 1 |> Option.map int else None ) |> Option.defaultValue (60000 * 60) let printCode = lines |> Array.tryPick (fun line -> if line |> String.startsWith "// // print_code=" then line |> String.split [[| '=' |]] |> Array.tryItem 1 |> Option.map ((=) "true") else None ) |> Option.defaultValue true let maxTermCount = lines |> Array.tryPick (fun line -> if line |> String.startsWith "// // max_term_count=" then line |> String.split [[| '=' |]] |> Array.tryItem 1 |> Option.map int else None ) async { try let! mainPath, disposable = newAllCode |> Supervisor.persistCode use _ = disposable match maxTermCount with | Some maxTermCount -> do! maxTermCount |> string |> FileSystem.writeAllTextAsync maxTermCountPath | None -> () let port = Supervisor.getCompilerPort () let! codeChoice = mainPath |> Supervisor.buildFile timeout port cancellationToken |> Async.catch |> Async.runWithTimeoutAsync timeout match maxTermCount with | Some _ -> do! FileSystem.deleteFileAsync maxTermCountPath |> Async.Ignore | None -> () let code = match codeChoice with | Some (Ok code) -> Some code | Some (Error ex) -> log $"Eval / errors: {ex |> printException}" None | _ -> None match code with | Some (Some code, spiralErrors) -> let spiralErrors = mapErrors (Warning, spiralErrors, lastTopLevelIndex) allCode let inline _trace (fn : unit -> string) = if traceLevel = Info then fn () |> System.Console.WriteLine else trace Info (fun () -> $"SpiralScriptHelpers.Eval / {fn ()}") getLocals if printCode then _trace (fun () -> if rustArgs |> Option.isSome then $"\n.fsx:\n{code}" else code) let! rustResult = if rustArgs |> Option.isNone || lastTopLevelIndex = None then None |> Async.init else async { // let hash = $"repl_{code |> Crypto.hashText}" let hash = $"spiral_eval" let! fsprojPath = code |> Builder.persistCodeProject [["Fable.Core"]] [[]] hash let projectDir = fsprojPath |> Path.GetDirectoryName let outDir = projectDir </> $"target/{hash}" let libLinkTargetPath = projectDir </> "target/fable-library-rust" let libLinkPath = outDir </> $"fable_modules/fable-library-rust" if Directory.Exists libLinkTargetPath |> not then libLinkTargetPath |> Directory.CreateDirectory |> ignore libLinkPath |> Path.GetDirectoryName |> Directory.CreateDirectory |> ignore let libLinkPathInfo = DirectoryInfo libLinkPath if libLinkPathInfo.Exists && libLinkPathInfo.LinkTarget = null then Directory.Delete (libLinkPath, true) if libLinkPath |> Directory.Exists |> not then Directory.CreateSymbolicLink (libLinkPath, libLinkTargetPath) |> ignore let! exitCode, result = Runtime.executeWithOptionsAsync { Command = $@"dotnet fable {fsprojPath} --optimize --lang rs --extension .rs --outDir {outDir}" CancellationToken = cancellationToken WorkingDirectory = None OnLine = None } if exitCode <> 0 then return Some (Error result) else let rsPath = outDir </> $"{hash}.rs" let! rsCode = rsPath |> FileSystem.readAllTextAsync let mainCode = "pub fn main() -> Result<(), String> { Ok(()) }" let cached = rsCode |> String.contains mainCode let rsCode = if cached then rsCode else rsCode |> String.replace "),);" "));" if printCode then _trace (fun () -> $".rs:\n{rsCode}") if not cached then do! $"{rsCode}\n\n{mainCode}\n" |> FileSystem.writeAllTextAsync rsPath let cargoTomlPath = outDir </> $"Cargo.toml" let cargoTomlContent = $"""[[package]] name = "{hash}" version = "0.0.1" edition = "2021" [[workspace]] [[dependencies]] fable_library_rust = {{ path = "fable_modules/fable-library-rust", optional = true, default-features = false }} clap = {{}} num-complex = {{}} pyo3 = "~0.21.0-beta.0" [[features]] default = [["fable_library_rust/default", "fable_library_rust/static_do_bindings"]] [[[[bin]]]] name = "{hash}" path = "{hash}.rs" """ do! cargoTomlContent |> FileSystem.writeAllTextExists cargoTomlPath let! exitCode, result = Runtime.executeWithOptionsAsync { Command = $@"cargo run --release --manifest-path {cargoTomlPath}" CancellationToken = cancellationToken WorkingDirectory = None OnLine = None } if exitCode = 0 then try let result = result |> String.split [[| '\n' |]] |> Array.skipWhile (fun line -> line |> String.contains @"[[optimized]] target" |> not ) |> Array.skip 2 |> String.concat "\n" return Some (Ok result) with ex -> return $"ex: {ex}\nresult:\n{result}" |> Error |> Some else return Some (Error result) } let cancellationToken = defaultArg cancellationToken System.Threading.CancellationToken.None let fsxResult = if rustArgs |> Option.isSome then None else try let ch, errors = fsi_eval code cancellationToken let errors = errors |> Array.map (fun (e1, e2, e3, _) -> (e1, e2, e3, ("", (0, 0), (0, 0))) ) Some (ch, errors) with ex -> trace Critical (fun () -> $"SpiralScriptHelpers.Eval / ex: {ex |> printException}") getLocals None match fsxResult, rustResult with | Some (ch, errors), None -> let errors = errors |> Array.append spiralErrors match ch with | Choice1Of2 v -> allCode <- newAllCode return Ok(v), errors | Choice2Of2 ex -> return Error ex, errors | _, Some result -> let result, errors = match result with | Ok result -> result, [[||]] | Error error -> "", [[| ( TraceLevel.Critical, error, 0, ("", (0, 0), (0, 0)) ) |]] let header = if printCode then ".rs output:\n" else "" let ch, errors2 = fsi_eval $"\"\"\"{header}{result}\n\"\"\"" cancellationToken let errors = errors |> Array.append spiralErrors |> Array.append errors2 match ch with | Choice1Of2 v -> allCode <- newAllCode return Ok(v), errors | Choice2Of2 ex -> return Error ex, errors | _ -> let ch, errors = fsi_eval "()" cancellationToken match ch with | Choice1Of2 v -> allCode <- newAllCode return Ok(v), errors | Choice2Of2 ex -> return Error ex, errors | Some (None, errors) when errors |> List.isEmpty |> not -> return errors.[[0]] |> fst |> Exception |> Error, mapErrors (TraceLevel.Critical, errors, lastTopLevelIndex) allCode | _ -> return Error (Exception "Spiral error or timeout"), [[| ( TraceLevel.Critical, "Diag: Spiral error or timeout", 0, ("", (0, 0), (0, 0)) ) |]] with ex -> log $"Eval / ex: {ex |> printException}" return Error (Exception $"Spiral error or timeout (4_) / ex: {ex |> printException}"), [[| ( TraceLevel.Critical, $"Diag: Spiral error or timeout (4) / ex: {ex |> printException}", 0, ("", (0, 0), (0, 0)) ) |]] } |> Async.runWithTimeoutStrict timeout |> Option.defaultValue ( Error (Exception "Spiral error or timeout (2)"), [[| ( TraceLevel.Critical, "Diag: Spiral error or timeout (2)", 0, ("", (0, 0), (0, 0)) ) |]] ) with ex -> log $"Eval / ex: {ex |> printException}" Error (Exception $"Spiral error or timeout (3) / ex: {ex |> printException}"), [[| ( TraceLevel.Critical, $"Diag: Spiral error or timeout (3) / ex: {ex |> printException}", 0, ("", (0, 0), (0, 0)) ) |]] [NbConvertApp] Converting notebook Eval.dib.ipynb to html /opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. validate(nb) /opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 return _pygments_highlight( [NbConvertApp] Writing 373066 bytes to Eval.dib.html 00:00:00 #1 [Debug] writeDibCode / output: Fs / path: Eval.dib 00:00:00 #2 [Debug] parseDibCode / output: Fs / file: Eval.dib
In [ ]:
{ . "$ScriptDir/../apps/scheduler/build.ps1" } | Invoke-Block
00:00:00 #1 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #2 [Debug] runWithTimeoutAsync / timeout: 60
00:00:00 #3 [Debug] executeAsync / options: { Command =
"dotnet "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 --default-int i32 --default-float f64"
WorkingDirectory = None
CancellationToken = Some System.Threading.CancellationToken
OnLine = Some <fun:main@464-1020> }
00:00:00 #4 [Verbose] > pwd: /home/runner/work/polyglot/polyglot/apps/scheduler
00:00:00 #5 [Verbose] > dll_path: /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release
00:00:00 #6 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #7 [Verbose] waitForPortAccess / port: 13805 / retry: 0
00:00:00 #8 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #9 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #10 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #11 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #12 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #13 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #14 [Verbose] > Starting the Spiral Server. It is bound to: http://localhost:13805
00:00:00 #15 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #16 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #17 [Debug] sendJson / port: 13805 / json: {"Ping":true} / result.Length:
00:00:00 #18 [Verbose] awaitCompiler / Ping / result: Some(null) / port: 13805 / retry: 0
00:00:00 #19 [Verbose] > Server bound to: http://localhost:13805
00:00:00 #20 [Debug] executeAsync / options: { Command = "pwsh -c "../../scripts/invoke-dib.ps1 Tasks.dib -Retries 3""
WorkingDirectory = None
CancellationToken = Some System.Threading.CancellationToken
OnLine = None }
00:00:02 #21 [Verbose] >
00:00:02 #22 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:02 #23 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:02 #24 [Verbose] > │ ## Tasks (Polyglot) │
00:00:02 #25 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:02 #26 [Verbose] >
00:00:02 #27 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:02 #28 [Verbose] > // // test
00:00:02 #29 [Verbose] >
00:00:02 #30 [Verbose] > open testing
00:00:04 #31 [Verbose] > Building /tmp/!dotnet-repl/20240320-1224-0941-4199-406f11a824e1/main.spi
00:00:05 #32 [Verbose] >
00:00:05 #33 [Verbose] > ╭─[ 3.56s - stdout ]───────────────────────────────────────────────────────────╮
00:00:05 #34 [Verbose] > │ () │
00:00:05 #35 [Verbose] > │ │
00:00:05 #36 [Verbose] > │ │
00:00:05 #37 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:05 #38 [Verbose] >
00:00:05 #39 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:05 #40 [Verbose] > inl types () =
00:00:05 #41 [Verbose] > global "[[<Fable.Core.Erase; Fable.Core.Emit(\"std::string::String\")>]]
00:00:05 #42 [Verbose] > type std_string_String = class end"
00:00:05 #43 [Verbose] > global "[[<Fable.Core.Erase; Fable.Core.Emit(\"&$0\")>]] type Ref<'T> =
00:00:05 #44 [Verbose] > class end"
00:00:05 #45 [Verbose] > global "[[<Fable.Core.Erase; Fable.Core.Emit(\"str\")>]] type Str = class
00:00:05 #46 [Verbose] > end"
00:00:05 #47 [Verbose] >
00:00:05 #48 [Verbose] > inl emit_expr forall a t. (args : a) (code : string) : t =
00:00:05 #49 [Verbose] > real
00:00:05 #50 [Verbose] > $"Fable.Core.RustInterop.emitRustExpr !args !code" : t
00:00:05 #51 [Verbose] >
00:00:05 #52 [Verbose] >
00:00:05 #53 [Verbose] > nominal std_string = $"std_string_String"
00:00:05 #54 [Verbose] > nominal ref' t = $"Ref<`t>"
00:00:05 #55 [Verbose] > nominal str = $"Str"
00:00:05 #56 [Verbose] >
00:00:05 #57 [Verbose] > inl format_debug forall t. (x : t) : std_string =
00:00:05 #58 [Verbose] > real
00:00:05 #59 [Verbose] > emit_expr `t `std_string x "format!(\"{:?}\", $0)"
00:00:05 #60 [Verbose] >
00:00:05 #61 [Verbose] > inl format_pretty forall t. (x : t) : std_string =
00:00:05 #62 [Verbose] > real
00:00:05 #63 [Verbose] > emit_expr `t `std_string x "format!(\"{:#?}\", $0)"
00:00:05 #64 [Verbose] >
00:00:05 #65 [Verbose] > inl to_std_string (str : ref' str) : std_string =
00:00:05 #66 [Verbose] > // inl str = join str
00:00:05 #67 [Verbose] > // // emit_expr () $"\"!str.to_string()\""
00:00:05 #68 [Verbose] > // // emit_expr () $"\"alloc::string::to_string(!str)\""
00:00:05 #69 [Verbose] > // emit_expr str "($0).to_string()"
00:00:05 #70 [Verbose] > emit_expr str $"\"String::from(core::ops::Deref::deref($0))\""
00:00:05 #71 [Verbose] > // emit_expr str $"\"String::from(*$0)\""
00:00:05 #72 [Verbose] > // emit_expr () $"\"String::from(!str)\""
00:00:05 #73 [Verbose] >
00:00:05 #74 [Verbose] > inl format forall t. (x : t) : std_string =
00:00:05 #75 [Verbose] > real
00:00:05 #76 [Verbose] > inl result : std_string =
00:00:05 #77 [Verbose] > typecase t with
00:00:05 #78 [Verbose] > | string => to_std_string x
00:00:05 #79 [Verbose] > | std_string => x
00:00:05 #80 [Verbose] > | _ => format_pretty `t x
00:00:05 #81 [Verbose] > result
00:00:05 #82 [Verbose] >
00:00:05 #83 [Verbose] > inl raw_string_literal (s : string) : ref' str =
00:00:05 #84 [Verbose] > emit_expr () $"\"r#\\\"\" + !s + \"\\\"#\""
00:00:05 #85 [Verbose] >
00:00:05 #86 [Verbose] > inl (~#) (s : string) : ref' str =
00:00:05 #87 [Verbose] > raw_string_literal s
00:00:06 #88 [Verbose] > Building /tmp/!dotnet-repl/20240320-1224-1175-7582-74a4e0596af1/main.spi
00:00:06 #89 [Verbose] >
00:00:06 #90 [Verbose] > ╭─[ 167.50ms - stdout ]────────────────────────────────────────────────────────╮
00:00:06 #91 [Verbose] > │ () │
00:00:06 #92 [Verbose] > │ │
00:00:06 #93 [Verbose] > │ │
00:00:06 #94 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #95 [Verbose] >
00:00:06 #96 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 #97 [Verbose] > nominal task_name = string
00:00:06 #98 [Verbose] >
00:00:06 #99 [Verbose] > union manual_scheduling =
00:00:06 #100 [Verbose] > | WithSuggestion
00:00:06 #101 [Verbose] > | WithoutSuggestion
00:00:06 #102 [Verbose] >
00:00:06 #103 [Verbose] > union recurrency_offset =
00:00:06 #104 [Verbose] > | Days : i32
00:00:06 #105 [Verbose] > | Weeks : i32
00:00:06 #106 [Verbose] > | Months : i32
00:00:06 #107 [Verbose] >
00:00:06 #108 [Verbose] > union day_of_week =
00:00:06 #109 [Verbose] > | Sunday
00:00:06 #110 [Verbose] > | Monday
00:00:06 #111 [Verbose] > | Tuesday
00:00:06 #112 [Verbose] > | Wednesday
00:00:06 #113 [Verbose] > | Thursday
00:00:06 #114 [Verbose] > | Friday
00:00:06 #115 [Verbose] > | Saturday
00:00:06 #116 [Verbose] >
00:00:06 #117 [Verbose] > union month =
00:00:06 #118 [Verbose] > | January
00:00:06 #119 [Verbose] > | February
00:00:06 #120 [Verbose] > | March
00:00:06 #121 [Verbose] > | April
00:00:06 #122 [Verbose] > | May
00:00:06 #123 [Verbose] > | June
00:00:06 #124 [Verbose] > | July
00:00:06 #125 [Verbose] > | August
00:00:06 #126 [Verbose] > | September
00:00:06 #127 [Verbose] > | October
00:00:06 #128 [Verbose] > | November
00:00:06 #129 [Verbose] > | December
00:00:06 #130 [Verbose] >
00:00:06 #131 [Verbose] > nominal day = i32
00:00:06 #132 [Verbose] > nominal year = i32
00:00:06 #133 [Verbose] >
00:00:06 #134 [Verbose] > union fixed_recurrency =
00:00:06 #135 [Verbose] > | Weekly : day_of_week
00:00:06 #136 [Verbose] > | Monthly : day
00:00:06 #137 [Verbose] > | Yearly : day * month
00:00:06 #138 [Verbose] >
00:00:06 #139 [Verbose] > union recurrency =
00:00:06 #140 [Verbose] > | Offset : recurrency_offset
00:00:06 #141 [Verbose] > | Fixed : list fixed_recurrency
00:00:06 #142 [Verbose] >
00:00:06 #143 [Verbose] > union scheduling =
00:00:06 #144 [Verbose] > | Manual : manual_scheduling
00:00:06 #145 [Verbose] > | Recurrent : recurrency
00:00:06 #146 [Verbose] >
00:00:06 #147 [Verbose] > type task =
00:00:06 #148 [Verbose] > {
00:00:06 #149 [Verbose] > name : task_name
00:00:06 #150 [Verbose] > scheduling : scheduling
00:00:06 #151 [Verbose] > }
00:00:06 #152 [Verbose] >
00:00:06 #153 [Verbose] > type date =
00:00:06 #154 [Verbose] > {
00:00:06 #155 [Verbose] > year : year
00:00:06 #156 [Verbose] > month : month
00:00:06 #157 [Verbose] > day : day
00:00:06 #158 [Verbose] > }
00:00:06 #159 [Verbose] >
00:00:06 #160 [Verbose] > union status =
00:00:06 #161 [Verbose] > | Postponed : option ()
00:00:06 #162 [Verbose] >
00:00:06 #163 [Verbose] > type event =
00:00:06 #164 [Verbose] > {
00:00:06 #165 [Verbose] > date : date
00:00:06 #166 [Verbose] > status : status
00:00:06 #167 [Verbose] > }
00:00:06 #168 [Verbose] >
00:00:06 #169 [Verbose] > type task_template =
00:00:06 #170 [Verbose] > {
00:00:06 #171 [Verbose] > task : task
00:00:06 #172 [Verbose] > events : list event
00:00:06 #173 [Verbose] > }
00:00:06 #174 [Verbose] > Building /tmp/!dotnet-repl/20240320-1224-1191-9196-9fdcf8bccc25/main.spi
00:00:06 #175 [Verbose] >
00:00:06 #176 [Verbose] > ╭─[ 176.87ms - stdout ]────────────────────────────────────────────────────────╮
00:00:06 #177 [Verbose] > │ () │
00:00:06 #178 [Verbose] > │ │
00:00:06 #179 [Verbose] > │ │
00:00:06 #180 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #181 [Verbose] >
00:00:06 #182 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 #183 [Verbose] > // // test
00:00:06 #184 [Verbose] > // // rust=
00:00:06 #185 [Verbose] >
00:00:06 #186 [Verbose] > types ()
00:00:06 #187 [Verbose] > Building /tmp/!dotnet-repl/20240320-1224-1209-0972-0836dad25577/main.spi
00:00:59 #188 [Verbose] >
00:00:59 #189 [Verbose] > ╭─[ 53.62s - return value ]────────────────────────────────────────────────────╮
00:00:59 #190 [Verbose] > │ .rs output: │
00:00:59 #191 [Verbose] > │ │
00:00:59 #192 [Verbose] > │ │
00:00:59 #193 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:59 #194 [Verbose] >
00:00:59 #195 [Verbose] > ╭─[ 53.63s - stdout ]──────────────────────────────────────────────────────────╮
00:00:59 #196 [Verbose] > │ │
00:00:59 #197 [Verbose] > │ .fsx: │
00:00:59 #198 [Verbose] > │ [<Fable.Core.Erase; Fable.Core.Emit("std::string::String")>] type │
00:00:59 #199 [Verbose] > │ std_string_String = class end │
00:00:59 #200 [Verbose] > │ [<Fable.Core.Erase; Fable.Core.Emit("&$0")>] type Ref<'T> = class end │
00:00:59 #201 [Verbose] > │ [<Fable.Core.Erase; Fable.Core.Emit("str")>] type Str = class end │
00:00:59 #202 [Verbose] > │ let rec method0 () : unit = │
00:00:59 #203 [Verbose] > │ () │
00:00:59 #204 [Verbose] > │ method0() │
00:00:59 #205 [Verbose] > │ │
00:00:59 #206 [Verbose] > │ .rs: │
00:00:59 #207 [Verbose] > │ #![allow(dead_code,)] │
00:00:59 #208 [Verbose] > │ #![allow(non_camel_case_types,)] │
00:00:59 #209 [Verbose] > │ #![allow(non_snake_case,)] │
00:00:59 #210 [Verbose] > │ #![allow(non_upper_case_globals,)] │
00:00:59 #211 [Verbose] > │ #![allow(unreachable_code,)] │
00:00:59 #212 [Verbose] > │ #![allow(unused_attributes,)] │
00:00:59 #213 [Verbose] > │ #![allow(unused_imports,)] │
00:00:59 #214 [Verbose] > │ #![allow(unused_macros,)] │
00:00:59 #215 [Verbose] > │ #![allow(unused_parens,)] │
00:00:59 #216 [Verbose] > │ #![allow(unused_variables,)] │
00:00:59 #217 [Verbose] > │ mod module_ccfa04bf { │
00:00:59 #218 [Verbose] > │ pub mod Spiral_eval { │
00:00:59 #219 [Verbose] > │ use super::*; │
00:00:59 #220 [Verbose] > │ use fable_library_rust::Native_::on_startup; │
00:00:59 #221 [Verbose] > │ pub fn method0() { (); } │
00:00:59 #222 [Verbose] > │ on_startup!(Spiral_eval::method0()); │
00:00:59 #223 [Verbose] > │ } │
00:00:59 #224 [Verbose] > │ } │
00:00:59 #225 [Verbose] > │ pub use module_ccfa04bf::*; │
00:00:59 #226 [Verbose] > │ │
00:00:59 #227 [Verbose] > │ │
00:00:59 #228 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:59 #229 [Verbose] >
00:00:59 #230 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:59 #231 [Verbose] > // // test
00:00:59 #232 [Verbose] > // // rust=
00:00:59 #233 [Verbose] >
00:00:59 #234 [Verbose] > inl get_tasks () : list task_template =
00:00:59 #235 [Verbose] > [[
00:00:59 #236 [Verbose] > {
00:00:59 #237 [Verbose] > task =
00:00:59 #238 [Verbose] > {
00:00:59 #239 [Verbose] > name = task_name "01"
00:00:59 #240 [Verbose] > scheduling = Manual WithSuggestion
00:00:59 #241 [Verbose] > }
00:00:59 #242 [Verbose] > events = [[]]
00:00:59 #243 [Verbose] > }
00:00:59 #244 [Verbose] > {
00:00:59 #245 [Verbose] > task =
00:00:59 #246 [Verbose] > {
00:00:59 #247 [Verbose] > name = task_name "02"
00:00:59 #248 [Verbose] > scheduling = Manual WithSuggestion
00:00:59 #249 [Verbose] > }
00:00:59 #250 [Verbose] > events = [[]]
00:00:59 #251 [Verbose] > }
00:00:59 #252 [Verbose] > {
00:00:59 #253 [Verbose] > task =
00:00:59 #254 [Verbose] > {
00:00:59 #255 [Verbose] > name = task_name "03"
00:00:59 #256 [Verbose] > scheduling = Manual WithSuggestion
00:00:59 #257 [Verbose] > }
00:00:59 #258 [Verbose] > events = [[]]
00:00:59 #259 [Verbose] > }
00:00:59 #260 [Verbose] > ]]
00:00:59 #261 [Verbose] >
00:00:59 #262 [Verbose] > types ()
00:00:59 #263 [Verbose] > get_tasks () |> format_pretty |> console.write_line
00:01:00 #264 [Verbose] > Building /tmp/!dotnet-repl/20240320-1225-0572-7264-79f21637fcec/main.spi
00:01:03 #265 [Verbose] >
00:01:03 #266 [Verbose] > ╭─[ 3.37s - return value ]─────────────────────────────────────────────────────╮
00:01:03 #267 [Verbose] > │ .rs output: │
00:01:03 #268 [Verbose] > │ UH2_0( │
00:01:03 #269 [Verbose] > │ UH0_1, │
00:01:03 #270 [Verbose] > │ "01", │
00:01:03 #271 [Verbose] > │ US4_0( │
00:01:03 #272 [Verbose] > │ US3_0, │
00:01:03 #273 [Verbose] > │ ), │
00:01:03 #274 [Verbose] > │ UH2_0( │
00:01:03 #275 [Verbose] > │ UH0_1, │
00:01:03 #276 [Verbose] > │ "02", │
00:01:03 #277 [Verbose] > │ US4_0( │
00:01:03 #278 [Verbose] > │ US3_0, │
00:01:03 #279 [Verbose] > │ ), │
00:01:03 #280 [Verbose] > │ UH2_0( │
00:01:03 #281 [Verbose] > │ UH0_1, │
00:01:03 #282 [Verbose] > │ "03", │
00:01:03 #283 [Verbose] > │ US4_0( │
00:01:03 #284 [Verbose] > │ US3_0, │
00:01:03 #285 [Verbose] > │ ), │
00:01:03 #286 [Verbose] > │ UH2_1, │
00:01:03 #287 [Verbose] > │ ), │
00:01:03 #288 [Verbose] > │ ), │
00:01:03 #289 [Verbose] > │ ) │
00:01:03 #290 [Verbose] > │ │
00:01:03 #291 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:03 #292 [Verbose] >
00:01:03 #293 [Verbose] > ╭─[ 3.37s - stdout ]───────────────────────────────────────────────────────────╮
00:01:03 #294 [Verbose] > │ │
00:01:03 #295 [Verbose] > │ .fsx: │
00:01:03 #296 [Verbose] > │ [<Fable.Core.Erase; Fable.Core.Emit("std::string::String")>] type │
00:01:03 #297 [Verbose] > │ std_string_String = class end │
00:01:03 #298 [Verbose] > │ [<Fable.Core.Erase; Fable.Core.Emit("&$0")>] type Ref<'T> = class end │
00:01:03 #299 [Verbose] > │ [<Fable.Core.Erase; Fable.Core.Emit("str")>] type Str = class end │
00:01:03 #300 [Verbose] > │ type [<Struct>] US0 = │
00:01:03 #301 [Verbose] > │ | US0_0 │
00:01:03 #302 [Verbose] > │ | US0_1 │
00:01:03 #303 [Verbose] > │ | US0_2 │
00:01:03 #304 [Verbose] > │ | US0_3 │
00:01:03 #305 [Verbose] > │ | US0_4 │
00:01:03 #306 [Verbose] > │ | US0_5 │
00:01:03 #307 [Verbose] > │ | US0_6 │
00:01:03 #308 [Verbose] > │ | US0_7 │
00:01:03 #309 [Verbose] > │ | US0_8 │
00:01:03 #310 [Verbose] > │ | US0_9 │
00:01:03 #311 [Verbose] > │ | US0_10 │
00:01:03 #312 [Verbose] > │ | US0_11 │
00:01:03 #313 [Verbose] > │ and [<Struct>] US2 = │
00:01:03 #314 [Verbose] > │ | US2_0 │
00:01:03 #315 [Verbose] > │ | US2_1 │
00:01:03 #316 [Verbose] > │ and [<Struct>] US1 = │
00:01:03 #317 [Verbose] > │ | US1_0 of f0_0 : US2 │
00:01:03 #318 [Verbose] > │ and UH0 = │
00:01:03 #319 [Verbose] > │ | UH0_0 of int32 * US0 * int32 * US1 * UH0 │
00:01:03 #320 [Verbose] > │ | UH0_1 │
00:01:03 #321 [Verbose] > │ and [<Struct>] US3 = │
00:01:03 #322 [Verbose] > │ | US3_0 │
00:01:03 #323 [Verbose] > │ | US3_1 │
00:01:03 #324 [Verbose] > │ and [<Struct>] US7 = │
00:01:03 #325 [Verbose] > │ | US7_0 │
00:01:03 #326 [Verbose] > │ | US7_1 │
00:01:03 #327 [Verbose] > │ | US7_2 │
00:01:03 #328 [Verbose] > │ | US7_3 │
00:01:03 #329 [Verbose] > │ | US7_4 │
00:01:03 #330 [Verbose] > │ | US7_5 │
00:01:03 #331 [Verbose] > │ | US7_6 │
00:01:03 #332 [Verbose] > │ and [<Struct>] US6 = │
00:01:03 #333 [Verbose] > │ | US6_0 of f0_0 : int32 │
00:01:03 #334 [Verbose] > │ | US6_1 of f1_0 : US7 │
00:01:03 #335 [Verbose] > │ | US6_2 of f2_0 : int32 * f2_1 : US0 │
00:01:03 #336 [Verbose] > │ and UH1 = │
00:01:03 #337 [Verbose] > │ | UH1_0 of US6 * UH1 │
00:01:03 #338 [Verbose] > │ | UH1_1 │
00:01:03 #339 [Verbose] > │ and [<Struct>] US8 = │
00:01:03 #340 [Verbose] > │ | US8_0 of f0_0 : int32 │
00:01:03 #341 [Verbose] > │ | US8_1 of f1_0 : int32 │
00:01:03 #342 [Verbose] > │ | US8_2 of f2_0 : int32 │
00:01:03 #343 [Verbose] > │ and [<Struct>] US5 = │
00:01:03 #344 [Verbose] > │ | US5_0 of f0_0 : UH1 │
00:01:03 #345 [Verbose] > │ | US5_1 of f1_0 : US8 │
00:01:03 #346 [Verbose] > │ and [<Struct>] US4 = │
00:01:03 #347 [Verbose] > │ | US4_0 of f0_0 : US3 │
00:01:03 #348 [Verbose] > │ | US4_1 of f1_0 : US5 │
00:01:03 #349 [Verbose] > │ and UH2 = │
00:01:03 #350 [Verbose] > │ | UH2_0 of UH0 * string * US4 * UH2 │
00:01:03 #351 [Verbose] > │ | UH2_1 │
00:01:03 #352 [Verbose] > │ let rec method0 () : unit = │
00:01:03 #353 [Verbose] > │ let v0 : UH0 = UH0_1 │
00:01:03 #354 [Verbose] > │ let v1 : string = "01" │
00:01:03 #355 [Verbose] > │ let v2 : US3 = US3_0 │
00:01:03 #356 [Verbose] > │ let v3 : US4 = US4_0(v2) │
00:01:03 #357 [Verbose] > │ let v4 : UH0 = UH0_1 │
00:01:03 #358 [Verbose] > │ let v5 : string = "02" │
00:01:03 #359 [Verbose] > │ let v6 : US3 = US3_0 │
00:01:03 #360 [Verbose] > │ let v7 : US4 = US4_0(v6) │
00:01:03 #361 [Verbose] > │ let v8 : UH0 = UH0_1 │
00:01:03 #362 [Verbose] > │ let v9 : string = "03" │
00:01:03 #363 [Verbose] > │ let v10 : US3 = US3_0 │
00:01:03 #364 [Verbose] > │ let v11 : US4 = US4_0(v10) │
00:01:03 #365 [Verbose] > │ let v12 : UH2 = UH2_1 │
00:01:03 #366 [Verbose] > │ let v13 : UH2 = UH2_0(v8, v9, v11, v12) │
00:01:03 #367 [Verbose] > │ let v14 : UH2 = UH2_0(v4, v5, v7, v13) │
00:01:03 #368 [Verbose] > │ let v15 : UH2 = UH2_0(v0, v1, v3, v14) │
00:01:03 #369 [Verbose] > │ let v16 : string = "format!(\"{:#?}\", $0)" │
00:01:03 #370 [Verbose] > │ let v17 : std_string_String = Fable.Core.RustInterop.emitRustExpr v15 │
00:01:03 #371 [Verbose] > │ v16 │
00:01:03 #372 [Verbose] > │ System.Console.WriteLine v17 │
00:01:03 #373 [Verbose] > │ () │
00:01:03 #374 [Verbose] > │ method0() │
00:01:03 #375 [Verbose] > │ │
00:01:03 #376 [Verbose] > │ .rs: │
00:01:03 #377 [Verbose] > │ #![allow(dead_code,)] │
00:01:03 #378 [Verbose] > │ #![allow(non_camel_case_types,)] │
00:01:03 #379 [Verbose] > │ #![allow(non_snake_case,)] │
00:01:03 #380 [Verbose] > │ #![allow(non_upper_case_globals,)] │
00:01:03 #381 [Verbose] > │ #![allow(unreachable_code,)] │
00:01:03 #382 [Verbose] > │ #![allow(unused_attributes,)] │
00:01:03 #383 [Verbose] > │ #![allow(unused_imports,)] │
00:01:03 #384 [Verbose] > │ #![allow(unused_macros,)] │
00:01:03 #385 [Verbose] > │ #![allow(unused_parens,)] │
00:01:03 #386 [Verbose] > │ #![allow(unused_variables,)] │
00:01:03 #387 [Verbose] > │ mod module_ccfa04bf { │
00:01:03 #388 [Verbose] > │ pub mod Spiral_eval { │
00:01:03 #389 [Verbose] > │ use super::*; │
00:01:03 #390 [Verbose] > │ use fable_library_rust::Native_::LrcPtr; │
00:01:03 #391 [Verbose] > │ use fable_library_rust::Native_::MutCell; │
00:01:03 #392 [Verbose] > │ use fable_library_rust::Native_::on_startup; │
00:01:03 #393 [Verbose] > │ use fable_library_rust::String_::printfn; │
00:01:03 #394 [Verbose] > │ use fable_library_rust::String_::string; │
00:01:03 #395 [Verbose] > │ #[derive(Clone, Copy, Debug, PartialEq, PartialOrd, Hash, Eq,)] │
00:01:03 #396 [Verbose] > │ pub enum US0 { │
00:01:03 #397 [Verbose] > │ US0_0, │
00:01:03 #398 [Verbose] > │ US0_1, │
00:01:03 #399 [Verbose] > │ US0_2, │
00:01:03 #400 [Verbose] > │ US0_3, │
00:01:03 #401 [Verbose] > │ US0_4, │
00:01:03 #402 [Verbose] > │ US0_5, │
00:01:03 #403 [Verbose] > │ US0_6, │
00:01:03 #404 [Verbose] > │ US0_7, │
00:01:03 #405 [Verbose] > │ US0_8, │
00:01:03 #406 [Verbose] > │ US0_9, │
00:01:03 #407 [Verbose] > │ US0_10, │
00:01:03 #408 [Verbose] > │ US0_11, │
00:01:03 #409 [Verbose] > │ } │
00:01:03 #410 [Verbose] > │ impl Spiral_eval::US0 { │
00:01:03 #411 [Verbose] > │ pub fn get_IsUS0_0(this_: &MutCell<Spiral_eval::US0>, unitArg: │
00:01:03 #412 [Verbose] > │ ()) │
00:01:03 #413 [Verbose] > │ -> bool { │
00:01:03 #414 [Verbose] > │ if unreachable!() { true } else { false } │
00:01:03 #415 [Verbose] > │ } │
00:01:03 #416 [Verbose] > │ pub fn get_IsUS0_1(this_: &MutCell<Spiral_eval::US0>, unitArg: │
00:01:03 #417 [Verbose] > │ ()) │
00:01:03 #418 [Verbose] > │ -> bool { │
00:01:03 #419 [Verbose] > │ if unreachable!() { true } else { false } │
00:01:03 #420 [Verbose] > │ } │
00:01:03 #421 [Verbose] > │ pub fn get_IsUS0_2(this_: &MutCell<Spiral_eval::US0>, unitArg: │
00:01:03 #422 [Verbose] > │ ()) │
00:01:03 #423 [Verbose] > │ -> bool { │
00:01:03 #424 [Verbose] > │ if unreachable!() { true } else { false } │
00:01:03 #425 [Verbose] > │ } │
00:01:03 #426 [Verbose] > │ pub fn get_IsUS0_3(this_: &MutCell<Spiral_eval::US0>, unitArg: │
00:01:03 #427 [Verbose] > │ ()) │
00:01:03 #428 [Verbose] > │ -> bool { │
00:01:03 #429 [Verbose] > │ if unreachable!() { true } else { false } │
00:01:03 #430 [Verbose] > │ } │
00:01:03 #431 [Verbose] > │ pub fn get_IsUS0_4(this_: &MutCell<Spiral_eval::US0>, unitArg: │
00:01:03 #432 [Verbose] > │ ()) │
00:01:03 #433 [Verbose] > │ -> bool { │
00:01:03 #434 [Verbose] > │ if unreachable!() { true } else { false } │
00:01:03 #435 [Verbose] > │ } │
00:01:03 #436 [Verbose] > │ pub fn get_IsUS0_5(this_: &MutCell<Spiral_eval::US0>, unitArg: │
00:01:03 #437 [Verbose] > │ ()) │
00:01:03 #438 [Verbose] > │ -> bool { │
00:01:03 #439 [Verbose] > │ if unreachable!() { true } else { false } │
00:01:03 #440 [Verbose] > │ } │
00:01:03 #441 [Verbose] > │ pub fn get_IsUS0_6(this_: &MutCell<Spiral_eval::US0>, unitArg: │
00:01:03 #442 [Verbose] > │ ()) │
00:01:03 #443 [Verbose] > │ -> bool { │
00:01:03 #444 [Verbose] > │ if unreachable!() { true } else { false } │
00:01:03 #445 [Verbose] > │ } │
00:01:03 #446 [Verbose] > │ pub fn get_IsUS0_7(this_: &MutCell<Spiral_eval::US0>, unitArg: │
00:01:03 #447 [Verbose] > │ ()) │
00:01:03 #448 [Verbose] > │ -> bool { │
00:01:03 #449 [Verbose] > │ if unreachable!() { true } else { false } │
00:01:03 #450 [Verbose] > │ } │
00:01:03 #451 [Verbose] > │ pub fn get_IsUS0_8(this_: &MutCell<Spiral_eval::US0>, unitArg: │
00:01:03 #452 [Verbose] > │ ()) │
00:01:03 #453 [Verbose] > │ -> bool { │
00:01:03 #454 [Verbose] > │ if unreachable!() { true } else { false } │
00:01:03 #455 [Verbose] > │ } │
00:01:03 #456 [Verbose] > │ pub fn get_IsUS0_9(this_: &MutCell<Spiral_eval::US0>, unitArg: │
00:01:03 #457 [Verbose] > │ ()) │
00:01:03 #458 [Verbose] > │ -> bool { │
00:01:03 #459 [Verbose] > │ if unreachable!() { true } else { false } │
00:01:03 #460 [Verbose] > │ } │
00:01:03 #461 [Verbose] > │ pub fn get_IsUS0_10(this_: &MutCell<Spiral_eval::US0>, │
00:01:03 #462 [Verbose] > │ unitArg: ()) -> bool { │
00:01:03 #463 [Verbose] > │ if unreachable!() { true } else { false } │
00:01:03 #464 [Verbose] > │ } │
00:01:03 #465 [Verbose] > │ pub fn get_IsUS0_11(this_: &MutCell<Spiral_eval::US0>, │
00:01:03 #466 [Verbose] > │ unitArg: ()) -> bool { │
00:01:03 #467 [Verbose] > │ if unreachable!() { true } else { false } │
00:01:03 #468 [Verbose] > │ } │
00:01:03 #469 [Verbose] > │ } │
00:01:03 #470 [Verbose] > │ impl core::fmt::Display for Spiral_eval::US0 { │
00:01:03 #471 [Verbose] > │ fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result │
00:01:03 #472 [Verbose] > │ { │
00:01:03 #473 [Verbose] > │ write!(f, "{}", core::any::type_name::<Self>()) │
00:01:03 #474 [Verbose] > │ } │
00:01:03 #475 [Verbose] > │ } │
00:01:03 #476 [Verbose] > │ #[derive(Clone, Copy, Debug, PartialEq, PartialOrd, Hash, Eq,)] │
00:01:03 #477 [Verbose] > │ pub enum US2 { US2_0, US2_1, } │
00:01:03 #478 [Verbose] > │ impl Spiral_eval::US2 { │
00:01:03 #479 [Verbose] > │ pub fn get_IsUS2_0(this_: &MutCell<Spiral_eval::US2>, unitArg: │
00:01:03 #480 [Verbose] > │ ()) │
00:01:03 #481 [Verbose] > │ -> bool { │
00:01:03 #482 [Verbose] > │ if unreachable!() { true } else { false } │
00:01:03 #483 [Verbose] > │ } │
00:01:03 #484 [Verbose] > │ pub fn get_IsUS2_1(this_: &MutCell<Spiral_eval::US2>, unitArg: │
00:01:03 #485 [Verbose] > │ ()) │
00:01:03 #486 [Verbose] > │ -> bool { │
00:01:03 #487 [Verbose] > │ if unreachable!() { true } else { false } │
00:01:03 #488 [Verbose] > │ } │
00:01:03 #489 [Verbose] > │ } │
00:01:03 #490 [Verbose] > │ impl core::fmt::Display for Spiral_eval::US2 { │
00:01:03 #491 [Verbose] > │ fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result │
00:01:03 #492 [Verbose] > │ { │
00:01:03 #493 [Verbose] > │ write!(f, "{}", core::any::type_name::<Self>()) │
00:01:03 #494 [Verbose] > │ } │
00:01:03 #495 [Verbose] > │ } │
00:01:03 #496 [Verbose] > │ #[derive(Clone, Copy, Debug, PartialEq, PartialOrd, Hash, Eq,)] │
00:01:03 #497 [Verbose] > │ pub enum US1 { US1_0(Spiral_eval::US2), } │
00:01:03 #498 [Verbose] > │ impl Spiral_eval::US1 { │
00:01:03 #499 [Verbose] > │ pub fn get_IsUS1_0(this_: &MutCell<Spiral_eval::US1>, unitArg: │
00:01:03 #500 [Verbose] > │ ()) │
00:01:03 #501 [Verbose] > │ -> bool { │
00:01:03 #502 [Verbose] > │ if unreachable!() { true } else { false } │
00:01:03 #503 [Verbose] > │ } │
00:01:03 #504 [Verbose] > │ } │
00:01:03 #505 [Verbose] > │ impl core::fmt::Display for Spiral_eval::US1 { │
00:01:03 #506 [Verbose] > │ fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result │
00:01:03 #507 [Verbose] > │ { │
00:01:03 #508 [Verbose] > │ write!(f, "{}", core::any::type_name::<Self>()) │
00:01:03 #509 [Verbose] > │ } │
00:01:03 #510 [Verbose] > │ } │
00:01:03 #511 [Verbose] > │ #[derive(Clone, Debug, PartialEq, PartialOrd, Hash, Eq,)] │
00:01:03 #512 [Verbose] > │ pub enum UH0 { │
00:01:03 #513 [Verbose] > │ UH0_0(i32, Spiral_eval::US0, i32, Spiral_eval::US1, │
00:01:03 #514 [Verbose] > │ LrcPtr<Spiral_eval::UH0>), │
00:01:03 #515 [Verbose] > │ UH0_1, │
00:01:03 #516 [Verbose] > │ } │
00:01:03 #517 [Verbose] > │ impl Spiral_eval::UH0 { │
00:01:03 #518 [Verbose] > │ pub fn get_IsUH0_0(this_: LrcPtr<Spiral_eval::UH0>, unitArg: ()) │
00:01:03 #519 [Verbose] > │ -> bool { │
00:01:03 #520 [Verbose] > │ if let Spiral_eval::UH0::UH0_0(this__0_0, this__0_1, │
00:01:03 #521 [Verbose] > │ this__0_2, this__0_3, │
00:01:03 #522 [Verbose] > │ this__0_4) = this_.as_ref() { │
00:01:03 #523 [Verbose] > │ true │
00:01:03 #524 [Verbose] > │ } else { false } │
00:01:03 #525 [Verbose] > │ } │
00:01:03 #526 [Verbose] > │ pub fn get_IsUH0_1(this_: LrcPtr<Spiral_eval::UH0>, unitArg: ()) │
00:01:03 #527 [Verbose] > │ -> bool { │
00:01:03 #528 [Verbose] > │ if let Spiral_eval::UH0::UH0_1 = this_.as_ref() { │
00:01:03 #529 [Verbose] > │ true │
00:01:03 #530 [Verbose] > │ } else { false } │
00:01:03 #531 [Verbose] > │ } │
00:01:03 #532 [Verbose] > │ } │
00:01:03 #533 [Verbose] > │ impl core::fmt::Display for Spiral_eval::UH0 { │
00:01:03 #534 [Verbose] > │ fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result │
00:01:03 #535 [Verbose] > │ { │
00:01:03 #536 [Verbose] > │ write!(f, "{}", core::any::type_name::<Self>()) │
00:01:03 #537 [Verbose] > │ } │
00:01:03 #538 [Verbose] > │ } │
00:01:03 #539 [Verbose] > │ #[derive(Clone, Copy, Debug, PartialEq, PartialOrd, Hash, Eq,)] │
00:01:03 #540 [Verbose] > │ pub enum US3 { US3_0, US3_1, } │
00:01:03 #541 [Verbose] > │ impl Spiral_eval::US3 { │
00:01:03 #542 [Verbose] > │ pub fn get_IsUS3_0(this_: &MutCell<Spiral_eval::US3>, unitArg: │
00:01:03 #543 [Verbose] > │ ()) │
00:01:03 #544 [Verbose] > │ -> bool { │
00:01:03 #545 [Verbose] > │ if unreachable!() { true } else { false } │
00:01:03 #546 [Verbose] > │ } │
00:01:03 #547 [Verbose] > │ pub fn get_IsUS3_1(this_: &MutCell<Spiral_eval::US3>, unitArg: │
00:01:03 #548 [Verbose] > │ ()) │
00:01:03 #549 [Verbose] > │ -> bool { │
00:01:03 #550 [Verbose] > │ if unreachable!() { true } else { false } │
00:01:03 #551 [Verbose] > │ } │
00:01:03 #552 [Verbose] > │ } │
00:01:03 #553 [Verbose] > │ impl core::fmt::Display for Spiral_eval::US3 { │
00:01:03 #554 [Verbose] > │ fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result │
00:01:03 #555 [Verbose] > │ { │
00:01:03 #556 [Verbose] > │ write!(f, "{}", core::any::type_name::<Self>()) │
00:01:03 #557 [Verbose] > │ } │
00:01:03 #558 [Verbose] > │ } │
00:01:03 #559 [Verbose] > │ #[derive(Clone, Copy, Debug, PartialEq, PartialOrd, Hash, Eq,)] │
00:01:03 #560 [Verbose] > │ pub enum US7 { US7_0, US7_1, US7_2, US7_3, US7_4, US7_5, US7_6, } │
00:01:03 #561 [Verbose] > │ impl Spiral_eval::US7 { │
00:01:03 #562 [Verbose] > │ pub fn get_IsUS7_0(this_: &MutCell<Spiral_eval::US7>, unitArg: │
00:01:03 #563 [Verbose] > │ ()) │
00:01:03 #564 [Verbose] > │ -> bool { │
00:01:03 #565 [Verbose] > │ if unreachable!() { true } else { false } │
00:01:03 #566 [Verbose] > │ } │
00:01:03 #567 [Verbose] > │ pub fn get_IsUS7_1(this_: &MutCell<Spiral_eval::US7>, unitArg: │
00:01:03 #568 [Verbose] > │ ()) │
00:01:03 #569 [Verbose] > │ -> bool { │
00:01:03 #570 [Verbose] > │ if unreachable!() { true } else { false } │
00:01:03 #571 [Verbose] > │ } │
00:01:03 #572 [Verbose] > │ pub fn get_IsUS7_2(this_: &MutCell<Spiral_eval::US7>, unitArg: │
00:01:03 #573 [Verbose] > │ ()) │
00:01:03 #574 [Verbose] > │ -> bool { │
00:01:03 #575 [Verbose] > │ if unreachable!() { true } else { false } │
00:01:03 #576 [Verbose] > │ } │
00:01:03 #577 [Verbose] > │ pub fn get_IsUS7_3(this_: &MutCell<Spiral_eval::US7>, unitArg: │
00:01:03 #578 [Verbose] > │ ()) │
00:01:03 #579 [Verbose] > │ -> bool { │
00:01:03 #580 [Verbose] > │ if unreachable!() { true } else { false } │
00:01:03 #581 [Verbose] > │ } │
00:01:03 #582 [Verbose] > │ pub fn get_IsUS7_4(this_: &MutCell<Spiral_eval::US7>, unitArg: │
00:01:03 #583 [Verbose] > │ ()) │
00:01:03 #584 [Verbose] > │ -> bool { │
00:01:03 #585 [Verbose] > │ if unreachable!() { true } else { false } │
00:01:03 #586 [Verbose] > │ } │
00:01:03 #587 [Verbose] > │ pub fn get_IsUS7_5(this_: &MutCell<Spiral_eval::US7>, unitArg: │
00:01:03 #588 [Verbose] > │ ()) │
00:01:03 #589 [Verbose] > │ -> bool { │
00:01:03 #590 [Verbose] > │ if unreachable!() { true } else { false } │
00:01:03 #591 [Verbose] > │ } │
00:01:03 #592 [Verbose] > │ pub fn get_IsUS7_6(this_: &MutCell<Spiral_eval::US7>, unitArg: │
00:01:03 #593 [Verbose] > │ ()) │
00:01:03 #594 [Verbose] > │ -> bool { │
00:01:03 #595 [Verbose] > │ if unreachable!() { true } else { false } │
00:01:03 #596 [Verbose] > │ } │
00:01:03 #597 [Verbose] > │ } │
00:01:03 #598 [Verbose] > │ impl core::fmt::Display for Spiral_eval::US7 { │
00:01:03 #599 [Verbose] > │ fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result │
00:01:03 #600 [Verbose] > │ { │
00:01:03 #601 [Verbose] > │ write!(f, "{}", core::any::type_name::<Self>()) │
00:01:03 #602 [Verbose] > │ } │
00:01:03 #603 [Verbose] > │ } │
00:01:03 #604 [Verbose] > │ #[derive(Clone, Copy, Debug, PartialEq, PartialOrd, Hash, Eq,)] │
00:01:03 #605 [Verbose] > │ pub enum US6 { │
00:01:03 #606 [Verbose] > │ US6_0(i32), │
00:01:03 #607 [Verbose] > │ US6_1(Spiral_eval::US7), │
00:01:03 #608 [Verbose] > │ US6_2(i32, Spiral_eval::US0), │
00:01:03 #609 [Verbose] > │ } │
00:01:03 #610 [Verbose] > │ impl Spiral_eval::US6 { │
00:01:03 #611 [Verbose] > │ pub fn get_IsUS6_0(this_: &MutCell<Spiral_eval::US6>, unitArg: │
00:01:03 #612 [Verbose] > │ ()) │
00:01:03 #613 [Verbose] > │ -> bool { │
00:01:03 #614 [Verbose] > │ if unreachable!() { true } else { false } │
00:01:03 #615 [Verbose] > │ } │
00:01:03 #616 [Verbose] > │ pub fn get_IsUS6_1(this_: &MutCell<Spiral_eval::US6>, unitArg: │
00:01:03 #617 [Verbose] > │ ()) │
00:01:03 #618 [Verbose] > │ -> bool { │
00:01:03 #619 [Verbose] > │ if unreachable!() { true } else { false } │
00:01:03 #620 [Verbose] > │ } │
00:01:03 #621 [Verbose] > │ pub fn get_IsUS6_2(this_: &MutCell<Spiral_eval::US6>, unitArg: │
00:01:03 #622 [Verbose] > │ ()) │
00:01:03 #623 [Verbose] > │ -> bool { │
00:01:03 #624 [Verbose] > │ if unreachable!() { true } else { false } │
00:01:03 #625 [Verbose] > │ } │
00:01:03 #626 [Verbose] > │ } │
00:01:03 #627 [Verbose] > │ impl core::fmt::Display for Spiral_eval::US6 { │
00:01:03 #628 [Verbose] > │ fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result │
00:01:03 #629 [Verbose] > │ { │
00:01:03 #630 [Verbose] > │ write!(f, "{}", core::any::type_name::<Self>()) │
00:01:03 #631 [Verbose] > │ } │
00:01:03 #632 [Verbose] > │ } │
00:01:03 #633 [Verbose] > │ #[derive(Clone, Debug, PartialEq, PartialOrd, Hash, Eq,)] │
00:01:03 #634 [Verbose] > │ pub enum UH1 { │
00:01:03 #635 [Verbose] > │ UH1_0(Spiral_eval::US6, LrcPtr<Spiral_eval::UH1>), │
00:01:03 #636 [Verbose] > │ UH1_1, │
00:01:03 #637 [Verbose] > │ } │
00:01:03 #638 [Verbose] > │ impl Spiral_eval::UH1 { │
00:01:03 #639 [Verbose] > │ pub fn get_IsUH1_0(this_: LrcPtr<Spiral_eval::UH1>, unitArg: ()) │
00:01:03 #640 [Verbose] > │ -> bool { │
00:01:03 #641 [Verbose] > │ if let Spiral_eval::UH1::UH1_0(this__0_0, this__0_1) = │
00:01:03 #642 [Verbose] > │ this_.as_ref() { │
00:01:03 #643 [Verbose] > │ true │
00:01:03 #644 [Verbose] > │ } else { false } │
00:01:03 #645 [Verbose] > │ } │
00:01:03 #646 [Verbose] > │ pub fn get_IsUH1_1(this_: LrcPtr<Spiral_eval::UH1>, unitArg: ()) │
00:01:03 #647 [Verbose] > │ -> bool { │
00:01:03 #648 [Verbose] > │ if let Spiral_eval::UH1::UH1_1 = this_.as_ref() { │
00:01:03 #649 [Verbose] > │ true │
00:01:03 #650 [Verbose] > │ } else { false } │
00:01:03 #651 [Verbose] > │ } │
00:01:03 #652 [Verbose] > │ } │
00:01:03 #653 [Verbose] > │ impl core::fmt::Display for Spiral_eval::UH1 { │
00:01:03 #654 [Verbose] > │ fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result │
00:01:03 #655 [Verbose] > │ { │
00:01:03 #656 [Verbose] > │ write!(f, "{}", core::any::type_name::<Self>()) │
00:01:03 #657 [Verbose] > │ } │
00:01:03 #658 [Verbose] > │ } │
00:01:03 #659 [Verbose] > │ #[derive(Clone, Copy, Debug, PartialEq, PartialOrd, Hash, Eq,)] │
00:01:03 #660 [Verbose] > │ pub enum US8 { US8_0(i32), US8_1(i32), US8_2(i32), } │
00:01:03 #661 [Verbose] > │ impl Spiral_eval::US8 { │
00:01:03 #662 [Verbose] > │ pub fn get_IsUS8_0(this_: &MutCell<Spiral_eval::US8>, unitArg: │
00:01:03 #663 [Verbose] > │ ()) │
00:01:03 #664 [Verbose] > │ -> bool { │
00:01:03 #665 [Verbose] > │ if unreachable!() { true } else { false } │
00:01:03 #666 [Verbose] > │ } │
00:01:03 #667 [Verbose] > │ pub fn get_IsUS8_1(this_: &MutCell<Spiral_eval::US8>, unitArg: │
00:01:03 #668 [Verbose] > │ ()) │
00:01:03 #669 [Verbose] > │ -> bool { │
00:01:03 #670 [Verbose] > │ if unreachable!() { true } else { false } │
00:01:03 #671 [Verbose] > │ } │
00:01:03 #672 [Verbose] > │ pub fn get_IsUS8_2(this_: &MutCell<Spiral_eval::US8>, unitArg: │
00:01:03 #673 [Verbose] > │ ()) │
00:01:03 #674 [Verbose] > │ -> bool { │
00:01:03 #675 [Verbose] > │ if unreachable!() { true } else { false } │
00:01:03 #676 [Verbose] > │ } │
00:01:03 #677 [Verbose] > │ } │
00:01:03 #678 [Verbose] > │ impl core::fmt::Display for Spiral_eval::US8 { │
00:01:03 #679 [Verbose] > │ fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result │
00:01:03 #680 [Verbose] > │ { │
00:01:03 #681 [Verbose] > │ write!(f, "{}", core::any::type_name::<Self>()) │
00:01:03 #682 [Verbose] > │ } │
00:01:03 #683 [Verbose] > │ } │
00:01:03 #684 [Verbose] > │ #[derive(Clone, Debug, PartialEq, PartialOrd, Hash, Eq,)] │
00:01:03 #685 [Verbose] > │ pub enum US5 { │
00:01:03 #686 [Verbose] > │ US5_0(LrcPtr<Spiral_eval::UH1>), │
00:01:03 #687 [Verbose] > │ US5_1(Spiral_eval::US8), │
00:01:03 #688 [Verbose] > │ } │
00:01:03 #689 [Verbose] > │ impl Spiral_eval::US5 { │
00:01:03 #690 [Verbose] > │ pub fn get_IsUS5_0(this_: &MutCell<Spiral_eval::US5>, unitArg: │
00:01:03 #691 [Verbose] > │ ()) │
00:01:03 #692 [Verbose] > │ -> bool { │
00:01:03 #693 [Verbose] > │ if unreachable!() { true } else { false } │
00:01:03 #694 [Verbose] > │ } │
00:01:03 #695 [Verbose] > │ pub fn get_IsUS5_1(this_: &MutCell<Spiral_eval::US5>, unitArg: │
00:01:03 #696 [Verbose] > │ ()) │
00:01:03 #697 [Verbose] > │ -> bool { │
00:01:03 #698 [Verbose] > │ if unreachable!() { true } else { false } │
00:01:03 #699 [Verbose] > │ } │
00:01:03 #700 [Verbose] > │ } │
00:01:03 #701 [Verbose] > │ impl core::fmt::Display for Spiral_eval::US5 { │
00:01:03 #702 [Verbose] > │ fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result │
00:01:03 #703 [Verbose] > │ { │
00:01:03 #704 [Verbose] > │ write!(f, "{}", core::any::type_name::<Self>()) │
00:01:03 #705 [Verbose] > │ } │
00:01:03 #706 [Verbose] > │ } │
00:01:03 #707 [Verbose] > │ #[derive(Clone, Debug, PartialEq, PartialOrd, Hash, Eq,)] │
00:01:03 #708 [Verbose] > │ pub enum US4 { US4_0(Spiral_eval::US3), US4_1(Spiral_eval::US5), } │
00:01:03 #709 [Verbose] > │ impl Spiral_eval::US4 { │
00:01:03 #710 [Verbose] > │ pub fn get_IsUS4_0(this_: &MutCell<Spiral_eval::US4>, unitArg: │
00:01:03 #711 [Verbose] > │ ()) │
00:01:03 #712 [Verbose] > │ -> bool { │
00:01:03 #713 [Verbose] > │ if unreachable!() { true } else { false } │
00:01:03 #714 [Verbose] > │ } │
00:01:03 #715 [Verbose] > │ pub fn get_IsUS4_1(this_: &MutCell<Spiral_eval::US4>, unitArg: │
00:01:03 #716 [Verbose] > │ ()) │
00:01:03 #717 [Verbose] > │ -> bool { │
00:01:03 #718 [Verbose] > │ if unreachable!() { true } else { false } │
00:01:03 #719 [Verbose] > │ } │
00:01:03 #720 [Verbose] > │ } │
00:01:03 #721 [Verbose] > │ impl core::fmt::Display for Spiral_eval::US4 { │
00:01:03 #722 [Verbose] > │ fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result │
00:01:03 #723 [Verbose] > │ { │
00:01:03 #724 [Verbose] > │ write!(f, "{}", core::any::type_name::<Self>()) │
00:01:03 #725 [Verbose] > │ } │
00:01:03 #726 [Verbose] > │ } │
00:01:03 #727 [Verbose] > │ #[derive(Clone, Debug, PartialEq, PartialOrd, Hash, Eq,)] │
00:01:03 #728 [Verbose] > │ pub enum UH2 { │
00:01:03 #729 [Verbose] > │ UH2_0(LrcPtr<Spiral_eval::UH0>, string, Spiral_eval::US4, │
00:01:03 #730 [Verbose] > │ LrcPtr<Spiral_eval::UH2>), │
00:01:03 #731 [Verbose] > │ UH2_1, │
00:01:03 #732 [Verbose] > │ } │
00:01:03 #733 [Verbose] > │ impl Spiral_eval::UH2 { │
00:01:03 #734 [Verbose] > │ pub fn get_IsUH2_0(this_: LrcPtr<Spiral_eval::UH2>, unitArg: ()) │
00:01:03 #735 [Verbose] > │ -> bool { │
00:01:03 #736 [Verbose] > │ if let Spiral_eval::UH2::UH2_0(this__0_0, this__0_1, │
00:01:03 #737 [Verbose] > │ this__0_2, this__0_3) = │
00:01:03 #738 [Verbose] > │ this_.as_ref() { │
00:01:03 #739 [Verbose] > │ true │
00:01:03 #740 [Verbose] > │ } else { false } │
00:01:03 #741 [Verbose] > │ } │
00:01:03 #742 [Verbose] > │ pub fn get_IsUH2_1(this_: LrcPtr<Spiral_eval::UH2>, unitArg: ()) │
00:01:03 #743 [Verbose] > │ -> bool { │
00:01:03 #744 [Verbose] > │ if let Spiral_eval::UH2::UH2_1 = this_.as_ref() { │
00:01:03 #745 [Verbose] > │ true │
00:01:03 #746 [Verbose] > │ } else { false } │
00:01:03 #747 [Verbose] > │ } │
00:01:03 #748 [Verbose] > │ } │
00:01:03 #749 [Verbose] > │ impl core::fmt::Display for Spiral_eval::UH2 { │
00:01:03 #750 [Verbose] > │ fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result │
00:01:03 #751 [Verbose] > │ { │
00:01:03 #752 [Verbose] > │ write!(f, "{}", core::any::type_name::<Self>()) │
00:01:03 #753 [Verbose] > │ } │
00:01:03 #754 [Verbose] > │ } │
00:01:03 #755 [Verbose] > │ pub fn method0() { │
00:01:03 #756 [Verbose] > │ let v17: std::string::String = │
00:01:03 #757 [Verbose] > │ format!("{:#?}", │
00:01:03 #758 [Verbose] > │ LrcPtr::new(Spiral_eval::UH2::UH2_0(LrcPtr::new(Spiral_eval::UH0::UH0_1), │
00:01:03 #759 [Verbose] > │ │
00:01:03 #760 [Verbose] > │ string("01"), │
00:01:03 #761 [Verbose] > │ │
00:01:03 #762 [Verbose] > │ Spiral_eval::US4::US4_0(Spiral_eval::US3::US3_0), │
00:01:03 #763 [Verbose] > │ │
00:01:03 #764 [Verbose] > │ LrcPtr::new(Spiral_eval::UH2::UH2_0(LrcPtr::new(Spiral_eval::UH0::UH0_1), │
00:01:03 #765 [Verbose] > │ │
00:01:03 #766 [Verbose] > │ string("02"), │
00:01:03 #767 [Verbose] > │ │
00:01:03 #768 [Verbose] > │ Spiral_eval::US4::US4_0(Spiral_eval::US3::US3_0), │
00:01:03 #769 [Verbose] > │ │
00:01:03 #770 [Verbose] > │ LrcPtr::new(Spiral_eval::UH2::UH2_0(LrcPtr::new(Spiral_eval::UH0::UH0_1), │
00:01:03 #771 [Verbose] > │ │
00:01:03 #772 [Verbose] > │ string("03"), │
00:01:03 #773 [Verbose] > │ │
00:01:03 #774 [Verbose] > │ Spiral_eval::US4::US4_0(Spiral_eval::US3::US3_0), │
00:01:03 #775 [Verbose] > │ │
00:01:03 #776 [Verbose] > │ LrcPtr::new(Spiral_eval::UH2::UH2_1)))))))); │
00:01:03 #777 [Verbose] > │ printfn!("{0}", v17); │
00:01:03 #778 [Verbose] > │ () │
00:01:03 #779 [Verbose] > │ } │
00:01:03 #780 [Verbose] > │ on_startup!(Spiral_eval::method0()); │
00:01:03 #781 [Verbose] > │ } │
00:01:03 #782 [Verbose] > │ } │
00:01:03 #783 [Verbose] > │ pub use module_ccfa04bf::*; │
00:01:03 #784 [Verbose] > │ │
00:01:03 #785 [Verbose] > │ │
00:01:03 #786 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:03 #787 [Verbose] >
00:01:03 #788 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:03 #789 [Verbose] > // // test
00:01:03 #790 [Verbose] > // // rust=
00:01:03 #791 [Verbose] >
00:01:03 #792 [Verbose] > get_tasks ()
00:01:03 #793 [Verbose] > |> listm'.try_item 0i32
00:01:03 #794 [Verbose] > |> fun (Some task) => task.task.name
00:01:03 #795 [Verbose] > |> _assert_eq (task_name "01")
00:01:03 #796 [Verbose] > Building /tmp/!dotnet-repl/20240320-1225-0910-1068-19ba83093d5d/main.spi
00:01:05 #797 [Verbose] >
00:01:05 #798 [Verbose] > ╭─[ 2.48s - return value ]─────────────────────────────────────────────────────╮
00:01:05 #799 [Verbose] > │ .rs output: │
00:01:05 #800 [Verbose] > │ │
00:01:05 #801 [Verbose] > │ │
00:01:05 #802 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:05 #803 [Verbose] >
00:01:05 #804 [Verbose] > ╭─[ 2.48s - stdout ]───────────────────────────────────────────────────────────╮
00:01:05 #805 [Verbose] > │ │
00:01:05 #806 [Verbose] > │ .fsx: │
00:01:05 #807 [Verbose] > │ let rec method0 () : unit = │
00:01:05 #808 [Verbose] > │ let v3 : string = "01" │
00:01:05 #809 [Verbose] > │ let v4 : string = $"__expect / actual: %A{v3} / expected: %A{v3}" │
00:01:05 #810 [Verbose] > │ () │
00:01:05 #811 [Verbose] > │ method0() │
00:01:05 #812 [Verbose] > │ │
00:01:05 #813 [Verbose] > │ .rs: │
00:01:05 #814 [Verbose] > │ #![allow(dead_code,)] │
00:01:05 #815 [Verbose] > │ #![allow(non_camel_case_types,)] │
00:01:05 #816 [Verbose] > │ #![allow(non_snake_case,)] │
00:01:05 #817 [Verbose] > │ #![allow(non_upper_case_globals,)] │
00:01:05 #818 [Verbose] > │ #![allow(unreachable_code,)] │
00:01:05 #819 [Verbose] > │ #![allow(unused_attributes,)] │
00:01:05 #820 [Verbose] > │ #![allow(unused_imports,)] │
00:01:05 #821 [Verbose] > │ #![allow(unused_macros,)] │
00:01:05 #822 [Verbose] > │ #![allow(unused_parens,)] │
00:01:05 #823 [Verbose] > │ #![allow(unused_variables,)] │
00:01:05 #824 [Verbose] > │ mod module_ccfa04bf { │
00:01:05 #825 [Verbose] > │ pub mod Spiral_eval { │
00:01:05 #826 [Verbose] > │ use super::*; │
00:01:05 #827 [Verbose] > │ use fable_library_rust::Native_::on_startup; │
00:01:05 #828 [Verbose] > │ use fable_library_rust::String_::sprintf; │
00:01:05 #829 [Verbose] > │ use fable_library_rust::String_::string; │
00:01:05 #830 [Verbose] > │ pub fn method0() { │
00:01:05 #831 [Verbose] > │ let v4: string = │
00:01:05 #832 [Verbose] > │ sprintf!("__expect / actual: {:?} / expected: {:?}", │
00:01:05 #833 [Verbose] > │ string("01"), string("01")); │
00:01:05 #834 [Verbose] > │ () │
00:01:05 #835 [Verbose] > │ } │
00:01:05 #836 [Verbose] > │ on_startup!(Spiral_eval::method0()); │
00:01:05 #837 [Verbose] > │ } │
00:01:05 #838 [Verbose] > │ } │
00:01:05 #839 [Verbose] > │ pub use module_ccfa04bf::*; │
00:01:05 #840 [Verbose] > │ │
00:01:05 #841 [Verbose] > │ │
00:01:05 #842 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:05 #843 [Verbose] >
00:01:05 #844 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:05 #845 [Verbose] > // // test
00:01:05 #846 [Verbose] >
00:01:05 #847 [Verbose] > ()
00:01:05 #848 [Verbose] > Building /tmp/!dotnet-repl/20240320-1225-1158-5873-557442e5dd67/main.spi
00:01:06 #849 [Verbose] >
00:01:06 #850 [Verbose] > ╭─[ 270.87ms - stdout ]────────────────────────────────────────────────────────╮
00:01:06 #851 [Verbose] > │ let rec method0 () : unit = │
00:01:06 #852 [Verbose] > │ () │
00:01:06 #853 [Verbose] > │ method0() │
00:01:06 #854 [Verbose] > │ │
00:01:06 #855 [Verbose] > │ │
00:01:06 #856 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:06 #857 [Verbose] > [NbConvertApp] Converting notebook Tasks.dib.ipynb to html
00:01:06 #858 [Verbose] > /opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:01:06 #859 [Verbose] > validate(nb)
00:01:07 #860 [Verbose] > /opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:01:07 #861 [Verbose] > return _pygments_highlight(
00:01:07 #862 [Verbose] > [NbConvertApp] Writing 313705 bytes to Tasks.dib.html
00:01:07 #863 [Debug] executeAsync / exitCode: 0 / output.Length: 72087
00:01:07 #864 [Debug] main / executeCommand / exitCode: 0
00:00:00 #1 [Debug] writeDibCode / output: Spi / path: Tasks.dib
00:00:00 #2 [Debug] parseDibCode / output: Spi / file: Tasks.dib
In [ ]:
{ . "$ScriptDir/../apps/spiral/temp/test/build.ps1" } | Invoke-Block
── pwsh ──────────────────────────────────────────────────────────────────────── . ../../../../scripts/nbs_header.ps1 . ../../../../scripts/core.ps1 ── pwsh ──────────────────────────────────────────────────────────────────────── { . ../../../../apps/spiral/dist/Supervisor$(GetExecutableSuffix) --execute-command "pwsh -c `"../../../../scripts/invoke-dib.ps1 test.dib`"" } | Invoke-Block -Retries 5 ╭─[ 11.50s - stdout ]──────────────────────────────────────────────────────────╮ │ 00:00:00 #1 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:00 #2 [Debug] executeAsync / options: { Command = │ │ "dotnet "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The │ │ Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" │ │ --port 13805 --default-int i32 --default-float f64" │ │ WorkingDirectory = None │ │ CancellationToken = Some System.Threading.CancellationToken │ │ OnLine = Some <fun:main@464-1020> } │ │ 00:00:00 #3 [Verbose] > pwd: │ │ /home/runner/work/polyglot/polyglot/apps/spiral/temp/test │ │ 00:00:00 #4 [Verbose] > dll_path: │ │ /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral │ │ Language 2/artifacts/bin/The Spiral Language 2/release │ │ 00:00:00 #5 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:00 #6 [Verbose] waitForPortAccess / port: 13805 / retry: 0 │ │ 00:00:00 #7 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:00 #8 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:00 #9 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:00 #10 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:00 #11 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:00 #12 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:00 #13 [Verbose] > Starting the Spiral Server. It is bound to: │ │ http://localhost:13805 │ │ 00:00:00 #14 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:00 #15 [Debug] sendJson / port: 13805 / json: {"Ping":true} / │ │ result.Length: │ │ 00:00:00 #16 [Verbose] awaitCompiler / Ping / result: Some(null) / port: │ │ 13805 / retry: 0 │ │ 00:00:00 #17 [Verbose] > Server bound to: http://localhost:13805 │ │ 00:00:00 #18 [Debug] executeAsync / options: { Command = "pwsh -c │ │ "../../../../scripts/invoke-dib.ps1 test.dib"" │ │ WorkingDirectory = None │ │ CancellationToken = Some System.Threading.CancellationToken │ │ OnLine = None } │ │ 00:00:02 #19 [Verbose] > │ │ 00:00:02 #20 [Verbose] > ── markdown │ │ ──────────────────────────────────────────────────────────────────── │ │ 00:00:02 #21 [Verbose] > 38;5;2m│ │ 38;5;103m╭────────────────────────────────────────────────────────────────── │ │ ────────────╮ │ │ 00:00:02 #22 [Verbose] > │ # test (Polyglot) │ │ │ │ │ 00:00:02 #23 [Verbose] > 38;5;2m│ │ 38;5;103m╰────────────────────────────────────────────────────────────────── │ │ ────────────╯ │ │ 00:00:02 #24 [Verbose] > │ │ 00:00:02 #25 [Verbose] > ── spiral │ │ ────────────────────────────────────────────────────────────────────── │ │ 00:00:02 #26 [Verbose] > // // test │ │ 00:00:02 #27 [Verbose] > │ │ 00:00:02 #28 [Verbose] > open testing │ │ 00:00:04 #29 [Verbose] > Building │ │ /tmp/!dotnet-repl/20240320-1225-1974-7412-7fcbc4036a35/main.spi │ │ 00:00:06 #30 [Verbose] > │ │ 00:00:06 #31 [Verbose] > ╭─[ 3.65s - stdout │ │ ]───────────────────────────────────────────────────────────╮ │ │ 00:00:06 #32 [Verbose] > │ () │ │ │ │ │ 00:00:06 #33 [Verbose] > │ │ │ │ │ │ │ │ 00:00:06 #34 [Verbose] > │ │ │ │ │ │ │ │ 00:00:06 #35 [Verbose] > 38;5;2m│ │ 38;5;2m╰──────────────────────────────────────────────────────────────────── │ │ ──────────╯ │ │ 00:00:06 #36 [Verbose] > │ │ 00:00:06 #37 [Verbose] > ── spiral │ │ ────────────────────────────────────────────────────────────────────── │ │ 00:00:06 #38 [Verbose] > nominal i = () │ │ 00:00:06 #39 [Verbose] > nominal e = () │ │ 00:00:06 #40 [Verbose] > nominal s = () │ │ 00:00:06 #41 [Verbose] > nominal n = () │ │ 00:00:06 #42 [Verbose] > nominal t = () │ │ 00:00:06 #43 [Verbose] > nominal f = () │ │ 00:00:06 #44 [Verbose] > nominal j = () │ │ 00:00:06 #45 [Verbose] > nominal p = () │ │ 00:00:06 #46 [Verbose] > │ │ 00:00:06 #47 [Verbose] > union sensing = │ │ 00:00:06 #48 [Verbose] > | Si : s * i │ │ 00:00:06 #49 [Verbose] > | Se : s * e │ │ 00:00:06 #50 [Verbose] > │ │ 00:00:06 #51 [Verbose] > union intuition = │ │ 00:00:06 #52 [Verbose] > | Ni : n * i │ │ 00:00:06 #53 [Verbose] > | Ne : n * e │ │ 00:00:06 #54 [Verbose] > │ │ 00:00:06 #55 [Verbose] > union thinking = │ │ 00:00:06 #56 [Verbose] > | Ti : t * i │ │ 00:00:06 #57 [Verbose] > | Te : t * e │ │ 00:00:06 #58 [Verbose] > │ │ 00:00:06 #59 [Verbose] > union feeling = │ │ 00:00:06 #60 [Verbose] > | Fi : f * i │ │ 00:00:06 #61 [Verbose] > | Fe : f * e │ │ 00:00:06 #62 [Verbose] > │ │ 00:00:06 #63 [Verbose] > union function_stack = │ │ 00:00:06 #64 [Verbose] > | FS : sensing * intuition * thinking * feeling │ │ 00:00:06 #65 [Verbose] > │ │ 00:00:06 #66 [Verbose] > union personality_type = │ │ 00:00:06 #67 [Verbose] > | ISTJ : i * s * t * j * function_stack │ │ 00:00:06 #68 [Verbose] > | ISFJ : i * s * f * j * function_stack │ │ 00:00:06 #69 [Verbose] > | INFJ : i * n * f * j * function_stack │ │ 00:00:06 #70 [Verbose] > | INTJ : i * n * t * j * function_stack │ │ 00:00:06 #71 [Verbose] > | ISTP : i * s * t * p * function_stack │ │ 00:00:06 #72 [Verbose] > | ISFP : i * s * f * p * function_stack │ │ 00:00:06 #73 [Verbose] > | INFP : i * n * f * p * function_stack │ │ 00:00:06 #74 [Verbose] > | INTP : i * n * t * p * function_stack │ │ 00:00:06 #75 [Verbose] > | ESTP : e * s * t * p * function_stack │ │ 00:00:06 #76 [Verbose] > | ESFP : e * s * f * p * function_stack │ │ 00:00:06 #77 [Verbose] > | ENFP : e * n * f * p * function_stack │ │ 00:00:06 #78 [Verbose] > | ENTP : e * n * t * p * function_stack │ │ 00:00:06 #79 [Verbose] > | ESTJ : e * s * t * j * function_stack │ │ 00:00:06 #80 [Verbose] > | ESFJ : e * s * f * j * function_stack │ │ 00:00:06 #81 [Verbose] > | ENFJ : e * n * f * j * function_stack │ │ 00:00:06 #82 [Verbose] > | ENTJ : e * n * t * j * function_stack │ │ 00:00:06 #83 [Verbose] > │ │ 00:00:06 #84 [Verbose] > │ │ 00:00:06 #85 [Verbose] > inl main () = │ │ 00:00:06 #86 [Verbose] > inl istj_stack = FS ((Si (s, i)), Ne (n, e), │ │ (Te (t, e)), (Fi (f, i))) │ │ 00:00:06 #87 [Verbose] > inl istj_personality = ISTJ (i, s, t, j, │ │ istj_stack) │ │ 00:00:06 #88 [Verbose] > // inl isfj_stack = FS ((Si (s, i)), Ne (n, e), │ │ (Fe (f, e)), (Ti (t, i))) │ │ 00:00:06 #89 [Verbose] > // inl isfj_personality = ISFJ (i, s, f, j, │ │ isfj_stack) │ │ 00:00:06 #90 [Verbose] > │ │ 00:00:06 #91 [Verbose] > ;[[ │ │ 00:00:06 #92 [Verbose] > istj_personality │ │ 00:00:06 #93 [Verbose] > ]] │ │ 00:00:06 #94 [Verbose] > |> fun x => $'$"%A{!x}"' : string │ │ 00:00:06 #95 [Verbose] > |> console.write_line │ │ 00:00:06 #96 [Verbose] > │ │ 00:00:06 #97 [Verbose] > inl main () = │ │ 00:00:06 #98 [Verbose] > $"!main ()" : () │ │ 00:00:06 #99 [Verbose] > Building │ │ /tmp/!dotnet-repl/20240320-1225-2206-0674-0199795eebb4/main.spi │ │ 00:00:07 #100 [Verbose] > │ │ 00:00:07 #101 [Verbose] > ╭─[ 1.19s - stdout │ │ ]───────────────────────────────────────────────────────────╮ │ │ 00:00:07 #102 [Verbose] > │ type [<Struct>] US0 = │ │ │ │ │ 00:00:07 #103 [Verbose] > │ | US0_0 │ │ │ │ │ 00:00:07 #104 [Verbose] > │ | US0_1 │ │ │ │ │ 00:00:07 #105 [Verbose] > │ and [<Struct>] US1 = │ │ │ │ │ 00:00:07 #106 [Verbose] > │ | US1_0 │ │ │ │ │ 00:00:07 #107 [Verbose] > │ | US1_1 │ │ │ │ │ 00:00:07 #108 [Verbose] > │ and [<Struct>] US2 = │ │ │ │ │ 00:00:07 #109 [Verbose] > │ | US2_0 │ │ │ │ │ 00:00:07 #110 [Verbose] > │ | US2_1 │ │ │ │ │ 00:00:07 #111 [Verbose] > │ and [<Struct>] US3 = │ │ │ │ │ 00:00:07 #112 [Verbose] > │ | US3_0 │ │ │ │ │ 00:00:07 #113 [Verbose] > │ | US3_1 │ │ │ │ │ 00:00:07 #114 [Verbose] > │ and [<Struct>] US4 = │ │ │ │ │ 00:00:07 #115 [Verbose] > │ | US4_0 of f0_0 : US0 * f0_1 : US1 │ │ * f0_2 : US2 * f0_3 : US3 │ │ │ 00:00:07 #116 [Verbose] > │ and [<Struct>] US5 = │ │ │ │ │ 00:00:07 #117 [Verbose] > │ | US5_0 of f0_0 : US4 │ │ │ │ │ 00:00:07 #118 [Verbose] > │ | US5_1 of f1_0 : US4 │ │ │ │ │ 00:00:07 #119 [Verbose] > │ | US5_2 of f2_0 : US4 │ │ │ │ │ 00:00:07 #120 [Verbose] > │ | US5_3 of f3_0 : US4 │ │ │ │ │ 00:00:07 #121 [Verbose] > │ | US5_4 of f4_0 : US4 │ │ │ │ │ 00:00:07 #122 [Verbose] > │ | US5_5 of f5_0 : US4 │ │ │ │ │ 00:00:07 #123 [Verbose] > │ | US5_6 of f6_0 : US4 │ │ │ │ │ 00:00:07 #124 [Verbose] > │ | US5_7 of f7_0 : US4 │ │ │ │ │ 00:00:07 #125 [Verbose] > │ | US5_8 of f8_0 : US4 │ │ │ │ │ 00:00:07 #126 [Verbose] > │ | US5_9 of f9_0 : US4 │ │ │ │ │ 00:00:07 #127 [Verbose] > │ | US5_10 of f10_0 : US4 │ │ │ │ │ 00:00:07 #128 [Verbose] > │ | US5_11 of f11_0 : US4 │ │ │ │ │ 00:00:07 #129 [Verbose] > │ | US5_12 of f12_0 : US4 │ │ │ │ │ 00:00:07 #130 [Verbose] > │ | US5_13 of f13_0 : US4 │ │ │ │ │ 00:00:07 #131 [Verbose] > │ | US5_14 of f14_0 : US4 │ │ │ │ │ 00:00:07 #132 [Verbose] > │ | US5_15 of f15_0 : US4 │ │ │ │ │ 00:00:07 #133 [Verbose] > │ let rec method0 (v0 : (US5 [])) : (US5 │ │ []) = │ │ │ 00:00:07 #134 [Verbose] > │ v0 │ │ │ │ │ 00:00:07 #135 [Verbose] > │ and closure0 () () : unit = │ │ │ │ │ 00:00:07 #136 [Verbose] > │ let v0 : US0 = US0_1 │ │ │ │ │ 00:00:07 #137 [Verbose] > │ let v1 : US1 = US1_0 │ │ │ │ │ 00:00:07 #138 [Verbose] > │ let v2 : US2 = US2_0 │ │ │ │ │ 00:00:07 #139 [Verbose] > │ let v3 : US3 = US3_1 │ │ │ │ │ 00:00:07 #140 [Verbose] > │ let v4 : US4 = US4_0(v0, v1, v2, │ │ v3) │ │ │ 00:00:07 #141 [Verbose] > │ let v5 : US5 = US5_14(v4) │ │ │ │ │ 00:00:07 #142 [Verbose] > │ let v6 : (US5 []) = [|v5|] │ │ │ │ │ 00:00:07 #143 [Verbose] > │ let v7 : (US5 []) = method0(v6) │ │ │ │ │ 00:00:07 #144 [Verbose] > │ let v8 : string = $"%A{v7}" │ │ │ │ │ 00:00:07 #145 [Verbose] > │ System.Console.WriteLine v8 │ │ │ │ │ 00:00:07 #146 [Verbose] > │ () │ │ │ │ │ 00:00:07 #147 [Verbose] > │ let v0 : (unit -> unit) = closure0() │ │ │ │ │ 00:00:07 #148 [Verbose] > │ v0 () │ │ │ │ │ 00:00:07 #149 [Verbose] > │ () │ │ │ │ │ 00:00:07 #150 [Verbose] > │ │ │ │ │ │ │ │ 00:00:07 #151 [Verbose] > │ [|US5_14 (US4_0 (US0_1, US1_0, US2_0, │ │ US3_1))|] │ │ │ 00:00:07 #152 [Verbose] > │ │ │ │ │ │ │ │ 00:00:07 #153 [Verbose] > 38;5;2m│ │ 38;5;2m╰──────────────────────────────────────────────────────────────────── │ │ ──────────╯ │ │ 00:00:07 #154 [Verbose] > │ │ 00:00:07 #155 [Verbose] > ── fsharp │ │ ────────────────────────────────────────────────────────────────────── │ │ 00:00:07 #156 [Verbose] > type PhonologicalFeature = │ │ 00:00:07 #157 [Verbose] > | VowelFeature of │ │ 00:00:07 #158 [Verbose] > height: Height │ │ 00:00:07 #159 [Verbose] > * backness: Backness │ │ 00:00:07 #160 [Verbose] > * roundedness: Roundedness │ │ 00:00:07 #161 [Verbose] > * tone: Option<Tone> │ │ 00:00:07 #162 [Verbose] > * stress: Option<Stress> │ │ 00:00:07 #163 [Verbose] > * length: Option<Length> │ │ 00:00:07 #164 [Verbose] > | ConsonantFeature of │ │ 00:00:07 #165 [Verbose] > place: PlaceOfArticulation │ │ 00:00:07 #166 [Verbose] > * manner: MannerOfArticulation │ │ 00:00:07 #167 [Verbose] > * voicing: Voicing │ │ 00:00:07 #168 [Verbose] > * length: Option<Length> │ │ 00:00:07 #169 [Verbose] > | VowelHarmonyFeature │ │ 00:00:07 #170 [Verbose] > | PitchAccentFeature │ │ 00:00:07 #171 [Verbose] > │ │ 00:00:07 #172 [Verbose] > and Stress = Primary | Secondary │ │ 00:00:07 #173 [Verbose] > and Length = Long | Short | HalfLong │ │ 00:00:07 #174 [Verbose] > │ │ 00:00:07 #175 [Verbose] > and Height = │ │ 00:00:07 #176 [Verbose] > | High | NearHigh | HighMid │ │ 00:00:07 #177 [Verbose] > | Mid | LowMid | NearLow │ │ 00:00:07 #178 [Verbose] > | Low │ │ 00:00:07 #179 [Verbose] > │ │ 00:00:07 #180 [Verbose] > and Backness = Front | Central | Back │ │ 00:00:07 #181 [Verbose] > │ │ 00:00:07 #182 [Verbose] > and Roundedness = Rounded | Unrounded │ │ 00:00:07 #183 [Verbose] > │ │ 00:00:07 #184 [Verbose] > and PlaceOfArticulation = │ │ 00:00:07 #185 [Verbose] > | Bilabial | Labiodental | Dental │ │ 00:00:07 #186 [Verbose] > | Alveolar | Postalveolar | Retroflex │ │ 00:00:07 #187 [Verbose] > | Palatal | Velar | Uvular │ │ 00:00:07 #188 [Verbose] > | Pharyngeal | Epiglottal | Glottal │ │ 00:00:07 #189 [Verbose] > │ │ 00:00:07 #190 [Verbose] > and MannerOfArticulation = │ │ 00:00:07 #191 [Verbose] > | Plosive | Nasal | Trill │ │ 00:00:07 #192 [Verbose] > | TapOrFlap | Fricative | LateralFricative │ │ 00:00:07 #193 [Verbose] > | Approximant | LateralApproximant │ │ 00:00:07 #194 [Verbose] > │ │ 00:00:07 #195 [Verbose] > and Voicing = Voiced | Voiceless │ │ 00:00:07 #196 [Verbose] > │ │ 00:00:07 #197 [Verbose] > and SecondaryArticulation = │ │ 00:00:07 #198 [Verbose] > | Labialization | Palatalization | │ │ Velarization │ │ 00:00:07 #199 [Verbose] > | Pharyngealization | Aspiration │ │ 00:00:07 #200 [Verbose] > │ │ 00:00:07 #201 [Verbose] > and Tone = │ │ 00:00:07 #202 [Verbose] > | LevelTone of int │ │ 00:00:07 #203 [Verbose] > | ContourTone of int list │ │ 00:00:07 #204 [Verbose] > │ │ 00:00:07 #205 [Verbose] > and MorphologicalFeature = │ │ 00:00:07 #206 [Verbose] > | RootFeature of string │ │ 00:00:07 #207 [Verbose] > | AffixFeature of AffixType * string │ │ 00:00:07 #208 [Verbose] > | IncorporationFeature of string * │ │ MorphologicalFeature │ │ 00:00:07 #209 [Verbose] > | NonConcatenativePattern of string * string │ │ 00:00:07 #210 [Verbose] > | AgglutinativeAffixFeature of │ │ AgglutinativeAffixType * string │ │ 00:00:07 #211 [Verbose] > | HonorificFeature of HonorificType * string │ │ 00:00:07 #212 [Verbose] > │ │ 00:00:07 #213 [Verbose] > and AgglutinativeAffixType = Suffix | Prefix │ │ 00:00:07 #214 [Verbose] > │ │ 00:00:07 #215 [Verbose] > and HonorificType = VerbHonorific | NounHonorific │ │ 00:00:07 #216 [Verbose] > │ │ 00:00:07 #217 [Verbose] > and AffixType = │ │ 00:00:07 #218 [Verbose] > | Prefix | Suffix | Infix │ │ 00:00:07 #219 [Verbose] > | Circumfix │ │ 00:00:07 #220 [Verbose] > │ │ 00:00:07 #221 [Verbose] > type SyntacticFeature = │ │ 00:00:07 #222 [Verbose] > | WordFeature of MorphologicalFeature list * │ │ LexicalCategory │ │ 00:00:07 #223 [Verbose] > | PhraseFeature of PhraseType * │ │ SyntacticFeature list │ │ 00:00:07 #224 [Verbose] > | GrammaticalRelation of │ │ GrammaticalRelationType * SyntacticFeature list │ │ 00:00:07 #225 [Verbose] > | SOVOrderFeature │ │ 00:00:07 #226 [Verbose] > | TopicCommentFeature │ │ 00:00:07 #227 [Verbose] > │ │ 00:00:07 #228 [Verbose] > and GrammaticalRelationType = │ │ 00:00:07 #229 [Verbose] > | Ergative | Absolutive | Nominative │ │ 00:00:07 #230 [Verbose] > | Accusative │ │ 00:00:07 #231 [Verbose] > │ │ 00:00:07 #232 [Verbose] > and LexicalCategory = │ │ 00:00:07 #233 [Verbose] > | Noun | Verb | Adjective │ │ 00:00:07 #234 [Verbose] > | Adverb | Pronoun | Preposition │ │ 00:00:07 #235 [Verbose] > | Conjunction | Determiner | Interjection │ │ 00:00:07 #236 [Verbose] > │ │ 00:00:07 #237 [Verbose] > and PhraseType = │ │ 00:00:07 #238 [Verbose] > | NP | VP | AP │ │ 00:00:07 #239 [Verbose] > | PP | CP │ │ 00:00:07 #240 [Verbose] > │ │ 00:00:07 #241 [Verbose] > and SemanticFeature = │ │ 00:00:07 #242 [Verbose] > | Meaning of string │ │ 00:00:07 #243 [Verbose] > | SemanticRole of SemanticRoleType * │ │ SemanticFeature │ │ 00:00:07 #244 [Verbose] > │ │ 00:00:07 #245 [Verbose] > and SemanticRoleType = │ │ 00:00:07 #246 [Verbose] > | Agent | Patient | Instrument │ │ 00:00:07 #247 [Verbose] > | Location | Time | Cause │ │ 00:00:07 #248 [Verbose] > │ │ 00:00:07 #249 [Verbose] > and PragmaticFeature = │ │ 00:00:07 #250 [Verbose] > | UseContext of string │ │ 00:00:07 #251 [Verbose] > | PolitenessLevel of Politeness │ │ 00:00:07 #252 [Verbose] > | SpeechAct of SpeechActType │ │ 00:00:07 #253 [Verbose] > | SpeechLevel of SpeechLevelType │ │ 00:00:07 #254 [Verbose] > │ │ 00:00:07 #255 [Verbose] > and Politeness = Formal | Informal | Neutral │ │ 00:00:07 #256 [Verbose] > │ │ 00:00:07 #257 [Verbose] > and SpeechActType = │ │ 00:00:07 #258 [Verbose] > | Assertive | Directive | Commissive │ │ 00:00:07 #259 [Verbose] > | Expressive | Declarative │ │ 00:00:07 #260 [Verbose] > │ │ 00:00:07 #261 [Verbose] > and SpeechLevelType = │ │ 00:00:07 #262 [Verbose] > | FormalHigh | FormalLow | InformalHigh │ │ 00:00:07 #263 [Verbose] > | InformalLow | Neutral │ │ 00:00:07 #264 [Verbose] > │ │ 00:00:07 #265 [Verbose] > type LinguisticFeature = │ │ 00:00:07 #266 [Verbose] > | Phonological of PhonologicalFeature │ │ 00:00:07 #267 [Verbose] > | Morphological of MorphologicalFeature │ │ 00:00:07 #268 [Verbose] > | Syntactic of SyntacticFeature │ │ 00:00:07 #269 [Verbose] > | Semantic of SemanticFeature │ │ 00:00:07 #270 [Verbose] > | Pragmatic of PragmaticFeature │ │ 00:00:07 #271 [Verbose] > │ │ 00:00:07 #272 [Verbose] > type LanguageConstruct = │ │ 00:00:07 #273 [Verbose] > | LanguageElement of LinguisticFeature │ │ 00:00:07 #274 [Verbose] > | LanguageStructure of LanguageConstruct list │ │ 00:00:07 #275 [Verbose] > | TranslationElement of TranslationFeature │ │ 00:00:07 #276 [Verbose] > │ │ 00:00:07 #277 [Verbose] > and TranslationFeature = │ │ 00:00:07 #278 [Verbose] > | LinkedPhonological of PhonologicalFeature * │ │ PhonologicalFeature │ │ 00:00:07 #279 [Verbose] > | LinkedMorphological of MorphologicalFeature │ │ * MorphologicalFeature │ │ 00:00:07 #280 [Verbose] > | LinkedSyntactic of SyntacticFeature * │ │ SyntacticFeature │ │ 00:00:07 #281 [Verbose] > | LinkedSemantic of SemanticFeature * │ │ SemanticFeature │ │ 00:00:07 #282 [Verbose] > │ │ 00:00:07 #283 [Verbose] > type Discourse = DiscourseUnit of │ │ LanguageConstruct list │ │ 00:00:07 #284 [Verbose] > │ │ 00:00:07 #285 [Verbose] > type LanguageModel = │ │ 00:00:07 #286 [Verbose] > | Model of discourse: Discourse │ │ 00:00:07 #287 [Verbose] > │ │ 00:00:07 #288 [Verbose] > ── fsharp - import │ │ ───────────────────────────────────────────────────────────── │ │ 00:00:07 #289 [Verbose] > #r │ │ 00:00:07 #290 [Verbose] > │ │ "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft │ │ .Asp │ │ 00:00:07 #291 [Verbose] > NetCore.Html.Abstractions.dll" │ │ 00:00:07 #292 [Verbose] > #r │ │ 00:00:07 #293 [Verbose] > │ │ "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft │ │ .Dot │ │ 00:00:07 #294 [Verbose] > Net.Interactive.dll" │ │ 00:00:07 #295 [Verbose] > #r │ │ 00:00:07 #296 [Verbose] > │ │ "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft │ │ .Dot │ │ 00:00:07 #297 [Verbose] > Net.Interactive.FSharp.dll" │ │ 00:00:07 #298 [Verbose] > #r │ │ 00:00:07 #299 [Verbose] > │ │ "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft │ │ .Dot │ │ 00:00:07 #300 [Verbose] > Net.Interactive.Formatting.dll" │ │ 00:00:07 #301 [Verbose] > open System │ │ 00:00:07 #302 [Verbose] > open System.IO │ │ 00:00:07 #303 [Verbose] > open System.Text │ │ 00:00:07 #304 [Verbose] > open Microsoft.DotNet.Interactive.Formatting │ │ 00:00:08 #305 [Verbose] > │ │ 00:00:08 #306 [Verbose] > ── fsharp - import │ │ ───────────────────────────────────────────────────────────── │ │ 00:00:08 #307 [Verbose] > #r │ │ 00:00:08 #308 [Verbose] > │ │ "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft │ │ .Dot │ │ 00:00:08 #309 [Verbose] > Net.Interactive.FSharp.dll" │ │ 00:00:08 #310 [Verbose] > open │ │ Microsoft.DotNet.Interactive.FSharp.FSharpKernelHelpers │ │ 00:00:08 #311 [Verbose] > #r │ │ 00:00:08 #312 [Verbose] > │ │ "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft │ │ .Dot │ │ 00:00:08 #313 [Verbose] > Net.Interactive.dll" │ │ 00:00:08 #314 [Verbose] > open type Microsoft.DotNet.Interactive.Kernel │ │ 00:00:08 #315 [Verbose] > │ │ 00:00:08 #316 [Verbose] > ── fsharp - import │ │ ───────────────────────────────────────────────────────────── │ │ 00:00:08 #317 [Verbose] > type PhonologicalFeature = │ │ 00:00:08 #318 [Verbose] > | VowelFeature of │ │ 00:00:08 #319 [Verbose] > height: Height │ │ 00:00:08 #320 [Verbose] > * backness: Backness │ │ 00:00:08 #321 [Verbose] > * roundedness: Roundedness │ │ 00:00:08 #322 [Verbose] > * tone: Option<Tone> │ │ 00:00:08 #323 [Verbose] > * stress: Option<Stress> │ │ 00:00:08 #324 [Verbose] > * length: Option<Length> │ │ 00:00:08 #325 [Verbose] > | ConsonantFeature of │ │ 00:00:08 #326 [Verbose] > place: PlaceOfArticulation │ │ 00:00:08 #327 [Verbose] > * manner: MannerOfArticulation │ │ 00:00:08 #328 [Verbose] > * voicing: Voicing │ │ 00:00:08 #329 [Verbose] > * length: Option<Length> │ │ 00:00:08 #330 [Verbose] > | VowelHarmonyFeature │ │ 00:00:08 #331 [Verbose] > | PitchAccentFeature │ │ 00:00:08 #332 [Verbose] > │ │ 00:00:08 #333 [Verbose] > and Stress = Primary | Secondary │ │ 00:00:08 #334 [Verbose] > and Length = Long | Short | HalfLong │ │ 00:00:08 #335 [Verbose] > │ │ 00:00:08 #336 [Verbose] > and Height = │ │ 00:00:08 #337 [Verbose] > | High | NearHigh | HighMid │ │ 00:00:08 #338 [Verbose] > | Mid | LowMid | NearLow │ │ 00:00:08 #339 [Verbose] > | Low │ │ 00:00:08 #340 [Verbose] > │ │ 00:00:08 #341 [Verbose] > and Backness = Front | Central | Back │ │ 00:00:08 #342 [Verbose] > │ │ 00:00:08 #343 [Verbose] > and Roundedness = Rounded | Unrounded │ │ 00:00:08 #344 [Verbose] > │ │ 00:00:08 #345 [Verbose] > and PlaceOfArticulation = │ │ 00:00:08 #346 [Verbose] > | Bilabial | Labiodental | Dental │ │ 00:00:08 #347 [Verbose] > | Alv... │ │ 00:00:09 #348 [Verbose] > │ │ 00:00:09 #349 [Verbose] > ── fsharp │ │ ────────────────────────────────────────────────────────────────────── │ │ 00:00:09 #350 [Verbose] > let testEnglish = │ │ 00:00:09 #351 [Verbose] > Model( │ │ 00:00:09 #352 [Verbose] > DiscourseUnit [[ │ │ 00:00:09 #353 [Verbose] > LanguageElement (Phonological │ │ (ConsonantFeature (Alveolar, Nasal, │ │ 00:00:09 #354 [Verbose] > Voiced, Some(HalfLong)))); │ │ 00:00:09 #355 [Verbose] > LanguageElement (Phonological │ │ (VowelFeature (High, Front, Unrounded, │ │ 00:00:09 #356 [Verbose] > Some(LevelTone 1), Some(Primary), Some(Short)))); │ │ 00:00:09 #357 [Verbose] > LanguageElement (Phonological │ │ (VowelFeature (Low, Front, Unrounded, │ │ 00:00:09 #358 [Verbose] > Some(LevelTone 2), Some(Secondary), Some(Long)))); │ │ 00:00:09 #359 [Verbose] > LanguageElement (Phonological │ │ (ConsonantFeature (Velar, Plosive, │ │ 00:00:09 #360 [Verbose] > Voiceless, Some(HalfLong)))); │ │ 00:00:09 #361 [Verbose] > LanguageElement (Morphological │ │ (RootFeature "I")); │ │ 00:00:09 #362 [Verbose] > LanguageElement (Morphological │ │ (RootFeature "see")); │ │ 00:00:09 #363 [Verbose] > LanguageElement (Morphological │ │ (RootFeature "a")); │ │ 00:00:09 #364 [Verbose] > LanguageElement (Morphological │ │ (RootFeature "cat")); │ │ 00:00:09 #365 [Verbose] > LanguageElement (Syntactic │ │ (PhraseFeature (NP, [[WordFeature │ │ 00:00:09 #366 [Verbose] > ([[RootFeature "I"]], Pronoun)]]))); │ │ 00:00:09 #367 [Verbose] > LanguageElement (Syntactic │ │ (PhraseFeature (VP, [[WordFeature │ │ 00:00:09 #368 [Verbose] > ([[RootFeature "see"]], Verb)]]))); │ │ 00:00:09 #369 [Verbose] > LanguageElement (Syntactic │ │ (PhraseFeature (NP, [[WordFeature │ │ 00:00:09 #370 [Verbose] > ([[RootFeature "a"; RootFeature "cat"]], │ │ Noun)]]))); │ │ 00:00:09 #371 [Verbose] > LanguageElement (Semantic (Meaning │ │ "Perception act of a feline by │ │ 00:00:09 #372 [Verbose] > the speaker")); │ │ 00:00:09 #373 [Verbose] > LanguageElement (Pragmatic (UseContext │ │ "Statement of an action being │ │ 00:00:09 #374 [Verbose] > observed")) │ │ 00:00:09 #375 [Verbose] > ]] │ │ 00:00:09 #376 [Verbose] > ) │ │ 00:00:09 #377 [Verbose] > │ │ 00:00:09 #378 [Verbose] > let testPortuguese = │ │ 00:00:09 #379 [Verbose] > Model( │ │ 00:00:09 #380 [Verbose] > DiscourseUnit [[ │ │ 00:00:09 #381 [Verbose] > LanguageElement (Phonological │ │ (VowelFeature (High, Front, Unrounded, │ │ 00:00:09 #382 [Verbose] > Some(LevelTone 1), Some(Primary), Some(Short)))); │ │ 00:00:09 #383 [Verbose] > LanguageElement (Phonological │ │ (VowelFeature (Low, Front, Unrounded, │ │ 00:00:09 #384 [Verbose] > Some(LevelTone 2), Some(Secondary), Some(Long)))); │ │ 00:00:09 #385 [Verbose] > LanguageElement (Phonological │ │ (VowelFeature (Mid, Back, Rounded, │ │ 00:00:09 #386 [Verbose] > Some(LevelTone 3), Some(Primary), Some(Short)))); │ │ 00:00:09 #387 [Verbose] > LanguageElement (Phonological │ │ (ConsonantFeature (Velar, Plosive, │ │ 00:00:09 #388 [Verbose] > Voiceless, Some(HalfLong)))); │ │ 00:00:09 #389 [Verbose] > LanguageElement (Morphological │ │ (RootFeature "Eu")); │ │ 00:00:09 #390 [Verbose] > LanguageElement (Morphological │ │ (RootFeature "ver" |> ignore; │ │ 00:00:09 #391 [Verbose] > AffixFeature (Suffix, "o"))); │ │ 00:00:09 #392 [Verbose] > LanguageElement (Morphological │ │ (RootFeature "um")); │ │ 00:00:09 #393 [Verbose] > LanguageElement (Morphological │ │ (RootFeature "gato")); │ │ 00:00:09 #394 [Verbose] > LanguageElement (Syntactic │ │ (PhraseFeature (NP, [[WordFeature │ │ 00:00:09 #395 [Verbose] > ([[RootFeature "Eu"]], Pronoun)]]))); │ │ 00:00:09 #396 [Verbose] > LanguageElement (Syntactic │ │ (PhraseFeature (VP, [[WordFeature │ │ 00:00:09 #397 [Verbose] > ([[RootFeature "vejo"]], Verb)]]))); │ │ 00:00:09 #398 [Verbose] > LanguageElement (Syntactic │ │ (PhraseFeature (NP, [[WordFeature │ │ 00:00:09 #399 [Verbose] > ([[RootFeature "um"; RootFeature "gato"]], │ │ Noun)]]))); │ │ 00:00:09 #400 [Verbose] > LanguageElement (Semantic (Meaning │ │ "Ação de percepção de um felino │ │ 00:00:09 #401 [Verbose] > pelo falante")); │ │ 00:00:09 #402 [Verbose] > LanguageElement (Pragmatic (UseContext │ │ "Declaração de uma ação sendo │ │ 00:00:09 #403 [Verbose] > observada")) │ │ 00:00:09 #404 [Verbose] > ]] │ │ 00:00:09 #405 [Verbose] > ) │ │ 00:00:09 #406 [Verbose] > │ │ 00:00:09 #407 [Verbose] > let testKorean = │ │ 00:00:09 #408 [Verbose] > Model( │ │ 00:00:09 #409 [Verbose] > DiscourseUnit [[ │ │ 00:00:09 #410 [Verbose] > LanguageElement (Phonological │ │ (ConsonantFeature (Alveolar, Nasal, │ │ 00:00:09 #411 [Verbose] > Voiced, Some(Short)))); │ │ 00:00:09 #412 [Verbose] > LanguageElement (Phonological │ │ (VowelFeature (High, Back, Rounded, │ │ 00:00:09 #413 [Verbose] > None, None, Some(Short)))); │ │ 00:00:09 #414 [Verbose] > LanguageElement (Phonological │ │ (VowelFeature (Mid, Front, Unrounded, │ │ 00:00:09 #415 [Verbose] > None, None, Some(Long)))); │ │ 00:00:09 #416 [Verbose] > LanguageElement (Phonological │ │ (ConsonantFeature (Bilabial, Plosive, │ │ 00:00:09 #417 [Verbose] > Voiceless, Some(Short)))); │ │ 00:00:09 #418 [Verbose] > LanguageElement (Morphological │ │ (RootFeature "나")); │ │ 00:00:09 #419 [Verbose] > LanguageElement (Morphological │ │ (RootFeature "보다")); │ │ 00:00:09 #420 [Verbose] > LanguageElement (Morphological │ │ (AffixFeature (Suffix, "아"))); │ │ 00:00:09 #421 [Verbose] > LanguageElement (Morphological │ │ (RootFeature "고양이")); │ │ 00:00:09 #422 [Verbose] > LanguageElement (Syntactic │ │ (PhraseFeature (NP, [[WordFeature │ │ 00:00:09 #423 [Verbose] > ([[RootFeature "나"]], Pronoun)]]))); │ │ 00:00:09 #424 [Verbose] > LanguageElement (Syntactic │ │ (PhraseFeature (VP, [[WordFeature │ │ 00:00:09 #425 [Verbose] > ([[RootFeature "보다"; AffixFeature (Suffix, │ │ "아")]], Verb)]]))); │ │ 00:00:09 #426 [Verbose] > LanguageElement (Syntactic │ │ (PhraseFeature (NP, [[WordFeature │ │ 00:00:09 #427 [Verbose] > ([[RootFeature "고양이"]], Noun)]]))); │ │ 00:00:09 #428 [Verbose] > LanguageElement (Semantic (Meaning │ │ "화자에 의한 고양이의 관찰 │ │ 00:00:09 #429 [Verbose] > 행위")); │ │ 00:00:09 #430 [Verbose] > LanguageElement (Pragmatic (UseContext │ │ "관찰되고 있는 행동의 진술")) │ │ 00:00:09 #431 [Verbose] > ]] │ │ 00:00:09 #432 [Verbose] > ) │ │ 00:00:09 #433 [Verbose] > │ │ 00:00:09 #434 [Verbose] > ── markdown │ │ ──────────────────────────────────────────────────────────────────── │ │ 00:00:09 #435 [Verbose] > 38;5;2m│ │ 38;5;103m╭────────────────────────────────────────────────────────────────── │ │ ────────────╮ │ │ 00:00:09 #436 [Verbose] > │ ## main │ │ │ │ │ 00:00:09 #437 [Verbose] > 38;5;2m│ │ 38;5;103m╰────────────────────────────────────────────────────────────────── │ │ ────────────╯ │ │ 00:00:09 #438 [Verbose] > │ │ 00:00:09 #439 [Verbose] > ── spiral │ │ ────────────────────────────────────────────────────────────────────── │ │ 00:00:09 #440 [Verbose] > inl main (_args : array_base string) = │ │ 00:00:09 #441 [Verbose] > 0i32 │ │ 00:00:09 #442 [Verbose] > │ │ 00:00:09 #443 [Verbose] > inl main () = │ │ 00:00:09 #444 [Verbose] > $"let main args = !main args" : () │ │ 00:00:09 #445 [Verbose] > Building │ │ /tmp/!dotnet-repl/20240320-1225-2505-0515-0c9f9f40d34e/main.spi │ │ 00:00:09 #446 [Verbose] > │ │ 00:00:09 #447 [Verbose] > ╭─[ 147.92ms - stdout │ │ ]────────────────────────────────────────────────────────╮ │ │ 00:00:09 #448 [Verbose] > │ let rec closure0 () (v0 : (string [])) │ │ : int32 = │ │ │ 00:00:09 #449 [Verbose] > │ 0 │ │ │ │ │ 00:00:09 #450 [Verbose] > │ let v0 : ((string []) -> int32) = │ │ closure0() │ │ │ 00:00:09 #451 [Verbose] > │ let main args = v0 args │ │ │ │ │ 00:00:09 #452 [Verbose] > │ () │ │ │ │ │ 00:00:09 #453 [Verbose] > │ │ │ │ │ │ │ │ 00:00:09 #454 [Verbose] > │ │ │ │ │ │ │ │ 00:00:09 #455 [Verbose] > 38;5;2m│ │ 38;5;2m╰──────────────────────────────────────────────────────────────────── │ │ ──────────╯ │ │ 00:00:09 #456 [Verbose] > │ │ 00:00:09 #457 [Verbose] > ── spiral │ │ ────────────────────────────────────────────────────────────────────── │ │ 00:00:09 #458 [Verbose] > inl app () = │ │ 00:00:09 #459 [Verbose] > "test" |> console.write_line │ │ 00:00:09 #460 [Verbose] > 0i32 │ │ 00:00:09 #461 [Verbose] > │ │ 00:00:09 #462 [Verbose] > inl main () = │ │ 00:00:09 #463 [Verbose] > print_static "<test>" │ │ 00:00:09 #464 [Verbose] > │ │ 00:00:09 #465 [Verbose] > app │ │ 00:00:09 #466 [Verbose] > |> dyn │ │ 00:00:09 #467 [Verbose] > |> ignore │ │ 00:00:09 #468 [Verbose] > │ │ 00:00:09 #469 [Verbose] > print_static "</test>" │ │ 00:00:09 #470 [Verbose] > Building │ │ /tmp/!dotnet-repl/20240320-1225-2519-1983-1ec8b5bec250/main.spi │ │ 00:00:09 #471 [Verbose] > <test> │ │ 00:00:09 #472 [Verbose] > </test> │ │ 00:00:09 #473 [Verbose] > │ │ 00:00:09 #474 [Verbose] > ╭─[ 153.27ms - stdout │ │ ]────────────────────────────────────────────────────────╮ │ │ 00:00:09 #475 [Verbose] > │ let rec closure0 () () : int32 = │ │ │ │ │ 00:00:09 #476 [Verbose] > │ let v0 : string = "test" │ │ │ │ │ 00:00:09 #477 [Verbose] > │ System.Console.WriteLine v0 │ │ │ │ │ 00:00:09 #478 [Verbose] > │ 0 │ │ │ │ │ 00:00:09 #479 [Verbose] > │ let v0 : (unit -> int32) = closure0() │ │ │ │ │ 00:00:09 #480 [Verbose] > │ () │ │ │ │ │ 00:00:09 #481 [Verbose] > │ │ │ │ │ │ │ │ 00:00:09 #482 [Verbose] > │ │ │ │ │ │ │ │ 00:00:09 #483 [Verbose] > 38;5;2m│ │ 38;5;2m╰──────────────────────────────────────────────────────────────────── │ │ ──────────╯ │ │ 00:00:10 #484 [Verbose] > [NbConvertApp] Converting notebook test.dib.ipynb │ │ to html │ │ 00:00:10 #485 [Verbose] > │ │ /opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbforma │ │ t/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this │ │ will become a hard error in future nbformat versions. You may want to use │ │ `normalize()` on your notebooks before validations (available since nbformat │ │ 5.1.4). Previous versions of nbformat are fixing this issue transparently, │ │ and will stop doing so in the future. │ │ 00:00:10 #486 [Verbose] > validate(nb) │ │ 00:00:10 #487 [Verbose] > │ │ /opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbconve │ │ rt/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling │ │ back on Python 3 │ │ 00:00:10 #488 [Verbose] > return _pygments_highlight( │ │ 00:00:10 #489 [Verbose] > [NbConvertApp] Writing 321585 bytes to │ │ test.dib.html │ │ 00:00:11 #490 [Debug] executeAsync / exitCode: 0 / output.Length: 21665 │ │ 00:00:11 #491 [Debug] main / executeCommand / exitCode: 0 │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── pwsh ──────────────────────────────────────────────────────────────────────── { . ../../../../apps/parser/dist/DibParser$(GetExecutableSuffix) test.dib spi } | Invoke-Block ╭─[ 345.39ms - stdout ]────────────────────────────────────────────────────────╮ │ 00:00:00 #1 [Debug] writeDibCode / output: Spi / path: test.dib │ │ 00:00:00 #2 [Debug] parseDibCode / output: Spi / file: test.dib │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── pwsh ──────────────────────────────────────────────────────────────────────── { . ../../../../apps/spiral/dist/Supervisor$(GetExecutableSuffix) --build-file test.spi test.fsx --timeout 10000 } | Invoke-Block ╭─[ 2.75s - stdout ]───────────────────────────────────────────────────────────╮ │ 00:00:00 #1 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:00 #2 [Debug] executeAsync / options: { Command = │ │ "dotnet "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The │ │ Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" │ │ --port 13805 --default-int i32 --default-float f64" │ │ WorkingDirectory = None │ │ CancellationToken = Some System.Threading.CancellationToken │ │ OnLine = Some <fun:main@425-297> } │ │ 00:00:00 #3 [Verbose] > pwd: │ │ /home/runner/work/polyglot/polyglot/apps/spiral/temp/test │ │ 00:00:00 #4 [Verbose] > dll_path: │ │ /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral │ │ Language 2/artifacts/bin/The Spiral Language 2/release │ │ 00:00:00 #5 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:00 #6 [Verbose] waitForPortAccess / port: 13805 / retry: 0 │ │ 00:00:00 #7 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:00 #8 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:00 #9 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:00 #10 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:00 #11 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:00 #12 [Verbose] > Starting the Spiral Server. It is bound to: │ │ http://localhost:13805 │ │ 00:00:00 #13 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:00 #14 [Verbose] testPortOpen / ex: System.AggregateException: One or │ │ more errors occurred. (Connection refused) │ │ 00:00:00 #15 [Debug] sendJson / port: 13805 / json: {"Ping":true} / │ │ result.Length: │ │ 00:00:00 #16 [Verbose] awaitCompiler / Ping / result: Some(null) / port: │ │ 13805 / retry: 0 │ │ 00:00:00 #17 [Verbose] > Server bound to: http://localhost:13805 │ │ 00:00:00 #18 [Debug] buildFile / takeWhileInclusive / fsxContent: / errors: │ │ [] / typeErrorCount: 0 │ │ 00:00:00 #19 [Debug] buildFile / takeWhileInclusive / fsxContent: / errors: │ │ [] / typeErrorCount: 0 │ │ 00:00:00 #20 [Debug] sendJson / port: 13805 / json: │ │ {"FileOpen":{"spiText":"// // # test (Polyglot)\n\nnominal i = ()\nnominal e │ │ = ()\nnominal s = ()\nnominal n = ()\nnominal t = ()\nnominal f = │ │ ()\nnominal j = ()\nnominal p = ()\n\nunion sensing =\n | Si : s * i\n │ │ | Se : s * e\n\nunion intuition =\n | Ni : n * i\n | Ne : n * │ │ e\n\nunion thinking =\n | Ti : t * i\n | Te : t * e\n\nunion feeling │ │ =\n | Fi : f * i\n | Fe : f * e\n\nunion function_stack =\n | FS : │ │ sensing * intuition * thinking * feeling\n\nunion personality_type =\n | │ │ ISTJ : i * s * t * j * function_stack\n | ISFJ : i * s * f * j * │ │ function_stack\n | INFJ : i * n * f * j * function_stack\n | INTJ : i │ │ * n * t * j * function_stack\n | ISTP : i * s * t * p * function_stack\n │ │ | ISFP : i * s * f * p * function_stack\n | INFP : i * n * f * p * │ │ function_stack\n | INTP : i * n * t * p * function_stack\n | ESTP : e │ │ * s * t * p * function_stack\n | ESFP : e * s * f * p * function_stack\n │ │ | ENFP : e * n * f * p * function_stack\n | ENTP : e * n * t * p * │ │ function_stack\n | ESTJ : e * s * t * j * function_stack\n | ESFJ : e │ │ * s * f * j * function_stack\n | ENFJ : e * n * f * j * function_stack\n │ │ | ENTJ : e * n * t * j * function_stack\n\n\ninl main () =\n inl │ │ istj_stack = FS ((Si (s, i)), Ne (n, e), (Te (t, e)), (Fi (f, i)))\n inl │ │ istj_personality = ISTJ (i, s, t, j, istj_stack)\n // inl isfj_stack = FS │ │ ((Si (s, i)), Ne (n, e), (Fe (f, e)), (Ti (t, i)))\n // inl │ │ isfj_personality = ISFJ (i, s, f, j, isfj_stack)\n\n ;[\n │ │ istj_personality\n ]\n |\u003E fun x =\u003E │ │ $\u0027$\u0022%A{!x}\u0022\u0027 : string\n |\u003E │ │ console.write_line\n\ninl main () =\n $\u0022!main ()\u0022 : ()\n\n// // │ │ ## main\n\ninl main (_args : array_base string) =\n 0i32\n\ninl main () │ │ =\n $\u0022let main args = !main args\u0022 : ()\n\ninl app () =\n │ │ \u0022test\u0022 |\u003E console.write_line\n 0i32\n\ninl main () =\n │ │ print_static \u0022\u003Ctest\u003E\u0022\n\n app\n |\u003E dyn\n │ │ |\u003E ignore\n\n print_static │ │ \u0022\u003C/test\u003E\u0022\n","uri":"file:///home/runner/work/polyglot/po │ │ lyglot/apps/spiral/temp/test/test.spi"}} / result.Length: │ │ 00:00:00 #21 [Debug] sendJson / port: 13805 / json: │ │ {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/po │ │ lyglot/apps/spiral/temp/test/test.spi"}} / result.Length: │ │ 00:00:01 #22 [Verbose] > Building │ │ /home/runner/work/polyglot/polyglot/apps/spiral/temp/test/test.spi │ │ 00:00:01 #23 [Debug] buildFile / takeWhileInclusive / fsxContent: / errors: │ │ [] / typeErrorCount: 0 │ │ 00:00:02 #24 [Verbose] > <test> │ │ 00:00:02 #25 [Verbose] > </test> │ │ 00:00:02 #26 [Debug] buildFile / takeWhileInclusive / fsxContent: let rec │ │ closure0 () () : int32 = │ │ let v0 : string = "test" │ │ System.Console.WriteLine v0 │ │ 0 │ │ let v0 : (unit -> int32) = closure0() │ │ () │ │ / errors: [] / typeErrorCount: 0 │ │ 00:00:02 #27 [Debug] watchWithFilter / Disposing watch stream / filter: │ │ FileName, LastWrite │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── pwsh ──────────────────────────────────────────────────────────────────────── dotnet fable --optimize --lang rs --extension .rs ╭─[ 6.86s - stdout ]───────────────────────────────────────────────────────────╮ │ Fable 4.14.0: F# to Rust compiler (status: alpha) │ │ │ │ Thanks to the contributor! @7sharp9 │ │ Stand with Ukraine! https://standwithukraine.com.ua/ │ │ │ │ Parsing test.fsproj... │ │ .> dotnet restore test.fable-temp.csproj -p:FABLE_COMPILER=true │ │ -p:FABLE_COMPILER_4=true -p:FABLE_COMPILER_RUST=true │ │ Determining projects to restore... │ │ Paket version 8.1.0-alpha001+27cb9f111f156e8b68d08dc293857425c0ade23d │ │ The last full restore is still up to date. Nothing left to do. │ │ Total time taken: 0 milliseconds │ │ Paket version 8.1.0-alpha001+27cb9f111f156e8b68d08dc293857425c0ade23d │ │ Restoring │ │ /home/runner/work/polyglot/polyglot/apps/spiral/temp/test/test.fable-temp.cs │ │ proj │ │ Starting restore process. │ │ Total time taken: 0 milliseconds │ │ Restored │ │ /home/runner/work/polyglot/polyglot/apps/spiral/temp/test/test.fable-temp.cs │ │ proj (in 240 ms). │ │ .> dotnet restore │ │ /home/runner/work/polyglot/polyglot/apps/spiral/temp/test/test.fsproj │ │ Determining projects to restore... │ │ Restored │ │ /home/runner/work/polyglot/polyglot/apps/spiral/temp/test/test.fsproj (in │ │ 241 ms). │ │ Project and references (1 source files) parsed in 4820ms │ │ │ │ Started Fable compilation... │ │ │ │ Fable compilation finished in 996ms │ │ │ │ ./test.fsx(6,0): (6,2) warning FABLE: For Rust, support for F# static and │ │ module do bindings is disabled by default. It can be enabled with the │ │ 'static_do_bindings' feature. Use at your own risk! │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── pwsh ──────────────────────────────────────────────────────────────────────── (Get-Content test.rs) ` -replace [[regex]]::Escape("),);"), "));" ` | Set-Content test.rs ── pwsh ──────────────────────────────────────────────────────────────────────── cargo fmt -- ── pwsh ──────────────────────────────────────────────────────────────────────── cargo build --release ╭─[ 18.59s - stdout ]──────────────────────────────────────────────────────────╮ │ Compiling cfg-if v1.0.0 │ │ Compiling libc v0.2.153 │ │ Compiling autocfg v1.1.0 │ │ Compiling libm v0.2.8 │ │ Compiling proc-macro2 v1.0.79 │ │ Compiling num-traits v0.2.18 │ │ Compiling unicode-ident v1.0.12 │ │ Compiling quote v1.0.35 │ │ Compiling getrandom v0.2.12 │ │ Compiling once_cell v1.19.0 │ │ Compiling memchr v2.7.1 │ │ Compiling rustix v0.38.31 │ │ Compiling rand_core v0.6.4 │ │ Compiling syn v2.0.53 │ │ Compiling linux-raw-sys v0.4.13 │ │ Compiling bitflags v2.4.2 │ │ Compiling regex-syntax v0.8.2 │ │ Compiling aho-corasick v1.1.2 │ │ Compiling tracing-core v0.1.32 │ │ Compiling num-bigint v0.4.4 │ │ Compiling lazy_static v1.4.0 │ │ Compiling fastrand v2.0.1 │ │ Compiling rust_decimal v1.34.3 │ │ Compiling ppv-lite86 v0.2.17 │ │ Compiling tempfile v3.10.1 │ │ Compiling regex-automata v0.4.6 │ │ Compiling rand_chacha v0.3.1 │ │ Compiling num-integer v0.1.46 │ │ Compiling wait-timeout v0.2.0 │ │ Compiling thiserror v1.0.58 │ │ Compiling log v0.4.21 │ │ Compiling overload v0.1.1 │ │ Compiling arrayvec v0.7.4 │ │ Compiling quick-error v1.2.3 │ │ Compiling bit-vec v0.6.3 │ │ Compiling fnv v1.0.7 │ │ Compiling iana-time-zone v0.1.60 │ │ Compiling tracing-attributes v0.1.27 │ │ Compiling thiserror-impl v1.0.58 │ │ Compiling chrono v0.4.35 │ │ Compiling regex v1.10.3 │ │ Compiling bit-set v0.5.3 │ │ Compiling rusty-fork v0.3.0 │ │ Compiling nu-ansi-term v0.46.0 │ │ Compiling tracing-log v0.2.0 │ │ Compiling rand v0.8.5 │ │ Compiling sharded-slab v0.1.7 │ │ Compiling rand_xorshift v0.3.0 │ │ Compiling thread_local v1.1.8 │ │ Compiling uuid v1.7.0 │ │ Compiling pin-project-lite v0.2.13 │ │ Compiling unarray v0.1.4 │ │ Compiling smallvec v1.13.1 │ │ Compiling minimal-lexical v0.2.1 │ │ Compiling tracing-subscriber v0.3.18 │ │ Compiling nom v7.1.3 │ │ Compiling proptest v1.4.0 │ │ Compiling tracing v0.1.40 │ │ Compiling fable_library_rust v0.1.0 │ │ (/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/fable_modules/fab │ │ le-library-rust) │ │ Compiling spiral_temp_test v0.0.1 │ │ (/home/runner/work/polyglot/polyglot/apps/spiral/temp/test) │ │ warning: the item `any` is imported redundantly │ │ --> apps/spiral/temp/test/./main.rs:11:27 │ │ | │ │ 11 | use proptest::arbitrary::{any, Arbitrary}; │ │ | ^^^ │ │ 12 | use proptest::prelude::*; │ │ | -------------------- the item `any` is already imported here │ │ | │ │ = note: `#[warn(unused_imports)]` on by default │ │ │ │ warning: the item `Arbitrary` is imported redundantly │ │ --> apps/spiral/temp/test/./main.rs:11:32 │ │ | │ │ 11 | use proptest::arbitrary::{any, Arbitrary}; │ │ | ^^^^^^^^^ │ │ 12 | use proptest::prelude::*; │ │ | -------------------- the item `Arbitrary` is already imported │ │ here │ │ │ │ warning: unused import: `info` │ │ --> apps/spiral/temp/test/./main.rs:190:15 │ │ | │ │ 190 | use tracing::{info, Level}; │ │ | ^^^^ │ │ │ │ warning: associated items `new`, `add_item`, and `remove_item` are │ │ never used │ │ --> apps/spiral/temp/test/./main.rs:46:8 │ │ | │ │ 45 | impl Cart { │ │ | --------- associated items in this implementation │ │ 46 | fn new() -> Cart { │ │ | ^^^ │ │ ... │ │ 50 | fn add_item(&mut self, item: Item) { │ │ | ^^^^^^^^ │ │ ... │ │ 56 | fn remove_item(&mut self, item: &Item) { │ │ | ^^^^^^^^^^^ │ │ | │ │ = note: `#[warn(dead_code)]` on by default │ │ │ │ warning: function `parse_comment` is never used │ │ --> apps/spiral/temp/test/./main.rs:124:4 │ │ | │ │ 124 | fn parse_comment(input: &str) -> IResult<&str, SpiralToken> { │ │ | ^^^^^^^^^^^^^ │ │ │ │ warning: function `parse_string` is never used │ │ --> apps/spiral/temp/test/./main.rs:130:4 │ │ | │ │ 130 | fn parse_string(input: &str) -> IResult<&str, SpiralToken> { │ │ | ^^^^^^^^^^^^ │ │ │ │ warning: function `parse_identifier` is never used │ │ --> apps/spiral/temp/test/./main.rs:145:4 │ │ | │ │ 145 | fn parse_identifier(input: &str) -> IResult<&str, SpiralToken> {38;5;2m│ │ 0m │ │ | ^^^^^^^^^^^^^^^^ │ │ │ │ warning: function `parse_integer` is never used │ │ --> apps/spiral/temp/test/./main.rs:157:4 │ │ | │ │ 157 | fn parse_integer(input: &str) -> IResult<&str, SpiralToken> { │ │ | ^^^^^^^^^^^^^ │ │ │ │ warning: function `parse_operator` is never used │ │ --> apps/spiral/temp/test/./main.rs:165:4 │ │ | │ │ 165 | fn parse_operator(input: &str) -> IResult<&str, SpiralToken> { │ │ | ^^^^^^^^^^^^^^ │ │ │ │ warning: function `parse_token` is never used │ │ --> apps/spiral/temp/test/./main.rs:170:4 │ │ | │ │ 170 | fn parse_token(input: &str) -> IResult<&str, SpiralToken> { │ │ | ^^^^^^^^^^^ │ │ │ │ warning: function `format_token` is never used │ │ --> apps/spiral/temp/test/./main.rs:180:4 │ │ | │ │ 180 | fn format_token(token: &SpiralToken) -> String { │ │ | ^^^^^^^^^^^^ │ │ │ │ warning: function `parse_expression` is never used │ │ --> apps/spiral/temp/test/./main.rs:213:4 │ │ | │ │ 213 | fn parse_expression(input: &str) -> IResult<&str, SpiralToken> {38;5;2m│ │ 0m │ │ | ^^^^^^^^^^^^^^^^ │ │ │ │ warning: `spiral_temp_test` (bin "spiral_temp_test") generated 12 │ │ warnings (run `cargo fix --bin "spiral_temp_test"` to apply 1 suggestion) │ │ Finished `release` profile [optimized] target(s) in 18.53s │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── pwsh ──────────────────────────────────────────────────────────────────────── $env:RUST_LOG="info" { cargo test --release } | Invoke-Block ╭─[ 22.31s - stdout ]──────────────────────────────────────────────────────────╮ │ Compiling cfg-if v1.0.0 │ │ Compiling libc v0.2.153 │ │ Compiling libm v0.2.8 │ │ Compiling memchr v2.7.1 │ │ Compiling once_cell v1.19.0 │ │ Compiling regex-syntax v0.8.2 │ │ Compiling getrandom v0.2.12 │ │ Compiling num-traits v0.2.18 │ │ Compiling rand_core v0.6.4 │ │ Compiling bitflags v2.4.2 │ │ Compiling linux-raw-sys v0.4.13 │ │ Compiling aho-corasick v1.1.2 │ │ Compiling rustix v0.38.31 │ │ Compiling tracing-core v0.1.32 │ │ Compiling fastrand v2.0.1 │ │ Compiling ppv-lite86 v0.2.17 │ │ Compiling lazy_static v1.4.0 │ │ Compiling rand_chacha v0.3.1 │ │ Compiling tempfile v3.10.1 │ │ Compiling regex-automata v0.4.6 │ │ Compiling num-integer v0.1.46 │ │ Compiling wait-timeout v0.2.0 │ │ Compiling quick-error v1.2.3 │ │ Compiling log v0.4.21 │ │ Compiling iana-time-zone v0.1.60 │ │ Compiling arrayvec v0.7.4 │ │ Compiling overload v0.1.1 │ │ Compiling bit-vec v0.6.3 │ │ Compiling fnv v1.0.7 │ │ Compiling rusty-fork v0.3.0 │ │ Compiling nu-ansi-term v0.46.0 │ │ Compiling bit-set v0.5.3 │ │ Compiling rust_decimal v1.34.3 │ │ Compiling tracing-log v0.2.0 │ │ Compiling chrono v0.4.35 │ │ Compiling num-bigint v0.4.4 │ │ Compiling regex v1.10.3 │ │ Compiling rand v0.8.5 │ │ Compiling sharded-slab v0.1.7 │ │ Compiling rand_xorshift v0.3.0 │ │ Compiling uuid v1.7.0 │ │ Compiling thread_local v1.1.8 │ │ Compiling smallvec v1.13.1 │ │ Compiling pin-project-lite v0.2.13 │ │ Compiling unarray v0.1.4 │ │ Compiling minimal-lexical v0.2.1 │ │ Compiling proptest v1.4.0 │ │ Compiling tracing-subscriber v0.3.18 │ │ Compiling nom v7.1.3 │ │ Compiling tracing v0.1.40 │ │ Compiling fable_library_rust v0.1.0 │ │ (/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/fable_modules/fab │ │ le-library-rust) │ │ Compiling thiserror v1.0.58 │ │ Compiling spiral_temp_test v0.0.1 │ │ (/home/runner/work/polyglot/polyglot/apps/spiral/temp/test) │ │ warning: the item `any` is imported redundantly │ │ --> apps/spiral/temp/test/./main.rs:11:27 │ │ | │ │ 11 | use proptest::arbitrary::{any, Arbitrary}; │ │ | ^^^ │ │ 12 | use proptest::prelude::*; │ │ | -------------------- the item `any` is already imported here │ │ | │ │ = note: `#[warn(unused_imports)]` on by default │ │ │ │ warning: the item `Arbitrary` is imported redundantly │ │ --> apps/spiral/temp/test/./main.rs:11:32 │ │ | │ │ 11 | use proptest::arbitrary::{any, Arbitrary}; │ │ | ^^^^^^^^^ │ │ 12 | use proptest::prelude::*; │ │ | -------------------- the item `Arbitrary` is already imported │ │ here │ │ │ │ warning: `spiral_temp_test` (bin "spiral_temp_test" test) generated 2 │ │ warnings │ │ Finished `release` profile [optimized] target(s) in 22.16s │ │ Running unittests main.rs │ │ (/home/runner/work/polyglot/polyglot/target/release/deps/spiral_temp_test-6c │ │ 5193c1fbcacfec) │ │ │ │ running 3 tests │ │ test test_parse_number ... ok │ │ 2024-03-20T12:26:18.194218Z INFO spiral_temp_test: │ │ input=Identifier("s") │ │ 2024-03-20T12:26:18.194264Z INFO spiral_temp_test: │ │ input=Integer(-1836948353343952601) │ │ 2024-03-20T12:26:18.194299Z INFO spiral_temp_test: │ │ input=Comment("{E\\u?^i!$wF\"J=mIrv'w_]FR\"%```&f\"") │ │ 2024-03-20T12:26:18.194316Z INFO spiral_temp_test: │ │ input=Integer(-7533846468520069878) │ │ 2024-03-20T12:26:18.194333Z INFO spiral_temp_test: │ │ input=Identifier("e1") │ │ 2024-03-20T12:26:18.194376Z INFO spiral_temp_test: │ │ input=Comment("/`S')$N$1:9{=b") │ │ 2024-03-20T12:26:18.194454Z INFO spiral_temp_test: │ │ input=StringLiteral("`2Nz+7(/=ZF") │ │ 2024-03-20T12:26:18.194485Z INFO spiral_temp_test: │ │ input=Operator("/") │ │ 2024-03-20T12:26:18.194508Z INFO spiral_temp_test: │ │ input=Integer(-6501531273339802625) │ │ 2024-03-20T12:26:18.194530Z INFO spiral_temp_test: │ │ input=Operator(")") │ │ 2024-03-20T12:26:18.194555Z INFO spiral_temp_test: │ │ input=Identifier("XlyCJuLl7Ud") │ │ 2024-03-20T12:26:18.194612Z INFO spiral_temp_test: │ │ input=Operator("-") │ │ 2024-03-20T12:26:18.194688Z INFO spiral_temp_test: │ │ input=Operator("/") │ │ 2024-03-20T12:26:18.194711Z INFO spiral_temp_test: │ │ input=Comment("=\"r@|/{`AY") │ │ 2024-03-20T12:26:18.194731Z INFO spiral_temp_test: │ │ input=Comment("^") │ │ 2024-03-20T12:26:18.194761Z INFO spiral_temp_test: │ │ input=Comment("~\"Vsmr{I$31E<\\ck") │ │ 2024-03-20T12:26:18.194780Z INFO spiral_temp_test: │ │ input=Integer(-554581507456623070) │ │ 2024-03-20T12:26:18.194801Z INFO spiral_temp_test: │ │ input=Operator("(") │ │ 2024-03-20T12:26:18.194836Z INFO spiral_temp_test: │ │ input=Identifier("kXT3i49JPFOBA55") │ │ 2024-03-20T12:26:18.194865Z INFO spiral_temp_test: │ │ input=Identifier("PygZAFGq0BnyQ10u3e5hQBGh601kvwc") │ │ 2024-03-20T12:26:18.194886Z INFO spiral_temp_test: │ │ input=Integer(-6359750504259145086) │ │ 2024-03-20T12:26:18.194904Z INFO spiral_temp_test: │ │ input=Operator("+") │ │ 2024-03-20T12:26:18.194929Z INFO spiral_temp_test: │ │ input=Identifier("lXWqHKwwD1Feo89bWAAwF") │ │ 2024-03-20T12:26:18.194952Z INFO spiral_temp_test: │ │ input=StringLiteral("?^=R?'/") │ │ 2024-03-20T12:26:18.194981Z INFO spiral_temp_test: │ │ input=Comment("v1SB./(g,!7\"feK\\QR//=:vX8v?=(") │ │ 2024-03-20T12:26:18.195033Z INFO spiral_temp_test: │ │ input=Comment("\"]^x+5&*kF0kH?:U") │ │ 2024-03-20T12:26:18.195052Z INFO spiral_temp_test: │ │ input=Integer(-5814253195378929162) │ │ 2024-03-20T12:26:18.195068Z INFO spiral_temp_test: │ │ input=Integer(228451908902614327) │ │ 2024-03-20T12:26:18.195084Z INFO spiral_temp_test: │ │ input=StringLiteral("*{D={O") │ │ 2024-03-20T12:26:18.195100Z INFO spiral_temp_test: │ │ input=Integer(-6585481448428398689) │ │ 2024-03-20T12:26:18.195120Z INFO spiral_temp_test: │ │ input=StringLiteral("R!n;' RqM@gow*./") │ │ 2024-03-20T12:26:18.195136Z INFO spiral_temp_test: │ │ input=StringLiteral("df") │ │ 2024-03-20T12:26:18.195155Z INFO spiral_temp_test: │ │ input=Identifier("e7TChBvt9m4zmX") │ │ 2024-03-20T12:26:18.195172Z INFO spiral_temp_test: │ │ input=Operator("-") │ │ 2024-03-20T12:26:18.195192Z INFO spiral_temp_test: │ │ input=Operator("(") │ │ 2024-03-20T12:26:18.195217Z INFO spiral_temp_test: │ │ input=StringLiteral("*V&`7NYo") │ │ 2024-03-20T12:26:18.195234Z INFO spiral_temp_test: │ │ input=Operator("-") │ │ 2024-03-20T12:26:18.195254Z INFO spiral_temp_test: │ │ input=Operator("=") │ │ 2024-03-20T12:26:18.195280Z INFO spiral_temp_test: │ │ input=StringLiteral("L`!{.gE`fKV%?8xBYD%") │ │ 2024-03-20T12:26:18.195303Z INFO spiral_temp_test: │ │ input=Operator(")") │ │ 2024-03-20T12:26:18.195321Z INFO spiral_temp_test: │ │ input=Operator("-") │ │ 2024-03-20T12:26:18.195341Z INFO spiral_temp_test: │ │ input=Operator(")") │ │ 2024-03-20T12:26:18.195367Z INFO spiral_temp_test: │ │ input=Comment("S7:&*W9\"3yO9T{`%::0<H") │ │ 2024-03-20T12:26:18.195391Z INFO spiral_temp_test: │ │ input=StringLiteral("+Y}VfkKW]gr$*]") │ │ 2024-03-20T12:26:18.195418Z INFO spiral_temp_test: │ │ input=Identifier("Yp9woi3Y") │ │ 2024-03-20T12:26:18.195444Z INFO spiral_temp_test: │ │ input=StringLiteral("T{`Eel9Ecw<('<ZILTt{e") │ │ 2024-03-20T12:26:18.195468Z INFO spiral_temp_test: │ │ input=Comment("3:*Y,:Q$S") │ │ 2024-03-20T12:26:18.195488Z INFO spiral_temp_test: │ │ input=Operator("=") │ │ 2024-03-20T12:26:18.195508Z INFO spiral_temp_test: │ │ input=Identifier("Xpt93") │ │ 2024-03-20T12:26:18.195536Z INFO spiral_temp_test: │ │ input=Identifier("z9O15226eWaa49YZEaUnBpsxc18w") │ │ 2024-03-20T12:26:18.195560Z INFO spiral_temp_test: │ │ input=Integer(-3054300383894970421) │ │ 2024-03-20T12:26:18.195584Z INFO spiral_temp_test: │ │ input=Identifier("sX4TulFPJz5nSzkK") │ │ 2024-03-20T12:26:18.195614Z INFO spiral_temp_test: │ │ input=Comment("$8&%6*<Q#,8La6Qi @U~up|VX&T9x6a") │ │ 2024-03-20T12:26:18.195640Z INFO spiral_temp_test: │ │ input=StringLiteral("eSu=%0L).") │ │ 2024-03-20T12:26:18.195663Z INFO spiral_temp_test: │ │ input=Comment(">^Qd3){W") │ │ 2024-03-20T12:26:18.195686Z INFO spiral_temp_test: │ │ input=Comment("{x*~o,.FoFvjL-") │ │ 2024-03-20T12:26:18.195707Z INFO spiral_temp_test: │ │ input=Operator("*") │ │ 2024-03-20T12:26:18.195734Z INFO spiral_temp_test: │ │ input=Identifier("NwZzb4r8gNeVrpez03D4gDACu") │ │ 2024-03-20T12:26:18.195757Z INFO spiral_temp_test: │ │ input=StringLiteral("xu=/>.W<") │ │ 2024-03-20T12:26:18.195783Z INFO spiral_temp_test: │ │ input=Comment("Rd%") │ │ 2024-03-20T12:26:18.195810Z INFO spiral_temp_test: │ │ input=StringLiteral("5QK* ]Q(Lj*v{r `j={ ") │ │ 2024-03-20T12:26:18.195830Z INFO spiral_temp_test: │ │ input=Identifier("J") │ │ 2024-03-20T12:26:18.195846Z INFO spiral_temp_test: │ │ input=Integer(4276557468021856774) │ │ 2024-03-20T12:26:18.195865Z INFO spiral_temp_test: │ │ input=Identifier("tC") │ │ 2024-03-20T12:26:18.195883Z INFO spiral_temp_test: │ │ input=Comment("~") │ │ 2024-03-20T12:26:18.195909Z INFO spiral_temp_test: │ │ input=Identifier("y0CC6HKQ0275458lusXXEMZ") │ │ 2024-03-20T12:26:18.195933Z INFO spiral_temp_test: │ │ input=StringLiteral("*/") │ │ 2024-03-20T12:26:18.195951Z INFO spiral_temp_test: │ │ input=Integer(-7621050786367082478) │ │ 2024-03-20T12:26:18.195980Z INFO spiral_temp_test: │ │ input=StringLiteral("P9OQTcYWK=n9r4VOe<%|9o$7`B}=`") │ │ 2024-03-20T12:26:18.196006Z INFO spiral_temp_test: │ │ input=Identifier("MRPqD4KKpZYBF") │ │ 2024-03-20T12:26:18.196030Z INFO spiral_temp_test: │ │ input=Comment("\\'?jK[Ll?%</{)") │ │ 2024-03-20T12:26:18.196050Z INFO spiral_temp_test: │ │ input=Identifier("pR9") │ │ 2024-03-20T12:26:18.196071Z INFO spiral_temp_test: │ │ input=Integer(-3671470258045082724) │ │ 2024-03-20T12:26:18.196088Z INFO spiral_temp_test: │ │ input=Integer(9207450364083585510) │ │ 2024-03-20T12:26:18.196111Z INFO spiral_temp_test: │ │ input=StringLiteral("?.('sj2v&ax") │ │ 2024-03-20T12:26:18.196135Z INFO spiral_temp_test: │ │ input=StringLiteral("9)/G&{<$ek.9T<Z") │ │ 2024-03-20T12:26:18.196156Z INFO spiral_temp_test: │ │ input=Identifier("Brcxm9") │ │ 2024-03-20T12:26:18.196181Z INFO spiral_temp_test: │ │ input=Comment("$+XN{S+`*rz?R%z*j") │ │ 2024-03-20T12:26:18.196200Z INFO spiral_temp_test: │ │ input=Integer(3432557126477691694) │ │ 2024-03-20T12:26:18.196222Z INFO spiral_temp_test: │ │ input=StringLiteral("?i=qev?") │ │ 2024-03-20T12:26:18.196244Z INFO spiral_temp_test: │ │ input=Operator(")") │ │ 2024-03-20T12:26:18.196266Z INFO spiral_temp_test: │ │ input=Integer(8553480011869906548) │ │ 2024-03-20T12:26:18.196293Z INFO spiral_temp_test: │ │ input=StringLiteral("D,NAa10:$x$AH;$_%FQg&:!U") │ │ 2024-03-20T12:26:18.196320Z INFO spiral_temp_test: │ │ input=Comment("/%lDe=g'Y7\"O<{1") │ │ 2024-03-20T12:26:18.196347Z INFO spiral_temp_test: │ │ input=StringLiteral("?$TK'sJ?j$/kX}%.{h)5/}:") │ │ 2024-03-20T12:26:18.196366Z INFO spiral_temp_test: │ │ input=Integer(-3229505918976051740) │ │ 2024-03-20T12:26:18.196384Z INFO spiral_temp_test: │ │ input=Integer(2939701790506318827) │ │ 2024-03-20T12:26:18.196406Z INFO spiral_temp_test: │ │ input=Comment("`Rx{s/DQ%*g-*`$") │ │ 2024-03-20T12:26:18.196430Z INFO spiral_temp_test: │ │ input=Identifier("YLF3OUXU8zjXs") │ │ 2024-03-20T12:26:18.196458Z INFO spiral_temp_test: │ │ input=Identifier("CZ8fY6cHzG2MYf43h0AnVUWKRdt72b9") │ │ 2024-03-20T12:26:18.196484Z INFO spiral_temp_test: │ │ input=Operator("-") │ │ 2024-03-20T12:26:18.196501Z INFO spiral_temp_test: │ │ input=Integer(2615694978401797007) │ │ 2024-03-20T12:26:18.196522Z INFO spiral_temp_test: │ │ input=StringLiteral("Urj{d*h") │ │ 2024-03-20T12:26:18.196541Z INFO spiral_temp_test: │ │ input=Operator("+") │ │ 2024-03-20T12:26:18.196569Z INFO spiral_temp_test: │ │ input=Comment("!M'>`qD<&`^>me<y%='=GS*S/#7w`i") │ │ 2024-03-20T12:26:18.196596Z INFO spiral_temp_test: │ │ input=Identifier("axoI1a1BMAeeAErEc") │ │ 2024-03-20T12:26:18.196622Z INFO spiral_temp_test: │ │ input=Comment("%UCivqMG/??pZ<lX\"%z") │ │ 2024-03-20T12:26:18.196648Z INFO spiral_temp_test: │ │ input=Identifier("jytFb") │ │ 2024-03-20T12:26:18.196668Z INFO spiral_temp_test: │ │ input=Identifier("zw051X1A") │ │ 2024-03-20T12:26:18.196695Z INFO spiral_temp_test: │ │ input=Comment("(`e5gq*hg#'<]`~Pep9z!U-v") │ │ 2024-03-20T12:26:18.196724Z INFO spiral_temp_test: │ │ input=Comment("!$fI$;s`&Et$/<{.7c}eb3{`/_'>?j:3") │ │ 2024-03-20T12:26:18.196750Z INFO spiral_temp_test: │ │ input=StringLiteral("&B'x=SHnf;") │ │ 2024-03-20T12:26:18.196771Z INFO spiral_temp_test: │ │ input=Operator("*") │ │ 2024-03-20T12:26:18.196788Z INFO spiral_temp_test: │ │ input=Integer(2263058058019372046) │ │ 2024-03-20T12:26:18.196818Z INFO spiral_temp_test: │ │ input=StringLiteral("k}R{%15!`Tl{o`?$`&X") │ │ 2024-03-20T12:26:18.196839Z INFO spiral_temp_test: │ │ input=StringLiteral("?") │ │ 2024-03-20T12:26:18.196860Z INFO spiral_temp_test: │ │ input=Comment("mD8\"\\6W") │ │ 2024-03-20T12:26:18.196880Z INFO spiral_temp_test: │ │ input=Operator("*") │ │ 2024-03-20T12:26:18.196907Z INFO spiral_temp_test: │ │ input=Comment("_n< ])$a'`;@?%c_kEM\"&OIPD$.") │ │ 2024-03-20T12:26:18.196928Z INFO spiral_temp_test: │ │ input=Integer(-6150407293661275743) │ │ 2024-03-20T12:26:18.196947Z INFO spiral_temp_test: │ │ input=Operator("/") │ │ 2024-03-20T12:26:18.196977Z INFO spiral_temp_test: │ │ input=Comment("g/)#") │ │ 2024-03-20T12:26:18.196995Z INFO spiral_temp_test: │ │ input=Integer(5402967543889157180) │ │ 2024-03-20T12:26:18.197019Z INFO spiral_temp_test: │ │ input=Identifier("U3UPW2EDfvesniiiJ9Q") │ │ 2024-03-20T12:26:18.197043Z INFO spiral_temp_test: │ │ input=Identifier("Unv4zf3k51d79hm") │ │ 2024-03-20T12:26:18.197061Z INFO spiral_temp_test: │ │ input=Integer(4638764629128119938) │ │ 2024-03-20T12:26:18.197082Z INFO spiral_temp_test: │ │ input=Identifier("w3Zi04y") │ │ 2024-03-20T12:26:18.197100Z INFO spiral_temp_test: │ │ input=Identifier("uUQ1l") │ │ 2024-03-20T12:26:18.197117Z INFO spiral_temp_test: │ │ input=Integer(-4630174734003535754) │ │ 2024-03-20T12:26:18.197134Z INFO spiral_temp_test: │ │ input=Identifier("A8") │ │ 2024-03-20T12:26:18.197158Z INFO spiral_temp_test: │ │ input=StringLiteral("F. ") │ │ 2024-03-20T12:26:18.197179Z INFO spiral_temp_test: │ │ input=StringLiteral(" [`kof:q") │ │ 2024-03-20T12:26:18.197197Z INFO spiral_temp_test: │ │ input=Integer(-9044378084086644933) │ │ 2024-03-20T12:26:18.197221Z INFO spiral_temp_test: │ │ input=StringLiteral("`4DU@EOwJh!?dBMMr+") │ │ 2024-03-20T12:26:18.197243Z INFO spiral_temp_test: │ │ input=Operator("=") │ │ 2024-03-20T12:26:18.197262Z INFO spiral_temp_test: │ │ input=Integer(-1514265974955155188) │ │ 2024-03-20T12:26:18.197283Z INFO spiral_temp_test: │ │ input=StringLiteral("c]/52O}?{5") │ │ 2024-03-20T12:26:18.197308Z INFO spiral_temp_test: │ │ input=Comment("g*{G`X)3:<B5YAX\\%0") │ │ 2024-03-20T12:26:18.197334Z INFO spiral_temp_test: │ │ input=Operator("*") │ │ 2024-03-20T12:26:18.197357Z INFO spiral_temp_test: │ │ input=Identifier("rjgDc8xPNXpixX") │ │ 2024-03-20T12:26:18.197380Z INFO spiral_temp_test: │ │ input=Identifier("Rrz1VGdHwlz1aqs") │ │ 2024-03-20T12:26:18.197402Z INFO spiral_temp_test: │ │ input=StringLiteral("WS|G T@gPp") │ │ 2024-03-20T12:26:18.197429Z INFO spiral_temp_test: │ │ input=Identifier("x4BL36FT2HoR6K2O3UW1Bc7C58") │ │ 2024-03-20T12:26:18.197456Z INFO spiral_temp_test: │ │ input=StringLiteral("z9':7:_`[&rjXW{o|`Sw'{Qa") │ │ 2024-03-20T12:26:18.197476Z INFO spiral_temp_test: │ │ input=Integer(-2392964714599266056) │ │ 2024-03-20T12:26:18.197493Z INFO spiral_temp_test: │ │ input=Integer(6177714835253194035) │ │ 2024-03-20T12:26:18.197522Z INFO spiral_temp_test: │ │ input=Operator("(") │ │ 2024-03-20T12:26:18.197543Z INFO spiral_temp_test: │ │ input=StringLiteral("$<R$C``") │ │ 2024-03-20T12:26:18.197568Z INFO spiral_temp_test: │ │ input=Identifier("u0JQ6uRkES86Gd39q3J") │ │ 2024-03-20T12:26:18.197592Z INFO spiral_temp_test: │ │ input=Identifier("c27OZl6Y2M5p725v") │ │ 2024-03-20T12:26:18.197612Z INFO spiral_temp_test: │ │ input=StringLiteral("") │ │ 2024-03-20T12:26:18.197638Z INFO spiral_temp_test: │ │ input=Comment("?/!a<'}RczN?h`'<n$$fwbd',{=") │ │ 2024-03-20T12:26:18.197662Z INFO spiral_temp_test: │ │ input=Operator("(") │ │ 2024-03-20T12:26:18.197684Z INFO spiral_temp_test: │ │ input=Integer(200938160401208424) │ │ 2024-03-20T12:26:18.197705Z INFO spiral_temp_test: │ │ input=StringLiteral("<<?j$") │ │ 2024-03-20T12:26:18.197725Z INFO spiral_temp_test: │ │ input=Operator("-") │ │ 2024-03-20T12:26:18.197744Z INFO spiral_temp_test: │ │ input=StringLiteral(".'=&") │ │ 2024-03-20T12:26:18.197765Z INFO spiral_temp_test: │ │ input=Operator(")") │ │ 2024-03-20T12:26:18.197783Z INFO spiral_temp_test: │ │ input=Operator("+") │ │ 2024-03-20T12:26:18.197807Z INFO spiral_temp_test: │ │ input=Comment("5b!&k5J\"0:.\\93w|'n&") │ │ 2024-03-20T12:26:18.197830Z INFO spiral_temp_test: │ │ input=StringLiteral("7`:jM:%") │ │ 2024-03-20T12:26:18.197853Z INFO spiral_temp_test: │ │ input=Identifier("Red05S73cBF") │ │ 2024-03-20T12:26:18.197876Z INFO spiral_temp_test: │ │ input=Identifier("x6i9QxIJr7P6HIYn69") │ │ 2024-03-20T12:26:18.197897Z INFO spiral_temp_test: │ │ input=Operator("/") │ │ 2024-03-20T12:26:18.197930Z INFO spiral_temp_test: │ │ input=StringLiteral("UPR0x=``?/P]y1v=km/!B<?/CfUUD") │ │ 2024-03-20T12:26:18.197959Z INFO spiral_temp_test: │ │ input=Comment("/gmy|s+ct;?cq.}9\"pY") │ │ 2024-03-20T12:26:18.197978Z INFO spiral_temp_test: │ │ input=Integer(-5435572499973652146) │ │ 2024-03-20T12:26:18.198000Z INFO spiral_temp_test: │ │ input=Identifier("gEBrnzkDXTQ") │ │ 2024-03-20T12:26:18.198021Z INFO spiral_temp_test: │ │ input=Operator("(") │ │ 2024-03-20T12:26:18.198049Z INFO spiral_temp_test: │ │ input=Comment("\\=Gb];NNC{ @/h(cIgB*Zml:\\`") │ │ 2024-03-20T12:26:18.198082Z INFO spiral_temp_test: │ │ input=Identifier("bG75pj8PHSJX1n2ebvX021clT1tow") │ │ 2024-03-20T12:26:18.198105Z INFO spiral_temp_test: │ │ input=Operator("/") │ │ 2024-03-20T12:26:18.198132Z INFO spiral_temp_test: │ │ input=StringLiteral("3*':{)3~E*&B6T[g%y(:") │ │ 2024-03-20T12:26:18.198152Z INFO spiral_temp_test: │ │ input=Integer(-832719989078559012) │ │ 2024-03-20T12:26:18.198172Z INFO spiral_temp_test: │ │ input=Comment(",n|") │ │ 2024-03-20T12:26:18.198192Z INFO spiral_temp_test: │ │ input=Operator("(") │ │ 2024-03-20T12:26:18.198212Z INFO spiral_temp_test: │ │ input=Operator(")") │ │ 2024-03-20T12:26:18.198233Z INFO spiral_temp_test: │ │ input=Comment("O4$D&%<") │ │ 2024-03-20T12:26:18.198263Z INFO spiral_temp_test: │ │ input=Comment("^t_9Z*%+$\"<.H6-.{$K&Z`@") │ │ 2024-03-20T12:26:18.198289Z INFO spiral_temp_test: │ │ input=Comment("5$+&w8ZpX'$\\") │ │ 2024-03-20T12:26:18.198308Z INFO spiral_temp_test: │ │ input=Integer(5683902472450268976) │ │ 2024-03-20T12:26:18.198332Z INFO spiral_temp_test: │ │ input=Comment(".IT5t&Rm*>?O\\nn") │ │ 2024-03-20T12:26:18.198354Z INFO spiral_temp_test: │ │ input=Operator(")") │ │ 2024-03-20T12:26:18.198380Z INFO spiral_temp_test: │ │ input=Identifier("vw4KATc6QrfdEt6dSG26Wg400S") │ │ 2024-03-20T12:26:18.198404Z INFO spiral_temp_test: │ │ input=Comment("=>5~ljM:") │ │ 2024-03-20T12:26:18.198428Z INFO spiral_temp_test: │ │ input=Identifier("Knr") │ │ 2024-03-20T12:26:18.198455Z INFO spiral_temp_test: │ │ input=Identifier("B4K5FpX2mL6Nv8x3rq6Jq65w0Ejc3MtG") │ │ 2024-03-20T12:26:18.198475Z INFO spiral_temp_test: │ │ input=Integer(8023467457029814801) │ │ 2024-03-20T12:26:18.198492Z INFO spiral_temp_test: │ │ input=Integer(-7830705690003125760) │ │ 2024-03-20T12:26:18.198512Z INFO spiral_temp_test: │ │ input=Comment("N=\\.") │ │ 2024-03-20T12:26:18.198540Z INFO spiral_temp_test: │ │ input=StringLiteral("{/7>FaPg@v<_N%wv<?y@$:<+o&{#I") │ │ 2024-03-20T12:26:18.198568Z INFO spiral_temp_test: │ │ input=StringLiteral("Vn=h,b%?tz7S&X>=``1Q") │ │ 2024-03-20T12:26:18.198600Z INFO spiral_temp_test: │ │ input=Comment("=\\oiZUW[%\"<<O5Z\\=?\"RL<<") │ │ 2024-03-20T12:26:18.198623Z INFO spiral_temp_test: │ │ input=StringLiteral("L6w$qx&H") │ │ 2024-03-20T12:26:18.198647Z INFO spiral_temp_test: │ │ input=StringLiteral("'q$*$!^w8)KS=#?=") │ │ 2024-03-20T12:26:18.198672Z INFO spiral_temp_test: │ │ input=Identifier("j1xu6Z7wXmUozC35") │ │ 2024-03-20T12:26:18.198698Z INFO spiral_temp_test: │ │ input=Operator("/") │ │ 2024-03-20T12:26:18.198721Z INFO spiral_temp_test: │ │ input=Operator("*") │ │ 2024-03-20T12:26:18.198757Z INFO spiral_temp_test: │ │ input=StringLiteral("+{/~B>yx,j8f13{p-&:Wu]'`s") │ │ 2024-03-20T12:26:18.198782Z INFO spiral_temp_test: │ │ input=Integer(-3816500456834147271) │ │ 2024-03-20T12:26:18.198806Z INFO spiral_temp_test: │ │ input=StringLiteral("w}!V)'") │ │ 2024-03-20T12:26:18.198831Z INFO spiral_temp_test: │ │ input=Operator("(") │ │ 2024-03-20T12:26:18.198858Z INFO spiral_temp_test: │ │ input=StringLiteral("%q|;:ozAe+&V%'") │ │ 2024-03-20T12:26:18.198883Z INFO spiral_temp_test: │ │ input=Comment("") │ │ 2024-03-20T12:26:18.198902Z INFO spiral_temp_test: │ │ input=Integer(4552214538436055207) │ │ 2024-03-20T12:26:18.198930Z INFO spiral_temp_test: │ │ input=Comment(";") │ │ 2024-03-20T12:26:18.198952Z INFO spiral_temp_test: │ │ input=Operator("*") │ │ 2024-03-20T12:26:18.198982Z INFO spiral_temp_test: │ │ input=StringLiteral("WHe#R$$Qo%j:'B@O-%/6L") │ │ 2024-03-20T12:26:18.199036Z INFO spiral_temp_test: │ │ input=Identifier("pCSZHHzpla0lK11riZ") │ │ 2024-03-20T12:26:18.199059Z INFO spiral_temp_test: │ │ input=Operator("/") │ │ 2024-03-20T12:26:18.199083Z INFO spiral_temp_test: │ │ input=Identifier("uaITBcl2w4UqDL8OZ2") │ │ 2024-03-20T12:26:18.199119Z INFO spiral_temp_test: │ │ input=StringLiteral("k=oX, B&/%!8Zc`{*`E>=}}") │ │ 2024-03-20T12:26:18.199147Z INFO spiral_temp_test: │ │ input=StringLiteral("`V=@ *DS/,B_]kn.R?:/k)F<b:gl") │ │ 2024-03-20T12:26:18.199173Z INFO spiral_temp_test: │ │ input=StringLiteral("8{:jU`$AS`<p%/:9") │ │ 2024-03-20T12:26:18.199194Z INFO spiral_temp_test: │ │ input=Operator("(") │ │ 2024-03-20T12:26:18.199218Z INFO spiral_temp_test: │ │ input=StringLiteral("k'*l=%[-(*2h*%0Y/@&QE~H") │ │ 2024-03-20T12:26:18.199244Z INFO spiral_temp_test: │ │ input=StringLiteral("48!/L 4--v>nx|Iu lJ?S") │ │ 2024-03-20T12:26:18.199265Z INFO spiral_temp_test: │ │ input=Operator("=") │ │ 2024-03-20T12:26:18.199290Z INFO spiral_temp_test: │ │ input=Comment("AO.Hs@n`Y&Gl7\">:w^`I`{Y'") │ │ 2024-03-20T12:26:18.199318Z INFO spiral_temp_test: │ │ input=Identifier("HzivSvrhOXm56x0Jrq7PpC") │ │ 2024-03-20T12:26:18.199341Z INFO spiral_temp_test: │ │ input=Operator("(") │ │ 2024-03-20T12:26:18.199361Z INFO spiral_temp_test: │ │ input=Operator("=") │ │ 2024-03-20T12:26:18.199384Z INFO spiral_temp_test: │ │ input=StringLiteral("H9O<2/eb2k=:d(d{<") │ │ 2024-03-20T12:26:18.199404Z INFO spiral_temp_test: │ │ input=Operator("+") │ │ 2024-03-20T12:26:18.199420Z INFO spiral_temp_test: │ │ input=Integer(-6568209835284516058) │ │ 2024-03-20T12:26:18.199448Z INFO spiral_temp_test: │ │ input=Comment("*|/ =%~hW\"\\:#L9alHcNA(*8<?XW:") │ │ 2024-03-20T12:26:18.199473Z INFO spiral_temp_test: │ │ input=Comment("[=\\X3") │ │ 2024-03-20T12:26:18.199494Z INFO spiral_temp_test: │ │ input=Identifier("zvPAB3MyBj11F9") │ │ 2024-03-20T12:26:18.199516Z INFO spiral_temp_test: │ │ input=Identifier("uD2V6T9Vi7C9bug") │ │ 2024-03-20T12:26:18.199537Z INFO spiral_temp_test: │ │ input=Operator("=") │ │ 2024-03-20T12:26:18.199555Z INFO spiral_temp_test: │ │ input=Operator("+") │ │ 2024-03-20T12:26:18.199582Z INFO spiral_temp_test: │ │ input=StringLiteral("~%p?HR,J<uMtP{>-*<Y.&p'6`-3.P") │ │ 2024-03-20T12:26:18.199601Z INFO spiral_temp_test: │ │ input=Integer(-5543596815472746077) │ │ 2024-03-20T12:26:18.199618Z INFO spiral_temp_test: │ │ input=Integer(2317552868346805591) │ │ 2024-03-20T12:26:18.199643Z INFO spiral_temp_test: │ │ input=Identifier("x9GAOFFZs1kJPW72956keI97") │ │ 2024-03-20T12:26:18.199668Z INFO spiral_temp_test: │ │ input=Identifier("nwPG8odUATdl") │ │ 2024-03-20T12:26:18.199690Z INFO spiral_temp_test: │ │ input=Identifier("gE0axyLs8W1RRD2pBJh") │ │ 2024-03-20T12:26:18.199714Z INFO spiral_temp_test: │ │ input=Comment("$.Doc FxZLrlj/s?,A") │ │ 2024-03-20T12:26:18.199740Z INFO spiral_temp_test: │ │ input=Comment("9`'0?x?PBLa\\%P$Qx_clT\\Le CC&") │ │ 2024-03-20T12:26:18.199764Z INFO spiral_temp_test: │ │ input=Identifier("FANm1Z6rr25UosDvFL") │ │ 2024-03-20T12:26:18.199785Z INFO spiral_temp_test: │ │ input=StringLiteral("cNt&^<8'DN%") │ │ 2024-03-20T12:26:18.199812Z INFO spiral_temp_test: │ │ input=StringLiteral("*&<=|=b7w~W[,%Nt'*v*in#d*`92") │ │ 2024-03-20T12:26:18.199839Z INFO spiral_temp_test: │ │ input=Comment("b\\9 3O+&|Uu") │ │ 2024-03-20T12:26:18.199859Z INFO spiral_temp_test: │ │ input=Comment("%oFy *") │ │ 2024-03-20T12:26:18.199877Z INFO spiral_temp_test: │ │ input=Integer(-7425228001426171480) │ │ 2024-03-20T12:26:18.199895Z INFO spiral_temp_test: │ │ input=Identifier("EoJ") │ │ 2024-03-20T12:26:18.199915Z INFO spiral_temp_test: │ │ input=StringLiteral("^m") │ │ 2024-03-20T12:26:18.199935Z INFO spiral_temp_test: │ │ input=Operator("+") │ │ 2024-03-20T12:26:18.199961Z INFO spiral_temp_test: │ │ input=StringLiteral("y.A`O*Gc$<2|~?s&}SV{(Ap-%") │ │ 2024-03-20T12:26:18.199994Z INFO spiral_temp_test: │ │ input=Identifier("x4bC038rZUGK4tI5MlEWJ8kNb8zQXYzr") │ │ 2024-03-20T12:26:18.200016Z INFO spiral_temp_test: │ │ input=StringLiteral("^Q$^/: 'a&") │ │ 2024-03-20T12:26:18.200042Z INFO spiral_temp_test: │ │ input=Comment(":@a\"$\\/\\X7'$i<%&-=Q@~~=D/+v_t_") │ │ 2024-03-20T12:26:18.200065Z INFO spiral_temp_test: │ │ input=StringLiteral("S{C$/%U+W'`)") │ │ 2024-03-20T12:26:18.200085Z INFO spiral_temp_test: │ │ input=Operator(")") │ │ 2024-03-20T12:26:18.200111Z INFO spiral_temp_test: │ │ input=StringLiteral("UBj{l?h*Ovza=&3..`'D/?F#`P;*FA") │ │ 2024-03-20T12:26:18.200137Z INFO spiral_temp_test: │ │ input=Comment(":Z*-,~g/Sxq7'cb]'\\</G?j<R^") │ │ 2024-03-20T12:26:18.200164Z INFO spiral_temp_test: │ │ input=Integer(-7931143479346936336) │ │ 2024-03-20T12:26:18.200184Z INFO spiral_temp_test: │ │ input=StringLiteral("w8`$B~%&") │ │ 2024-03-20T12:26:18.200209Z INFO spiral_temp_test: │ │ input=Comment(".F/Po:4WS/Et=oq\"vZR$O\"x") │ │ 2024-03-20T12:26:18.200230Z INFO spiral_temp_test: │ │ input=StringLiteral("$Zlq'lM") │ │ 2024-03-20T12:26:18.200250Z INFO spiral_temp_test: │ │ input=Operator("/") │ │ 2024-03-20T12:26:18.200269Z INFO spiral_temp_test: │ │ input=Operator("*") │ │ 2024-03-20T12:26:18.200294Z INFO spiral_temp_test: │ │ input=Identifier("dzOP6oX2TlV257DR36M9KNuL") │ │ 2024-03-20T12:26:18.200317Z INFO spiral_temp_test: │ │ input=Operator("*") │ │ 2024-03-20T12:26:18.200338Z INFO spiral_temp_test: │ │ input=Operator("-") │ │ 2024-03-20T12:26:18.200360Z INFO spiral_temp_test: │ │ input=Comment("^c?1|?$^A$ri`") │ │ test prop_parse_format_idempotent ... ok │ │ test │ │ adding_and_then_removing_an_item_from_the_cart_leaves_the_cart_unchanged ... │ │ ok │ │ │ │ test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; │ │ finished in 0.09s │ │ │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── pwsh ──────────────────────────────────────────────────────────────────────── { . $ScriptDir/../../../../target/release/spiral_temp_test$(GetExecutableSuffix) } | Invoke-Block ╭─[ 4.66ms - stdout ]──────────────────────────────────────────────────────────╮ │ app=test │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ [NbConvertApp] Converting notebook build.dib.ipynb to html /opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. validate(nb) /opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 return _pygments_highlight( [NbConvertApp] Writing 382023 bytes to build.dib.html
In [ ]:
{ . "$ScriptDir/../apps/plot/build.ps1" } | Invoke-Block
Compiling num-traits v0.2.18 Compiling serde v1.0.197 Compiling serde_json v1.0.114 Compiling plotters-backend v0.3.5 Compiling plotters-svg v0.3.5 Compiling itoa v1.0.10 Compiling ryu v1.0.17 Compiling plotters v0.3.5 Compiling plot v0.0.1 (/home/runner/work/polyglot/polyglot/apps/plot) Finished `release` profile [optimized] target(s) in 7.28s
In [ ]:
{ . "$ScriptDir/../lib/spiral/build.ps1" } | Invoke-Block
00:00:00 #1 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #2 [Debug] executeAsync / options: { Command =
"dotnet "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 --default-int i32 --default-float f64"
WorkingDirectory = None
CancellationToken = Some System.Threading.CancellationToken
OnLine = Some <fun:main@464-1020> }
00:00:00 #3 [Verbose] > pwd: /home/runner/work/polyglot/polyglot/lib/spiral
00:00:00 #4 [Verbose] > dll_path: /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release
00:00:00 #5 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #6 [Verbose] waitForPortAccess / port: 13805 / retry: 0
00:00:00 #7 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #8 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #9 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #10 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #11 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #12 [Verbose] > Starting the Spiral Server. It is bound to: http://localhost:13805
00:00:00 #13 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #14 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #15 [Debug] sendJson / port: 13805 / json: {"Ping":true} / result.Length:
00:00:00 #16 [Verbose] awaitCompiler / Ping / result: Some(null) / port: 13805 / retry: 0
00:00:00 #17 [Verbose] > Server bound to: http://localhost:13805
00:00:00 #18 [Debug] executeAsync / options: { Command = "pwsh -c "../../scripts/invoke-dib.ps1 testing.dib""
WorkingDirectory = None
CancellationToken = Some System.Threading.CancellationToken
OnLine = None }
00:00:02 #19 [Verbose] >
00:00:02 #20 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:02 #21 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:02 #22 [Verbose] > │ # testing │
00:00:02 #23 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:02 #24 [Verbose] >
00:00:02 #25 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:02 #26 [Verbose] > inl __expect fn log b a =
00:00:02 #27 [Verbose] > inl result = fn a b
00:00:02 #28 [Verbose] > inl result =
00:00:02 #29 [Verbose] > result || join result
00:00:02 #30 [Verbose] > if log
00:00:02 #31 [Verbose] > then $"$\"__expect / actual: %A{!a} / expected: %A{!b}\""
00:00:02 #32 [Verbose] > else "__expect"
00:00:02 #33 [Verbose] > |> assert result
00:00:02 #34 [Verbose] >
00:00:02 #35 [Verbose] > inl __assert_approx_eq log e b a = __expect (fun a b => abs (b - a) < (e |>
00:00:02 #36 [Verbose] > optionm.defaultWith 0.00000001)) log b a
00:00:02 #37 [Verbose] > inl _assert_approx_eq e b a = __assert_approx_eq true e b a
00:00:02 #38 [Verbose] >
00:00:02 #39 [Verbose] > inl __assert_eq log b a = __expect (=) log b a
00:00:02 #40 [Verbose] > inl _assert_eq b a = __assert_eq true b a
00:00:02 #41 [Verbose] >
00:00:02 #42 [Verbose] > inl __assert_ne log b a = __expect (fun a b => a = b |> fun x => join x |> not)
00:00:02 #43 [Verbose] > log b a
00:00:02 #44 [Verbose] > inl _assert_ne b a = __assert_ne true b a
00:00:02 #45 [Verbose] >
00:00:02 #46 [Verbose] > inl __assert_gt log b a = __expect (>) log b a
00:00:02 #47 [Verbose] > inl _assert_gt b a = __assert_gt true b a
00:00:02 #48 [Verbose] >
00:00:02 #49 [Verbose] > inl __assert_ge log b a = __expect (>=) log b a
00:00:02 #50 [Verbose] > inl _assert_ge b a = __assert_ge true b a
00:00:02 #51 [Verbose] >
00:00:02 #52 [Verbose] > inl __assert_lt log b a = __expect (<) log b a
00:00:02 #53 [Verbose] > inl _assert_lt b a = __assert_lt true b a
00:00:02 #54 [Verbose] >
00:00:02 #55 [Verbose] > inl __assert_le log b a = __expect (<=) log b a
00:00:02 #56 [Verbose] > inl _assert_le b a = __assert_le true b a
00:00:02 #57 [Verbose] >
00:00:02 #58 [Verbose] > inl _throws (fn : () -> ()) : option string =
00:00:02 #59 [Verbose] > inl none = None : option string
00:00:02 #60 [Verbose] > inl some (s : string) = Some s
00:00:02 #61 [Verbose] > $"try !fn (); !none with ex -> !some ex.Message"
00:00:04 #62 [Verbose] > Building /tmp/!dotnet-repl/20240320-1226-3111-1174-179de54ec7bd/main.spi
00:00:06 #63 [Verbose] >
00:00:06 #64 [Verbose] > ╭─[ 3.72s - stdout ]───────────────────────────────────────────────────────────╮
00:00:06 #65 [Verbose] > │ () │
00:00:06 #66 [Verbose] > │ │
00:00:06 #67 [Verbose] > │ │
00:00:06 #68 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #69 [Verbose] >
00:00:06 #70 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 #71 [Verbose] > // // test
00:00:06 #72 [Verbose] >
00:00:06 #73 [Verbose] > 1f64
00:00:06 #74 [Verbose] > |> _assert_approx_eq (Some 3) 2
00:00:06 #75 [Verbose] > Building /tmp/!dotnet-repl/20240320-1226-3350-5050-59f73af49491/main.spi
00:00:06 #76 [Verbose] >
00:00:06 #77 [Verbose] > ╭─[ 527.77ms - stdout ]────────────────────────────────────────────────────────╮
00:00:06 #78 [Verbose] > │ let rec method0 () : unit = │
00:00:06 #79 [Verbose] > │ let v0 : string = $"__expect / actual: %A{1.0} / expected: %A{2.0}" │
00:00:06 #80 [Verbose] > │ () │
00:00:06 #81 [Verbose] > │ method0() │
00:00:06 #82 [Verbose] > │ │
00:00:06 #83 [Verbose] > │ │
00:00:06 #84 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #85 [Verbose] >
00:00:06 #86 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 #87 [Verbose] > // // test
00:00:06 #88 [Verbose] >
00:00:06 #89 [Verbose] > (dyn 1f64)
00:00:06 #90 [Verbose] > |> _assert_approx_eq (Some 3) 2
00:00:06 #91 [Verbose] > Building /tmp/!dotnet-repl/20240320-1226-3403-0317-0ee052bae5e1/main.spi
00:00:06 #92 [Verbose] >
00:00:06 #93 [Verbose] > ╭─[ 274.15ms - stdout ]────────────────────────────────────────────────────────╮
00:00:06 #94 [Verbose] > │ let rec method1 (v0 : bool) : bool = │
00:00:06 #95 [Verbose] > │ v0 │
00:00:06 #96 [Verbose] > │ and method0 () : unit = │
00:00:06 #97 [Verbose] > │ let v0 : float = 1.0 │
00:00:06 #98 [Verbose] > │ let v1 : float = 2.0 - v0 │
00:00:06 #99 [Verbose] > │ let v2 : float = -v1 │
00:00:06 #100 [Verbose] > │ let v3 : bool = v1 >= v2 │
00:00:06 #101 [Verbose] > │ let v4 : float = │
00:00:06 #102 [Verbose] > │ if v3 then │
00:00:06 #103 [Verbose] > │ v1 │
00:00:06 #104 [Verbose] > │ else │
00:00:06 #105 [Verbose] > │ v2 │
00:00:06 #106 [Verbose] > │ let v5 : bool = v4 < 3.0 │
00:00:06 #107 [Verbose] > │ let v7 : bool = │
00:00:06 #108 [Verbose] > │ if v5 then │
00:00:06 #109 [Verbose] > │ true │
00:00:06 #110 [Verbose] > │ else │
00:00:06 #111 [Verbose] > │ method1(v5) │
00:00:06 #112 [Verbose] > │ let v8 : string = $"__expect / actual: %A{v0} / expected: %A{2.0}" │
00:00:06 #113 [Verbose] > │ let v9 : bool = v7 = false │
00:00:06 #114 [Verbose] > │ if v9 then │
00:00:06 #115 [Verbose] > │ failwith<unit> v8 │
00:00:06 #116 [Verbose] > │ method0() │
00:00:06 #117 [Verbose] > │ │
00:00:06 #118 [Verbose] > │ │
00:00:06 #119 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #120 [Verbose] >
00:00:06 #121 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 #122 [Verbose] > inl print_and_return x =
00:00:06 #123 [Verbose] > $"printfn $\"print_and_return / x: {!x}\""
00:00:06 #124 [Verbose] > x
00:00:06 #125 [Verbose] > Building /tmp/!dotnet-repl/20240320-1226-3431-3105-3c68b177d088/main.spi
00:00:07 #126 [Verbose] >
00:00:07 #127 [Verbose] > ╭─[ 187.96ms - stdout ]────────────────────────────────────────────────────────╮
00:00:07 #128 [Verbose] > │ () │
00:00:07 #129 [Verbose] > │ │
00:00:07 #130 [Verbose] > │ │
00:00:07 #131 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #132 [Verbose] > [NbConvertApp] Converting notebook testing.dib.ipynb to html
00:00:07 #133 [Verbose] > /opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:00:07 #134 [Verbose] > validate(nb)
00:00:08 #135 [Verbose] > /opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:00:08 #136 [Verbose] > return _pygments_highlight(
00:00:08 #137 [Verbose] > [NbConvertApp] Writing 282877 bytes to testing.dib.html
00:00:08 #138 [Debug] executeAsync / exitCode: 0 / output.Length: 7588
00:00:08 #139 [Debug] main / executeCommand / exitCode: 0
00:00:00 #1 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #2 [Debug] executeAsync / options: { Command =
"dotnet "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 --default-int i32 --default-float f64"
WorkingDirectory = None
CancellationToken = Some System.Threading.CancellationToken
OnLine = Some <fun:main@464-1020> }
00:00:00 #3 [Verbose] > pwd: /home/runner/work/polyglot/polyglot/lib/spiral
00:00:00 #4 [Verbose] > dll_path: /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release
00:00:00 #5 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #6 [Verbose] waitForPortAccess / port: 13805 / retry: 0
00:00:00 #7 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #8 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #9 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #10 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #11 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #12 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #13 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #14 [Verbose] > Starting the Spiral Server. It is bound to: http://localhost:13805
00:00:00 #15 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #16 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #17 [Debug] sendJson / port: 13805 / json: {"Ping":true} / result.Length:
00:00:00 #18 [Verbose] awaitCompiler / Ping / result: Some(null) / port: 13805 / retry: 0
00:00:00 #19 [Verbose] > Server bound to: http://localhost:13805
00:00:00 #20 [Debug] executeAsync / options: { Command = "pwsh -c "../../scripts/invoke-dib.ps1 common.dib""
WorkingDirectory = None
CancellationToken = Some System.Threading.CancellationToken
OnLine = None }
00:00:02 #21 [Verbose] >
00:00:02 #22 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:02 #23 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:02 #24 [Verbose] > │ # common │
00:00:02 #25 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:02 #26 [Verbose] >
00:00:02 #27 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:02 #28 [Verbose] > // // test
00:00:02 #29 [Verbose] >
00:00:02 #30 [Verbose] > open testing
00:00:04 #31 [Verbose] > Building /tmp/!dotnet-repl/20240320-1226-4015-1559-1a05c49620e2/main.spi
00:00:06 #32 [Verbose] >
00:00:06 #33 [Verbose] > ╭─[ 3.65s - stdout ]───────────────────────────────────────────────────────────╮
00:00:06 #34 [Verbose] > │ () │
00:00:06 #35 [Verbose] > │ │
00:00:06 #36 [Verbose] > │ │
00:00:06 #37 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #38 [Verbose] >
00:00:06 #39 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:06 #40 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:06 #41 [Verbose] > │ ## types │
00:00:06 #42 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #43 [Verbose] >
00:00:06 #44 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 #45 [Verbose] > nominal any = $"obj"
00:00:06 #46 [Verbose] > nominal disposable = $"System.IDisposable"
00:00:06 #47 [Verbose] > nominal exn = $"exn"
00:00:06 #48 [Verbose] > nominal guid = $"System.Guid"
00:00:06 #49 [Verbose] > nominal unativeint = $"unativeint"
00:00:06 #50 [Verbose] >
00:00:06 #51 [Verbose] > let array x = x
00:00:06 #52 [Verbose] >
00:00:06 #53 [Verbose] > inl unativeint forall t {int}. (n : t) : unativeint =
00:00:06 #54 [Verbose] > $"unativeint !n"
00:00:06 #55 [Verbose] > Building /tmp/!dotnet-repl/20240320-1226-4251-5163-503abfd107b2/main.spi
00:00:06 #56 [Verbose] >
00:00:06 #57 [Verbose] > ╭─[ 159.19ms - stdout ]────────────────────────────────────────────────────────╮
00:00:06 #58 [Verbose] > │ () │
00:00:06 #59 [Verbose] > │ │
00:00:06 #60 [Verbose] > │ │
00:00:06 #61 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #62 [Verbose] >
00:00:06 #63 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:06 #64 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:06 #65 [Verbose] > │ ## prototype │
00:00:06 #66 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #67 [Verbose] >
00:00:06 #68 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 #69 [Verbose] > prototype (~:>) r : forall t. t -> r
00:00:06 #70 [Verbose] > prototype append t : t -> t -> t
00:00:06 #71 [Verbose] > prototype of_string t : string -> t
00:00:06 #72 [Verbose] > prototype to_string t : t -> string
00:00:06 #73 [Verbose] > Building /tmp/!dotnet-repl/20240320-1226-4267-6738-62e5ca0842ed/main.spi
00:00:06 #74 [Verbose] >
00:00:06 #75 [Verbose] > ╭─[ 157.51ms - stdout ]────────────────────────────────────────────────────────╮
00:00:06 #76 [Verbose] > │ () │
00:00:06 #77 [Verbose] > │ │
00:00:06 #78 [Verbose] > │ │
00:00:06 #79 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #80 [Verbose] >
00:00:06 #81 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:06 #82 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:06 #83 [Verbose] > │ ## null │
00:00:06 #84 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #85 [Verbose] >
00:00:06 #86 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 #87 [Verbose] > inl null forall t. () : t =
00:00:06 #88 [Verbose] > $"null |> unbox<`t>"
00:00:06 #89 [Verbose] > Building /tmp/!dotnet-repl/20240320-1226-4283-8327-801971c83954/main.spi
00:00:06 #90 [Verbose] >
00:00:06 #91 [Verbose] > ╭─[ 173.24ms - stdout ]────────────────────────────────────────────────────────╮
00:00:06 #92 [Verbose] > │ () │
00:00:06 #93 [Verbose] > │ │
00:00:06 #94 [Verbose] > │ │
00:00:06 #95 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #96 [Verbose] >
00:00:06 #97 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 #98 [Verbose] > inl i64 forall t. (x : t) : i64 =
00:00:06 #99 [Verbose] > $"int64 !x"
00:00:06 #100 [Verbose] > Building /tmp/!dotnet-repl/20240320-1226-4300-0058-045b27be8116/main.spi
00:00:06 #101 [Verbose] >
00:00:06 #102 [Verbose] > ╭─[ 148.27ms - stdout ]────────────────────────────────────────────────────────╮
00:00:06 #103 [Verbose] > │ () │
00:00:06 #104 [Verbose] > │ │
00:00:06 #105 [Verbose] > │ │
00:00:06 #106 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #107 [Verbose] >
00:00:06 #108 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:06 #109 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:06 #110 [Verbose] > │ ## pair │
00:00:06 #111 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #112 [Verbose] >
00:00:06 #113 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 #114 [Verbose] > type pair a b = $"(`a * `b)"
00:00:06 #115 [Verbose] >
00:00:06 #116 [Verbose] > inl pair x y =
00:00:06 #117 [Verbose] > x, y
00:00:06 #118 [Verbose] > Building /tmp/!dotnet-repl/20240320-1226-4315-1563-1b9a10689f41/main.spi
00:00:06 #119 [Verbose] >
00:00:06 #120 [Verbose] > ╭─[ 146.71ms - stdout ]────────────────────────────────────────────────────────╮
00:00:06 #121 [Verbose] > │ () │
00:00:06 #122 [Verbose] > │ │
00:00:06 #123 [Verbose] > │ │
00:00:06 #124 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #125 [Verbose] >
00:00:06 #126 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 #127 [Verbose] > // // test
00:00:06 #128 [Verbose] >
00:00:06 #129 [Verbose] > pair 1i32 2i32
00:00:06 #130 [Verbose] > |> _assert_eq (1, 2)
00:00:06 #131 [Verbose] > Building /tmp/!dotnet-repl/20240320-1226-4330-3032-30c4adbc725f/main.spi
00:00:07 #132 [Verbose] >
00:00:07 #133 [Verbose] > ╭─[ 527.53ms - stdout ]────────────────────────────────────────────────────────╮
00:00:07 #134 [Verbose] > │ let rec method0 () : unit = │
00:00:07 #135 [Verbose] > │ let v0 : string = $"__expect / actual: %A{struct (1, 2)} / expected: │
00:00:07 #136 [Verbose] > │ %A{struct (1, 2)}" │
00:00:07 #137 [Verbose] > │ () │
00:00:07 #138 [Verbose] > │ method0() │
00:00:07 #139 [Verbose] > │ │
00:00:07 #140 [Verbose] > │ │
00:00:07 #141 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #142 [Verbose] >
00:00:07 #143 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:07 #144 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:07 #145 [Verbose] > │ ## new_pair │
00:00:07 #146 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #147 [Verbose] >
00:00:07 #148 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:07 #149 [Verbose] > inl new_pair forall a b. (a : a) (b : b) : pair a b =
00:00:07 #150 [Verbose] > $"!a, !b"
00:00:07 #151 [Verbose] > Building /tmp/!dotnet-repl/20240320-1226-4383-8324-875c55c1ad41/main.spi
00:00:07 #152 [Verbose] >
00:00:07 #153 [Verbose] > ╭─[ 132.77ms - stdout ]────────────────────────────────────────────────────────╮
00:00:07 #154 [Verbose] > │ () │
00:00:07 #155 [Verbose] > │ │
00:00:07 #156 [Verbose] > │ │
00:00:07 #157 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #158 [Verbose] >
00:00:07 #159 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:07 #160 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:07 #161 [Verbose] > │ ## from_pair │
00:00:07 #162 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #163 [Verbose] >
00:00:07 #164 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:07 #165 [Verbose] > inl from_pair forall a b. (pair : pair a b) : a * b =
00:00:07 #166 [Verbose] > $"let (a, b) = !pair"
00:00:07 #167 [Verbose] > $"a", $"b"
00:00:07 #168 [Verbose] > Building /tmp/!dotnet-repl/20240320-1226-4396-9658-9b66a4967ea3/main.spi
00:00:07 #169 [Verbose] >
00:00:07 #170 [Verbose] > ╭─[ 140.99ms - stdout ]────────────────────────────────────────────────────────╮
00:00:07 #171 [Verbose] > │ () │
00:00:07 #172 [Verbose] > │ │
00:00:07 #173 [Verbose] > │ │
00:00:07 #174 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #175 [Verbose] >
00:00:07 #176 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:07 #177 [Verbose] > // // test
00:00:07 #178 [Verbose] >
00:00:07 #179 [Verbose] > new_pair "a" 1i32
00:00:07 #180 [Verbose] > |> from_pair
00:00:07 #181 [Verbose] > |> _assert_eq ("a", 1i32)
00:00:07 #182 [Verbose] > Building /tmp/!dotnet-repl/20240320-1226-4410-1073-1d31961f5966/main.spi
00:00:07 #183 [Verbose] >
00:00:07 #184 [Verbose] > ╭─[ 237.00ms - stdout ]────────────────────────────────────────────────────────╮
00:00:07 #185 [Verbose] > │ let rec method1 (v0 : bool) : bool = │
00:00:07 #186 [Verbose] > │ v0 │
00:00:07 #187 [Verbose] > │ and method0 () : unit = │
00:00:07 #188 [Verbose] > │ let v0 : string = "a" │
00:00:07 #189 [Verbose] > │ let v1 : (string * int32) = v0, 1 │
00:00:07 #190 [Verbose] > │ let (a, b) = v1 │
00:00:07 #191 [Verbose] > │ let v2 : string = a │
00:00:07 #192 [Verbose] > │ let v3 : int32 = b │
00:00:07 #193 [Verbose] > │ let v4 : bool = v2 = "a" │
00:00:07 #194 [Verbose] > │ let v6 : bool = │
00:00:07 #195 [Verbose] > │ if v4 then │
00:00:07 #196 [Verbose] > │ let v5 : bool = v3 = 1 │
00:00:07 #197 [Verbose] > │ v5 │
00:00:07 #198 [Verbose] > │ else │
00:00:07 #199 [Verbose] > │ false │
00:00:07 #200 [Verbose] > │ let v8 : bool = │
00:00:07 #201 [Verbose] > │ if v6 then │
00:00:07 #202 [Verbose] > │ true │
00:00:07 #203 [Verbose] > │ else │
00:00:07 #204 [Verbose] > │ method1(v6) │
00:00:07 #205 [Verbose] > │ let v9 : string = $"__expect / actual: %A{struct (v2, v3)} / expected: │
00:00:07 #206 [Verbose] > │ %A{struct (v0, 1)}" │
00:00:07 #207 [Verbose] > │ let v10 : bool = v8 = false │
00:00:07 #208 [Verbose] > │ if v10 then │
00:00:07 #209 [Verbose] > │ failwith<unit> v9 │
00:00:07 #210 [Verbose] > │ method0() │
00:00:07 #211 [Verbose] > │ │
00:00:07 #212 [Verbose] > │ │
00:00:07 #213 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #214 [Verbose] >
00:00:07 #215 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:07 #216 [Verbose] > // // test
00:00:07 #217 [Verbose] >
00:00:07 #218 [Verbose] > new_pair "a" (new_pair 1i32 "b")
00:00:07 #219 [Verbose] > |> from_pair
00:00:07 #220 [Verbose] > Building /tmp/!dotnet-repl/20240320-1226-4434-3459-338585489b9a/main.spi
00:00:08 #221 [Verbose] >
00:00:08 #222 [Verbose] > ╭─[ 264.38ms - return value ]──────────────────────────────────────────────────╮
00:00:08 #223 [Verbose] > │ <details open="open" class="dni-treeview"><summary><span │
00:00:08 #224 [Verbose] > │ class="dni-code-hint"><code>(a, (1, │
00:00:08 #225 [Verbose] > │ b))</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><t │
00:00:08 #226 [Verbose] > │ d>Item1</td><td><div │
00:00:08 #227 [Verbose] > │ class="dni-plaintext"><pre>a</pre></div></td></tr><tr><td>Item2</td><td><det │
00:00:08 #228 [Verbose] > │ ails class="dni-treeview"><summary><span class="dni-code-hint"><code>(1, │
00:00:08 #229 [Verbose] > │ b)</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
00:00:08 #230 [Verbose] > │ >Item1</td><td><div │
00:00:08 #231 [Verbose] > │ class="dni-plaintext"><pre>1</pre></div></td></tr><tr><td>Item2</td><td><div │
00:00:08 #232 [Verbose] > │ class="dni-plaintext"><pre>b</pre></div></td></tr></tbody></table></div></de │
00:00:08 #233 [Verbose] > │ tails></td></tr></tbody></table></div></details><style> │
00:00:08 #234 [Verbose] > │ .dni-code-hint { │
00:00:08 #235 [Verbose] > │ font-style: italic; │
00:00:08 #236 [Verbose] > │ overflow: hidden; │
00:00:08 #237 [Verbose] > │ white-space: nowrap; │
00:00:08 #238 [Verbose] > │ } │
00:00:08 #239 [Verbose] > │ .dni-treeview { │
00:00:08 #240 [Verbose] > │ ... │
00:00:08 #241 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #242 [Verbose] >
00:00:08 #243 [Verbose] > ╭─[ 273.59ms - stdout ]────────────────────────────────────────────────────────╮
00:00:08 #244 [Verbose] > │ let rec method0 () : struct (string * (int32 * string)) = │
00:00:08 #245 [Verbose] > │ let v0 : string = "b" │
00:00:08 #246 [Verbose] > │ let v1 : (int32 * string) = 1, v0 │
00:00:08 #247 [Verbose] > │ let v2 : string = "a" │
00:00:08 #248 [Verbose] > │ let v3 : (string * (int32 * string)) = v2, v1 │
00:00:08 #249 [Verbose] > │ let (a, b) = v3 │
00:00:08 #250 [Verbose] > │ let v4 : string = a │
00:00:08 #251 [Verbose] > │ let v5 : (int32 * string) = b │
00:00:08 #252 [Verbose] > │ struct (v4, v5) │
00:00:08 #253 [Verbose] > │ method0() │
00:00:08 #254 [Verbose] > │ │
00:00:08 #255 [Verbose] > │ │
00:00:08 #256 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #257 [Verbose] >
00:00:08 #258 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:08 #259 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:08 #260 [Verbose] > │ ## log_level_type │
00:00:08 #261 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #262 [Verbose] >
00:00:08 #263 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:08 #264 [Verbose] > union log_level_type =
00:00:08 #265 [Verbose] > | Verbose
00:00:08 #266 [Verbose] > | Debug
00:00:08 #267 [Verbose] > | Info
00:00:08 #268 [Verbose] > | Warning
00:00:08 #269 [Verbose] > | Critical
00:00:08 #270 [Verbose] >
00:00:08 #271 [Verbose] > instance to_string log_level_type = function
00:00:08 #272 [Verbose] > | Verbose => "Verbose"
00:00:08 #273 [Verbose] > | Debug => "Debug"
00:00:08 #274 [Verbose] > | Info => "Info"
00:00:08 #275 [Verbose] > | Warning => "Warning"
00:00:08 #276 [Verbose] > | Critical => "Critical"
00:00:08 #277 [Verbose] >
00:00:08 #278 [Verbose] > instance of_string log_level_type = function
00:00:08 #279 [Verbose] > | "Verbose" => Verbose
00:00:08 #280 [Verbose] > | "Debug" => Debug
00:00:08 #281 [Verbose] > | "Info" => Info
00:00:08 #282 [Verbose] > | "Warning" => Warning
00:00:08 #283 [Verbose] > | "Critical" => Critical
00:00:08 #284 [Verbose] > Building /tmp/!dotnet-repl/20240320-1226-4462-6219-647e0f6df634/main.spi
00:00:08 #285 [Verbose] >
00:00:08 #286 [Verbose] > ╭─[ 131.93ms - stdout ]────────────────────────────────────────────────────────╮
00:00:08 #287 [Verbose] > │ () │
00:00:08 #288 [Verbose] > │ │
00:00:08 #289 [Verbose] > │ │
00:00:08 #290 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #291 [Verbose] >
00:00:08 #292 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:08 #293 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:08 #294 [Verbose] > │ ## to_any │
00:00:08 #295 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #296 [Verbose] >
00:00:08 #297 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:08 #298 [Verbose] > inl to_any forall t. (obj : t) : any =
00:00:08 #299 [Verbose] > $"!obj"
00:00:08 #300 [Verbose] >
00:00:08 #301 [Verbose] > instance (~:>) any = to_any
00:00:08 #302 [Verbose] > Building /tmp/!dotnet-repl/20240320-1226-4475-7550-70382121ef7f/main.spi
00:00:08 #303 [Verbose] >
00:00:08 #304 [Verbose] > ╭─[ 129.89ms - stdout ]────────────────────────────────────────────────────────╮
00:00:08 #305 [Verbose] > │ () │
00:00:08 #306 [Verbose] > │ │
00:00:08 #307 [Verbose] > │ │
00:00:08 #308 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #309 [Verbose] >
00:00:08 #310 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:08 #311 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:08 #312 [Verbose] > │ ## (/@) │
00:00:08 #313 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #314 [Verbose] >
00:00:08 #315 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:08 #316 [Verbose] > inl (/@) a b =
00:00:08 #317 [Verbose] > b |> append a
00:00:08 #318 [Verbose] > Building /tmp/!dotnet-repl/20240320-1226-4488-8859-822a85bf9ca1/main.spi
00:00:08 #319 [Verbose] >
00:00:08 #320 [Verbose] > ╭─[ 131.85ms - stdout ]────────────────────────────────────────────────────────╮
00:00:08 #321 [Verbose] > │ () │
00:00:08 #322 [Verbose] > │ │
00:00:08 #323 [Verbose] > │ │
00:00:08 #324 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #325 [Verbose] >
00:00:08 #326 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:08 #327 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:08 #328 [Verbose] > │ ## unbox │
00:00:08 #329 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #330 [Verbose] >
00:00:08 #331 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:08 #332 [Verbose] > inl unbox forall t u. (x : t) : u =
00:00:08 #333 [Verbose] > $"!x |> unbox<`u>"
00:00:08 #334 [Verbose] > Building /tmp/!dotnet-repl/20240320-1226-4501-0191-084757202e98/main.spi
00:00:08 #335 [Verbose] >
00:00:08 #336 [Verbose] > ╭─[ 130.31ms - stdout ]────────────────────────────────────────────────────────╮
00:00:08 #337 [Verbose] > │ () │
00:00:08 #338 [Verbose] > │ │
00:00:08 #339 [Verbose] > │ │
00:00:08 #340 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #341 [Verbose] >
00:00:08 #342 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:08 #343 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:08 #344 [Verbose] > │ ## (/+) │
00:00:08 #345 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #346 [Verbose] >
00:00:08 #347 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:08 #348 [Verbose] > inl (/+) forall t. (a : t) (b : t) : t =
00:00:08 #349 [Verbose] > $"!a + !b"
00:00:08 #350 [Verbose] > Building /tmp/!dotnet-repl/20240320-1226-4515-1505-177ee243f567/main.spi
00:00:08 #351 [Verbose] >
00:00:08 #352 [Verbose] > ╭─[ 131.33ms - stdout ]────────────────────────────────────────────────────────╮
00:00:08 #353 [Verbose] > │ () │
00:00:08 #354 [Verbose] > │ │
00:00:08 #355 [Verbose] > │ │
00:00:08 #356 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #357 [Verbose] >
00:00:08 #358 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:08 #359 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:08 #360 [Verbose] > │ ## (||>) │
00:00:08 #361 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #362 [Verbose] >
00:00:08 #363 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:08 #364 [Verbose] > inl (||>) (arg1, arg2) fn =
00:00:08 #365 [Verbose] > arg2 |> fn arg1
00:00:08 #366 [Verbose] > Building /tmp/!dotnet-repl/20240320-1226-4528-2832-288210a31702/main.spi
00:00:08 #367 [Verbose] >
00:00:08 #368 [Verbose] > ╭─[ 133.72ms - stdout ]────────────────────────────────────────────────────────╮
00:00:08 #369 [Verbose] > │ () │
00:00:08 #370 [Verbose] > │ │
00:00:08 #371 [Verbose] > │ │
00:00:08 #372 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #373 [Verbose] >
00:00:08 #374 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:08 #375 [Verbose] > // // test
00:00:08 #376 [Verbose] >
00:00:08 #377 [Verbose] > (3i32, 2i32)
00:00:08 #378 [Verbose] > ||> fun a b => a - b
00:00:08 #379 [Verbose] > |> _assert_eq 1
00:00:09 #380 [Verbose] > Building /tmp/!dotnet-repl/20240320-1226-4541-4170-4c2003634633/main.spi
00:00:09 #381 [Verbose] >
00:00:09 #382 [Verbose] > ╭─[ 159.89ms - stdout ]────────────────────────────────────────────────────────╮
00:00:09 #383 [Verbose] > │ let rec method0 () : unit = │
00:00:09 #384 [Verbose] > │ let v0 : string = $"__expect / actual: %A{1} / expected: %A{1}" │
00:00:09 #385 [Verbose] > │ () │
00:00:09 #386 [Verbose] > │ method0() │
00:00:09 #387 [Verbose] > │ │
00:00:09 #388 [Verbose] > │ │
00:00:09 #389 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #390 [Verbose] >
00:00:09 #391 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:09 #392 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:09 #393 [Verbose] > │ ## flip │
00:00:09 #394 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #395 [Verbose] >
00:00:09 #396 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:09 #397 [Verbose] > inl flip fn a b =
00:00:09 #398 [Verbose] > fn b a
00:00:09 #399 [Verbose] > Building /tmp/!dotnet-repl/20240320-1226-4557-5785-54623b8475a6/main.spi
00:00:09 #400 [Verbose] >
00:00:09 #401 [Verbose] > ╭─[ 128.10ms - stdout ]────────────────────────────────────────────────────────╮
00:00:09 #402 [Verbose] > │ () │
00:00:09 #403 [Verbose] > │ │
00:00:09 #404 [Verbose] > │ │
00:00:09 #405 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #406 [Verbose] >
00:00:09 #407 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:09 #408 [Verbose] > // // test
00:00:09 #409 [Verbose] >
00:00:09 #410 [Verbose] > (1i32, 2i32)
00:00:09 #411 [Verbose] > ||> flip pair
00:00:09 #412 [Verbose] > |> _assert_eq (2, 1)
00:00:09 #413 [Verbose] > Building /tmp/!dotnet-repl/20240320-1226-4570-7068-7c15c63e435a/main.spi
00:00:09 #414 [Verbose] >
00:00:09 #415 [Verbose] > ╭─[ 138.36ms - stdout ]────────────────────────────────────────────────────────╮
00:00:09 #416 [Verbose] > │ let rec method0 () : unit = │
00:00:09 #417 [Verbose] > │ let v0 : string = $"__expect / actual: %A{struct (2, 1)} / expected: │
00:00:09 #418 [Verbose] > │ %A{struct (2, 1)}" │
00:00:09 #419 [Verbose] > │ () │
00:00:09 #420 [Verbose] > │ method0() │
00:00:09 #421 [Verbose] > │ │
00:00:09 #422 [Verbose] > │ │
00:00:09 #423 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #424 [Verbose] >
00:00:09 #425 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:09 #426 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:09 #427 [Verbose] > │ ## join_body │
00:00:09 #428 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #429 [Verbose] >
00:00:09 #430 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:09 #431 [Verbose] > inl join_body body acc x =
00:00:09 #432 [Verbose] > if var_is x |> not
00:00:09 #433 [Verbose] > then body acc x
00:00:09 #434 [Verbose] > else
00:00:09 #435 [Verbose] > inl acc = dyn acc
00:00:09 #436 [Verbose] > join body acc x
00:00:09 #437 [Verbose] > Building /tmp/!dotnet-repl/20240320-1226-4584-8463-8f0658962b8d/main.spi
00:00:09 #438 [Verbose] >
00:00:09 #439 [Verbose] > ╭─[ 130.25ms - stdout ]────────────────────────────────────────────────────────╮
00:00:09 #440 [Verbose] > │ () │
00:00:09 #441 [Verbose] > │ │
00:00:09 #442 [Verbose] > │ │
00:00:09 #443 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #444 [Verbose] >
00:00:09 #445 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:09 #446 [Verbose] > // // test
00:00:09 #447 [Verbose] >
00:00:09 #448 [Verbose] > inl rec fold_list f s = function
00:00:09 #449 [Verbose] > | Cons (x, x') => fold_list f (f s x) x'
00:00:09 #450 [Verbose] > | Nil => s
00:00:09 #451 [Verbose] > Building /tmp/!dotnet-repl/20240320-1226-4597-9771-91d3f7cb9565/main.spi
00:00:09 #452 [Verbose] >
00:00:09 #453 [Verbose] > ╭─[ 131.84ms - stdout ]────────────────────────────────────────────────────────╮
00:00:09 #454 [Verbose] > │ () │
00:00:09 #455 [Verbose] > │ │
00:00:09 #456 [Verbose] > │ │
00:00:09 #457 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #458 [Verbose] >
00:00:09 #459 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:09 #460 [Verbose] > // // test
00:00:09 #461 [Verbose] >
00:00:09 #462 [Verbose] > [[5i32; 4; join 3; 2; 1]]
00:00:09 #463 [Verbose] > |> fold_list (+) 0
00:00:09 #464 [Verbose] > |> _assert_eq 15
00:00:09 #465 [Verbose] > Building /tmp/!dotnet-repl/20240320-1226-4610-1091-1ca80d0daccf/main.spi
00:00:09 #466 [Verbose] >
00:00:09 #467 [Verbose] > ╭─[ 188.08ms - stdout ]────────────────────────────────────────────────────────╮
00:00:09 #468 [Verbose] > │ let rec method1 () : int32 = │
00:00:09 #469 [Verbose] > │ 3 │
00:00:09 #470 [Verbose] > │ and method2 (v0 : bool) : bool = │
00:00:09 #471 [Verbose] > │ v0 │
00:00:09 #472 [Verbose] > │ and method0 () : unit = │
00:00:09 #473 [Verbose] > │ let v0 : int32 = method1() │
00:00:09 #474 [Verbose] > │ let v1 : int32 = 9 + v0 │
00:00:09 #475 [Verbose] > │ let v2 : int32 = v1 + 2 │
00:00:09 #476 [Verbose] > │ let v3 : int32 = v2 + 1 │
00:00:09 #477 [Verbose] > │ let v4 : bool = v3 = 15 │
00:00:09 #478 [Verbose] > │ let v6 : bool = │
00:00:09 #479 [Verbose] > │ if v4 then │
00:00:09 #480 [Verbose] > │ true │
00:00:09 #481 [Verbose] > │ else │
00:00:09 #482 [Verbose] > │ method2(v4) │
00:00:09 #483 [Verbose] > │ let v7 : string = $"__expect / actual: %A{v3} / expected: %A{15}" │
00:00:09 #484 [Verbose] > │ let v8 : bool = v6 = false │
00:00:09 #485 [Verbose] > │ if v8 then │
00:00:09 #486 [Verbose] > │ failwith<unit> v7 │
00:00:09 #487 [Verbose] > │ method0() │
00:00:09 #488 [Verbose] > │ │
00:00:09 #489 [Verbose] > │ │
00:00:09 #490 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #491 [Verbose] >
00:00:09 #492 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:09 #493 [Verbose] > // // test
00:00:09 #494 [Verbose] >
00:00:09 #495 [Verbose] > [[5i32; 4; join 3; 2; 1]]
00:00:09 #496 [Verbose] > |> fold_list (join_body (+)) 0
00:00:09 #497 [Verbose] > |> _assert_eq 15
00:00:09 #498 [Verbose] > Building /tmp/!dotnet-repl/20240320-1226-4629-2985-2c96b8b40760/main.spi
00:00:10 #499 [Verbose] >
00:00:10 #500 [Verbose] > ╭─[ 144.08ms - stdout ]────────────────────────────────────────────────────────╮
00:00:10 #501 [Verbose] > │ let rec method1 () : int32 = │
00:00:10 #502 [Verbose] > │ 3 │
00:00:10 #503 [Verbose] > │ and method2 (v0 : int32, v1 : int32) : int32 = │
00:00:10 #504 [Verbose] > │ let v2 : int32 = v1 + v0 │
00:00:10 #505 [Verbose] > │ v2 │
00:00:10 #506 [Verbose] > │ and method3 (v0 : bool) : bool = │
00:00:10 #507 [Verbose] > │ v0 │
00:00:10 #508 [Verbose] > │ and method0 () : unit = │
00:00:10 #509 [Verbose] > │ let v0 : int32 = method1() │
00:00:10 #510 [Verbose] > │ let v1 : int32 = 9 │
00:00:10 #511 [Verbose] > │ let v2 : int32 = method2(v0, v1) │
00:00:10 #512 [Verbose] > │ let v3 : int32 = v2 + 2 │
00:00:10 #513 [Verbose] > │ let v4 : int32 = v3 + 1 │
00:00:10 #514 [Verbose] > │ let v5 : bool = v4 = 15 │
00:00:10 #515 [Verbose] > │ let v7 : bool = │
00:00:10 #516 [Verbose] > │ if v5 then │
00:00:10 #517 [Verbose] > │ true │
00:00:10 #518 [Verbose] > │ else │
00:00:10 #519 [Verbose] > │ method3(v5) │
00:00:10 #520 [Verbose] > │ let v8 : string = $"__expect / actual: %A{v4} / expected: %A{15}" │
00:00:10 #521 [Verbose] > │ let v9 : bool = v7 = false │
00:00:10 #522 [Verbose] > │ if v9 then │
00:00:10 #523 [Verbose] > │ failwith<unit> v8 │
00:00:10 #524 [Verbose] > │ method0() │
00:00:10 #525 [Verbose] > │ │
00:00:10 #526 [Verbose] > │ │
00:00:10 #527 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:10 #528 [Verbose] >
00:00:10 #529 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:10 #530 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:10 #531 [Verbose] > │ ## join_body_unit │
00:00:10 #532 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:10 #533 [Verbose] >
00:00:10 #534 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:10 #535 [Verbose] > inl join_body_unit body d x =
00:00:10 #536 [Verbose] > if var_is d |> not
00:00:10 #537 [Verbose] > then body x
00:00:10 #538 [Verbose] > else
00:00:10 #539 [Verbose] > inl x = dyn x
00:00:10 #540 [Verbose] > join body x
00:00:10 #541 [Verbose] > Building /tmp/!dotnet-repl/20240320-1226-4644-4449-417f1e669849/main.spi
00:00:10 #542 [Verbose] >
00:00:10 #543 [Verbose] > ╭─[ 145.78ms - stdout ]────────────────────────────────────────────────────────╮
00:00:10 #544 [Verbose] > │ () │
00:00:10 #545 [Verbose] > │ │
00:00:10 #546 [Verbose] > │ │
00:00:10 #547 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:10 #548 [Verbose] >
00:00:10 #549 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:10 #550 [Verbose] > // // test
00:00:10 #551 [Verbose] >
00:00:10 #552 [Verbose] > [[5i32; 4; join 3; 2; 1]]
00:00:10 #553 [Verbose] > |> fold_list (fun acc n => join_body_unit ((+) acc) n n) 0
00:00:10 #554 [Verbose] > |> _assert_eq 15
00:00:10 #555 [Verbose] > Building /tmp/!dotnet-repl/20240320-1226-4659-5913-5abe3f74ccbf/main.spi
00:00:10 #556 [Verbose] >
00:00:10 #557 [Verbose] > ╭─[ 163.19ms - stdout ]────────────────────────────────────────────────────────╮
00:00:10 #558 [Verbose] > │ let rec method1 () : int32 = │
00:00:10 #559 [Verbose] > │ 3 │
00:00:10 #560 [Verbose] > │ and method2 (v0 : int32) : int32 = │
00:00:10 #561 [Verbose] > │ let v1 : int32 = 9 + v0 │
00:00:10 #562 [Verbose] > │ v1 │
00:00:10 #563 [Verbose] > │ and method3 (v0 : bool) : bool = │
00:00:10 #564 [Verbose] > │ v0 │
00:00:10 #565 [Verbose] > │ and method0 () : unit = │
00:00:10 #566 [Verbose] > │ let v0 : int32 = method1() │
00:00:10 #567 [Verbose] > │ let v1 : int32 = method2(v0) │
00:00:10 #568 [Verbose] > │ let v2 : int32 = v1 + 2 │
00:00:10 #569 [Verbose] > │ let v3 : int32 = v2 + 1 │
00:00:10 #570 [Verbose] > │ let v4 : bool = v3 = 15 │
00:00:10 #571 [Verbose] > │ let v6 : bool = │
00:00:10 #572 [Verbose] > │ if v4 then │
00:00:10 #573 [Verbose] > │ true │
00:00:10 #574 [Verbose] > │ else │
00:00:10 #575 [Verbose] > │ method3(v4) │
00:00:10 #576 [Verbose] > │ let v7 : string = $"__expect / actual: %A{v3} / expected: %A{15}" │
00:00:10 #577 [Verbose] > │ let v8 : bool = v6 = false │
00:00:10 #578 [Verbose] > │ if v8 then │
00:00:10 #579 [Verbose] > │ failwith<unit> v7 │
00:00:10 #580 [Verbose] > │ method0() │
00:00:10 #581 [Verbose] > │ │
00:00:10 #582 [Verbose] > │ │
00:00:10 #583 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:10 #584 [Verbose] >
00:00:10 #585 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:10 #586 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:10 #587 [Verbose] > │ ## run_target │
00:00:10 #588 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:10 #589 [Verbose] >
00:00:10 #590 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:10 #591 [Verbose] > union target_runtime =
00:00:10 #592 [Verbose] > | Native
00:00:10 #593 [Verbose] > | Wasm
00:00:10 #594 [Verbose] >
00:00:10 #595 [Verbose] > union target =
00:00:10 #596 [Verbose] > | Rust : target_runtime
00:00:10 #597 [Verbose] > | Fsharp
00:00:10 #598 [Verbose] >
00:00:10 #599 [Verbose] > inl run_target forall t. (fn : target -> (() -> t)) : t =
00:00:10 #600 [Verbose] > $"let mutable result = None"
00:00:10 #601 [Verbose] > $"#if FABLE_COMPILER_RUST"
00:00:10 #602 [Verbose] > $"#if \!WASM"
00:00:10 #603 [Verbose] > fn (Rust Native) () |> fun x => $"!x"
00:00:10 #604 [Verbose] > $"#else"
00:00:10 #605 [Verbose] > fn (Rust Wasm) () |> fun x => $"!x"
00:00:10 #606 [Verbose] > $"#endif"
00:00:10 #607 [Verbose] > $"#else"
00:00:10 #608 [Verbose] > fn Fsharp () |> fun x => $"!x"
00:00:10 #609 [Verbose] > $"#endif"
00:00:10 #610 [Verbose] > $"|> fun x -> result <- Some x"
00:00:10 #611 [Verbose] > $"result |> Option.get"
00:00:10 #612 [Verbose] > Building /tmp/!dotnet-repl/20240320-1226-4675-7564-79d84e2ddbe8/main.spi
00:00:10 #613 [Verbose] >
00:00:10 #614 [Verbose] > ╭─[ 129.14ms - stdout ]────────────────────────────────────────────────────────╮
00:00:10 #615 [Verbose] > │ () │
00:00:10 #616 [Verbose] > │ │
00:00:10 #617 [Verbose] > │ │
00:00:10 #618 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:10 #619 [Verbose] >
00:00:10 #620 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:10 #621 [Verbose] > // // test
00:00:10 #622 [Verbose] >
00:00:10 #623 [Verbose] > run_target function
00:00:10 #624 [Verbose] > | Fsharp => fun () => $"1uy"
00:00:10 #625 [Verbose] > | Rust (Native) => fun () => $"2uy"
00:00:10 #626 [Verbose] > | Rust (Wasm) => fun () => $"3uy"
00:00:10 #627 [Verbose] > |> _assert_eq 1u8
00:00:10 #628 [Verbose] > Building /tmp/!dotnet-repl/20240320-1226-4688-8857-825fca97eebb/main.spi
00:00:10 #629 [Verbose] >
00:00:10 #630 [Verbose] > ╭─[ 233.02ms - stdout ]────────────────────────────────────────────────────────╮
00:00:10 #631 [Verbose] > │ let rec method1 (v0 : bool) : bool = │
00:00:10 #632 [Verbose] > │ v0 │
00:00:10 #633 [Verbose] > │ and method0 () : unit = │
00:00:10 #634 [Verbose] > │ let mutable result = None │
00:00:10 #635 [Verbose] > │ #if FABLE_COMPILER_RUST │
00:00:10 #636 [Verbose] > │ #if !WASM │
00:00:10 #637 [Verbose] > │ let v0 : uint8 = 2uy │
00:00:10 #638 [Verbose] > │ v0 │
00:00:10 #639 [Verbose] > │ #else │
00:00:10 #640 [Verbose] > │ let v1 : uint8 = 3uy │
00:00:10 #641 [Verbose] > │ v1 │
00:00:10 #642 [Verbose] > │ #endif │
00:00:10 #643 [Verbose] > │ #else │
00:00:10 #644 [Verbose] > │ let v2 : uint8 = 1uy │
00:00:10 #645 [Verbose] > │ v2 │
00:00:10 #646 [Verbose] > │ #endif │
00:00:10 #647 [Verbose] > │ |> fun x -> result <- Some x │
00:00:10 #648 [Verbose] > │ let v3 : uint8 = result |> Option.get │
00:00:10 #649 [Verbose] > │ let v4 : bool = v3 = 1uy │
00:00:10 #650 [Verbose] > │ let v6 : bool = │
00:00:10 #651 [Verbose] > │ if v4 then │
00:00:10 #652 [Verbose] > │ true │
00:00:10 #653 [Verbose] > │ else │
00:00:10 #654 [Verbose] > │ method1(v4) │
00:00:10 #655 [Verbose] > │ let v7 : string = $"__expect / actual: %A{v3} / expected: %A{1uy}" │
00:00:10 #656 [Verbose] > │ let v8 : bool = v6 = false │
00:00:10 #657 [Verbose] > │ if v8 then │
00:00:10 #658 [Verbose] > │ failwith<unit> v7 │
00:00:10 #659 [Verbose] > │ method0() │
00:00:10 #660 [Verbose] > │ │
00:00:10 #661 [Verbose] > │ │
00:00:10 #662 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:10 #663 [Verbose] >
00:00:10 #664 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:10 #665 [Verbose] > // // test
00:00:10 #666 [Verbose] > // // rust=
00:00:10 #667 [Verbose] >
00:00:10 #668 [Verbose] > run_target function
00:00:10 #669 [Verbose] > | Fsharp => fun () => $"1uy"
00:00:10 #670 [Verbose] > | Rust (Native) => fun () => $"2uy"
00:00:10 #671 [Verbose] > | Rust (Wasm) => fun () => $"3uy"
00:00:10 #672 [Verbose] > |> (=) 2u8
00:00:10 #673 [Verbose] > |> _assert_eq true
00:00:10 #674 [Verbose] > Building /tmp/!dotnet-repl/20240320-1226-4712-1206-1ca2adf90b99/main.spi
00:00:13 #675 [Verbose] >
00:00:13 #676 [Verbose] > ╭─[ 2.94s - return value ]─────────────────────────────────────────────────────╮
00:00:13 #677 [Verbose] > │ .rs output: │
00:00:13 #678 [Verbose] > │ │
00:00:13 #679 [Verbose] > │ │
00:00:13 #680 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:13 #681 [Verbose] >
00:00:13 #682 [Verbose] > ╭─[ 2.94s - stdout ]───────────────────────────────────────────────────────────╮
00:00:13 #683 [Verbose] > │ │
00:00:13 #684 [Verbose] > │ .fsx: │
00:00:13 #685 [Verbose] > │ let rec method1 (v0 : bool) : bool = │
00:00:13 #686 [Verbose] > │ v0 │
00:00:13 #687 [Verbose] > │ and method0 () : unit = │
00:00:13 #688 [Verbose] > │ let mutable result = None │
00:00:13 #689 [Verbose] > │ #if FABLE_COMPILER_RUST │
00:00:13 #690 [Verbose] > │ #if !WASM │
00:00:13 #691 [Verbose] > │ let v0 : uint8 = 2uy │
00:00:13 #692 [Verbose] > │ v0 │
00:00:13 #693 [Verbose] > │ #else │
00:00:13 #694 [Verbose] > │ let v1 : uint8 = 3uy │
00:00:13 #695 [Verbose] > │ v1 │
00:00:13 #696 [Verbose] > │ #endif │
00:00:13 #697 [Verbose] > │ #else │
00:00:13 #698 [Verbose] > │ let v2 : uint8 = 1uy │
00:00:13 #699 [Verbose] > │ v2 │
00:00:13 #700 [Verbose] > │ #endif │
00:00:13 #701 [Verbose] > │ |> fun x -> result <- Some x │
00:00:13 #702 [Verbose] > │ let v3 : uint8 = result |> Option.get │
00:00:13 #703 [Verbose] > │ let v4 : bool = 2uy = v3 │
00:00:13 #704 [Verbose] > │ let v6 : bool = │
00:00:13 #705 [Verbose] > │ if v4 then │
00:00:13 #706 [Verbose] > │ true │
00:00:13 #707 [Verbose] > │ else │
00:00:13 #708 [Verbose] > │ method1(v4) │
00:00:13 #709 [Verbose] > │ let v7 : string = $"__expect / actual: %A{v4} / expected: %A{true}" │
00:00:13 #710 [Verbose] > │ let v8 : bool = v6 = false │
00:00:13 #711 [Verbose] > │ if v8 then │
00:00:13 #712 [Verbose] > │ failwith<unit> v7 │
00:00:13 #713 [Verbose] > │ method0() │
00:00:13 #714 [Verbose] > │ │
00:00:13 #715 [Verbose] > │ .rs: │
00:00:13 #716 [Verbose] > │ #![allow(dead_code,)] │
00:00:13 #717 [Verbose] > │ #![allow(non_camel_case_types,)] │
00:00:13 #718 [Verbose] > │ #![allow(non_snake_case,)] │
00:00:13 #719 [Verbose] > │ #![allow(non_upper_case_globals,)] │
00:00:13 #720 [Verbose] > │ #![allow(unreachable_code,)] │
00:00:13 #721 [Verbose] > │ #![allow(unused_attributes,)] │
00:00:13 #722 [Verbose] > │ #![allow(unused_imports,)] │
00:00:13 #723 [Verbose] > │ #![allow(unused_macros,)] │
00:00:13 #724 [Verbose] > │ #![allow(unused_parens,)] │
00:00:13 #725 [Verbose] > │ #![allow(unused_variables,)] │
00:00:13 #726 [Verbose] > │ mod module_ccfa04bf { │
00:00:13 #727 [Verbose] > │ pub mod Spiral_eval { │
00:00:13 #728 [Verbose] > │ use super::*; │
00:00:13 #729 [Verbose] > │ use fable_library_rust::Native_::MutCell; │
00:00:13 #730 [Verbose] > │ use fable_library_rust::Native_::on_startup; │
00:00:13 #731 [Verbose] > │ use fable_library_rust::Option_::getValue; │
00:00:13 #732 [Verbose] > │ use fable_library_rust::String_::sprintf; │
00:00:13 #733 [Verbose] > │ pub fn method1(v0: bool) -> bool { v0 } │
00:00:13 #734 [Verbose] > │ pub fn method0() { │
00:00:13 #735 [Verbose] > │ let result: MutCell<Option<u8>> = MutCell::new(None::<u8>); │
00:00:13 #736 [Verbose] > │ result.set(Some(2_u8)); │
00:00:13 #737 [Verbose] > │ { │
00:00:13 #738 [Verbose] > │ let v4: bool = 2_u8 == getValue(result.get().clone()); │
00:00:13 #739 [Verbose] > │ if (if v4 { true } else { Spiral_eval::method1(v4) }) == │
00:00:13 #740 [Verbose] > │ false │
00:00:13 #741 [Verbose] > │ { │
00:00:13 #742 [Verbose] > │ panic!("{}", │
00:00:13 #743 [Verbose] > │ sprintf!("__expect / actual: {:?} / expected: │
00:00:13 #744 [Verbose] > │ {:?}", v4, true)); │
00:00:13 #745 [Verbose] > │ } │
00:00:13 #746 [Verbose] > │ } │
00:00:13 #747 [Verbose] > │ } │
00:00:13 #748 [Verbose] > │ on_startup!(Spiral_eval::method0()); │
00:00:13 #749 [Verbose] > │ } │
00:00:13 #750 [Verbose] > │ } │
00:00:13 #751 [Verbose] > │ pub use module_ccfa04bf::*; │
00:00:13 #752 [Verbose] > │ │
00:00:13 #753 [Verbose] > │ │
00:00:13 #754 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:13 #755 [Verbose] >
00:00:13 #756 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:13 #757 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:13 #758 [Verbose] > │ ## nameof │
00:00:13 #759 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:13 #760 [Verbose] >
00:00:13 #761 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:13 #762 [Verbose] > inl nameof x : string =
00:00:13 #763 [Verbose] > $"nameof !x"
00:00:13 #764 [Verbose] > Building /tmp/!dotnet-repl/20240320-1226-5006-0644-09a8a313227e/main.spi
00:00:13 #765 [Verbose] >
00:00:13 #766 [Verbose] > ╭─[ 129.70ms - stdout ]────────────────────────────────────────────────────────╮
00:00:13 #767 [Verbose] > │ () │
00:00:13 #768 [Verbose] > │ │
00:00:13 #769 [Verbose] > │ │
00:00:13 #770 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:13 #771 [Verbose] >
00:00:13 #772 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:13 #773 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:13 #774 [Verbose] > │ ## get_environment_variable │
00:00:13 #775 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:13 #776 [Verbose] >
00:00:13 #777 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:13 #778 [Verbose] > inl get_environment_variable (var : string) : string =
00:00:13 #779 [Verbose] > $"System.Environment.GetEnvironmentVariable !var"
00:00:13 #780 [Verbose] > Building /tmp/!dotnet-repl/20240320-1226-5019-1950-138c681a61df/main.spi
00:00:13 #781 [Verbose] >
00:00:13 #782 [Verbose] > ╭─[ 126.75ms - stdout ]────────────────────────────────────────────────────────╮
00:00:13 #783 [Verbose] > │ () │
00:00:13 #784 [Verbose] > │ │
00:00:13 #785 [Verbose] > │ │
00:00:13 #786 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:13 #787 [Verbose] >
00:00:13 #788 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:13 #789 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:13 #790 [Verbose] > │ ## new_raw_guid │
00:00:13 #791 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:13 #792 [Verbose] >
00:00:13 #793 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:13 #794 [Verbose] > inl new_raw_guid () : guid =
00:00:13 #795 [Verbose] > $"`guid.NewGuid ()"
00:00:13 #796 [Verbose] > Building /tmp/!dotnet-repl/20240320-1226-5032-3225-34e498a3b8be/main.spi
00:00:14 #797 [Verbose] >
00:00:14 #798 [Verbose] > ╭─[ 146.70ms - stdout ]────────────────────────────────────────────────────────╮
00:00:14 #799 [Verbose] > │ () │
00:00:14 #800 [Verbose] > │ │
00:00:14 #801 [Verbose] > │ │
00:00:14 #802 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:14 #803 [Verbose] > [NbConvertApp] Converting notebook common.dib.ipynb to html
00:00:14 #804 [Verbose] > /opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:00:14 #805 [Verbose] > validate(nb)
00:00:15 #806 [Verbose] > /opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:00:15 #807 [Verbose] > return _pygments_highlight(
00:00:15 #808 [Verbose] > [NbConvertApp] Writing 338051 bytes to common.dib.html
00:00:15 #809 [Debug] executeAsync / exitCode: 0 / output.Length: 56164
00:00:15 #810 [Debug] main / executeCommand / exitCode: 0
00:00:00 #1 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #2 [Debug] executeAsync / options: { Command =
"dotnet "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 --default-int i32 --default-float f64"
WorkingDirectory = None
CancellationToken = Some System.Threading.CancellationToken
OnLine = Some <fun:main@464-1020> }
00:00:00 #3 [Verbose] > pwd: /home/runner/work/polyglot/polyglot/lib/spiral
00:00:00 #4 [Verbose] > dll_path: /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release
00:00:00 #5 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #6 [Verbose] waitForPortAccess / port: 13805 / retry: 0
00:00:00 #7 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #8 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #9 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #10 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #11 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #12 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #13 [Verbose] > Starting the Spiral Server. It is bound to: http://localhost:13805
00:00:00 #14 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #15 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #16 [Debug] sendJson / port: 13805 / json: {"Ping":true} / result.Length:
00:00:00 #17 [Verbose] awaitCompiler / Ping / result: Some(null) / port: 13805 / retry: 0
00:00:00 #18 [Verbose] > Server bound to: http://localhost:13805
00:00:00 #19 [Debug] executeAsync / options: { Command = "pwsh -c "../../scripts/invoke-dib.ps1 console.dib""
WorkingDirectory = None
CancellationToken = Some System.Threading.CancellationToken
OnLine = None }
00:00:02 #20 [Verbose] >
00:00:02 #21 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:02 #22 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:02 #23 [Verbose] > │ # console │
00:00:02 #24 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:02 #25 [Verbose] >
00:00:02 #26 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:02 #27 [Verbose] > // // test
00:00:02 #28 [Verbose] >
00:00:02 #29 [Verbose] > open testing
00:00:03 #30 [Verbose] > Building /tmp/!dotnet-repl/20240320-1226-5604-0425-054fc67b1281/main.spi
00:00:05 #31 [Verbose] >
00:00:05 #32 [Verbose] > ╭─[ 3.39s - stdout ]───────────────────────────────────────────────────────────╮
00:00:05 #33 [Verbose] > │ () │
00:00:05 #34 [Verbose] > │ │
00:00:05 #35 [Verbose] > │ │
00:00:05 #36 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:05 #37 [Verbose] >
00:00:05 #38 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:05 #39 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:05 #40 [Verbose] > │ ## write_line │
00:00:05 #41 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:05 #42 [Verbose] >
00:00:05 #43 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:05 #44 [Verbose] > inl write_line obj : () =
00:00:05 #45 [Verbose] > $"System.Console.WriteLine !obj"
00:00:05 #46 [Verbose] > Building /tmp/!dotnet-repl/20240320-1226-5834-3456-3b0e3533cfa1/main.spi
00:00:05 #47 [Verbose] >
00:00:05 #48 [Verbose] > ╭─[ 165.66ms - stdout ]────────────────────────────────────────────────────────╮
00:00:05 #49 [Verbose] > │ () │
00:00:05 #50 [Verbose] > │ │
00:00:05 #51 [Verbose] > │ │
00:00:05 #52 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:05 #53 [Verbose] >
00:00:05 #54 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:05 #55 [Verbose] > inl write_line_ ~obj : () =
00:00:05 #56 [Verbose] > $"System.Console.WriteLine !obj"
00:00:05 #57 [Verbose] > Building /tmp/!dotnet-repl/20240320-1226-5850-5075-53ae2075b1e0/main.spi
00:00:06 #58 [Verbose] >
00:00:06 #59 [Verbose] > ╭─[ 150.58ms - stdout ]────────────────────────────────────────────────────────╮
00:00:06 #60 [Verbose] > │ () │
00:00:06 #61 [Verbose] > │ │
00:00:06 #62 [Verbose] > │ │
00:00:06 #63 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #64 [Verbose] >
00:00:06 #65 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 #66 [Verbose] > nominal console_color = $"System.ConsoleColor"
00:00:06 #67 [Verbose] >
00:00:06 #68 [Verbose] > inl reset_color () : () =
00:00:06 #69 [Verbose] > run_target function
00:00:06 #70 [Verbose] > | Fsharp => fun () => $"System.Console.ResetColor ()"
00:00:06 #71 [Verbose] > | _ => fun () => ()
00:00:06 #72 [Verbose] >
00:00:06 #73 [Verbose] > inl set_foreground_color (color : console_color) : () =
00:00:06 #74 [Verbose] > run_target function
00:00:06 #75 [Verbose] > | Fsharp => fun () => $"System.Console.ForegroundColor <- !color"
00:00:06 #76 [Verbose] > | _ => fun () => ()
00:00:06 #77 [Verbose] > Building /tmp/!dotnet-repl/20240320-1226-5866-6601-630c635f63b5/main.spi
00:00:06 #78 [Verbose] >
00:00:06 #79 [Verbose] > ╭─[ 311.13ms - stdout ]────────────────────────────────────────────────────────╮
00:00:06 #80 [Verbose] > │ () │
00:00:06 #81 [Verbose] > │ │
00:00:06 #82 [Verbose] > │ │
00:00:06 #83 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #84 [Verbose] > [NbConvertApp] Converting notebook console.dib.ipynb to html
00:00:07 #85 [Verbose] > /opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:00:07 #86 [Verbose] > validate(nb)
00:00:07 #87 [Verbose] > /opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:00:07 #88 [Verbose] > return _pygments_highlight(
00:00:07 #89 [Verbose] > [NbConvertApp] Writing 276929 bytes to console.dib.html
00:00:07 #90 [Debug] executeAsync / exitCode: 0 / output.Length: 4510
00:00:07 #91 [Debug] main / executeCommand / exitCode: 0
00:00:00 #1 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #2 [Debug] executeAsync / options: { Command =
"dotnet "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 --default-int i32 --default-float f64"
WorkingDirectory = None
CancellationToken = Some System.Threading.CancellationToken
OnLine = Some <fun:main@464-1020> }
00:00:00 #3 [Verbose] > pwd: /home/runner/work/polyglot/polyglot/lib/spiral
00:00:00 #4 [Verbose] > dll_path: /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release
00:00:00 #5 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #6 [Verbose] waitForPortAccess / port: 13805 / retry: 0
00:00:00 #7 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #8 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #9 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #10 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #11 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #12 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #13 [Verbose] > Starting the Spiral Server. It is bound to: http://localhost:13805
00:00:00 #14 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #15 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #16 [Debug] sendJson / port: 13805 / json: {"Ping":true} / result.Length:
00:00:00 #17 [Verbose] awaitCompiler / Ping / result: Some(null) / port: 13805 / retry: 0
00:00:00 #18 [Verbose] > Server bound to: http://localhost:13805
00:00:00 #19 [Debug] executeAsync / options: { Command = "pwsh -c "../../scripts/invoke-dib.ps1 math.dib""
WorkingDirectory = None
CancellationToken = Some System.Threading.CancellationToken
OnLine = None }
00:00:02 #20 [Verbose] >
00:00:02 #21 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:02 #22 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:02 #23 [Verbose] > │ # math │
00:00:02 #24 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:02 #25 [Verbose] >
00:00:02 #26 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:02 #27 [Verbose] > // // test
00:00:02 #28 [Verbose] >
00:00:02 #29 [Verbose] > open testing
00:00:04 #30 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-0444-4452-43ea4e3185f2/main.spi
00:00:05 #31 [Verbose] >
00:00:05 #32 [Verbose] > ╭─[ 3.61s - stdout ]───────────────────────────────────────────────────────────╮
00:00:05 #33 [Verbose] > │ () │
00:00:05 #34 [Verbose] > │ │
00:00:05 #35 [Verbose] > │ │
00:00:05 #36 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:05 #37 [Verbose] >
00:00:05 #38 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:05 #39 [Verbose] > // // test
00:00:05 #40 [Verbose] >
00:00:05 #41 [Verbose] > 2 * 2 / 0.4f64 |> sqrt
00:00:05 #42 [Verbose] > |> _assert_approx_eq None 3.1622776601683795
00:00:06 #43 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-0675-7574-7f1fea52cc87/main.spi
00:00:06 #44 [Verbose] >
00:00:06 #45 [Verbose] > ╭─[ 553.74ms - stdout ]────────────────────────────────────────────────────────╮
00:00:06 #46 [Verbose] > │ let rec method0 () : unit = │
00:00:06 #47 [Verbose] > │ let v0 : string = $"__expect / actual: %A{3.1622776601683795} / │
00:00:06 #48 [Verbose] > │ expected: %A{3.1622776601683795}" │
00:00:06 #49 [Verbose] > │ () │
00:00:06 #50 [Verbose] > │ method0() │
00:00:06 #51 [Verbose] > │ │
00:00:06 #52 [Verbose] > │ │
00:00:06 #53 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #54 [Verbose] >
00:00:06 #55 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 #56 [Verbose] > // // test
00:00:06 #57 [Verbose] >
00:00:06 #58 [Verbose] > 2f64 / 3
00:00:06 #59 [Verbose] > |> _assert_approx_eq None 0.6666666666666666
00:00:06 #60 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-0731-3103-39c2652ddeb8/main.spi
00:00:06 #61 [Verbose] >
00:00:06 #62 [Verbose] > ╭─[ 139.62ms - stdout ]────────────────────────────────────────────────────────╮
00:00:06 #63 [Verbose] > │ let rec method0 () : unit = │
00:00:06 #64 [Verbose] > │ let v0 : string = $"__expect / actual: %A{0.6666666666666666} / │
00:00:06 #65 [Verbose] > │ expected: %A{0.6666666666666666}" │
00:00:06 #66 [Verbose] > │ () │
00:00:06 #67 [Verbose] > │ method0() │
00:00:06 #68 [Verbose] > │ │
00:00:06 #69 [Verbose] > │ │
00:00:06 #70 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #71 [Verbose] >
00:00:06 #72 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 #73 [Verbose] > // // test
00:00:06 #74 [Verbose] >
00:00:06 #75 [Verbose] > 2f64 |> log
00:00:06 #76 [Verbose] > |> _assert_approx_eq None 0.6931471805599453
00:00:06 #77 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-0744-4497-40d2e4f9e88d/main.spi
00:00:06 #78 [Verbose] >
00:00:06 #79 [Verbose] > ╭─[ 134.13ms - stdout ]────────────────────────────────────────────────────────╮
00:00:06 #80 [Verbose] > │ let rec method0 () : unit = │
00:00:06 #81 [Verbose] > │ let v0 : string = $"__expect / actual: %A{0.6931471805599453} / │
00:00:06 #82 [Verbose] > │ expected: %A{0.6931471805599453}" │
00:00:06 #83 [Verbose] > │ () │
00:00:06 #84 [Verbose] > │ method0() │
00:00:06 #85 [Verbose] > │ │
00:00:06 #86 [Verbose] > │ │
00:00:06 #87 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #88 [Verbose] >
00:00:06 #89 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 #90 [Verbose] > // // test
00:00:06 #91 [Verbose] >
00:00:06 #92 [Verbose] > pi
00:00:06 #93 [Verbose] > |> _assert_approx_eq None 3.141592653589793f64
00:00:06 #94 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-0758-5851-532e07b7fc54/main.spi
00:00:06 #95 [Verbose] >
00:00:06 #96 [Verbose] > ╭─[ 146.01ms - stdout ]────────────────────────────────────────────────────────╮
00:00:06 #97 [Verbose] > │ let rec method0 () : unit = │
00:00:06 #98 [Verbose] > │ let v0 : string = $"__expect / actual: %A{3.141592653589793} / expected: │
00:00:06 #99 [Verbose] > │ %A{3.141592653589793}" │
00:00:06 #100 [Verbose] > │ () │
00:00:06 #101 [Verbose] > │ method0() │
00:00:06 #102 [Verbose] > │ │
00:00:06 #103 [Verbose] > │ │
00:00:06 #104 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #105 [Verbose] >
00:00:06 #106 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 #107 [Verbose] > // // test
00:00:06 #108 [Verbose] >
00:00:06 #109 [Verbose] > pi |> cos
00:00:06 #110 [Verbose] > |> _assert_eq -1f64
00:00:07 #111 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-0773-7332-7aab14556664/main.spi
00:00:07 #112 [Verbose] >
00:00:07 #113 [Verbose] > ╭─[ 145.81ms - stdout ]────────────────────────────────────────────────────────╮
00:00:07 #114 [Verbose] > │ let rec method0 () : unit = │
00:00:07 #115 [Verbose] > │ let v0 : string = $"__expect / actual: %A{-1.0} / expected: %A{-1.0}" │
00:00:07 #116 [Verbose] > │ () │
00:00:07 #117 [Verbose] > │ method0() │
00:00:07 #118 [Verbose] > │ │
00:00:07 #119 [Verbose] > │ │
00:00:07 #120 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #121 [Verbose] >
00:00:07 #122 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:07 #123 [Verbose] > // // test
00:00:07 #124 [Verbose] >
00:00:07 #125 [Verbose] > pi
00:00:07 #126 [Verbose] > |> cos
00:00:07 #127 [Verbose] > |> fun n => n / 2f64
00:00:07 #128 [Verbose] > |> _assert_approx_eq None -0.5
00:00:07 #129 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-0787-8780-80df657f463a/main.spi
00:00:07 #130 [Verbose] >
00:00:07 #131 [Verbose] > ╭─[ 134.27ms - stdout ]────────────────────────────────────────────────────────╮
00:00:07 #132 [Verbose] > │ let rec method0 () : unit = │
00:00:07 #133 [Verbose] > │ let v0 : string = $"__expect / actual: %A{-0.5} / expected: %A{-0.5}" │
00:00:07 #134 [Verbose] > │ () │
00:00:07 #135 [Verbose] > │ method0() │
00:00:07 #136 [Verbose] > │ │
00:00:07 #137 [Verbose] > │ │
00:00:07 #138 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #139 [Verbose] >
00:00:07 #140 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:07 #141 [Verbose] > // // test
00:00:07 #142 [Verbose] >
00:00:07 #143 [Verbose] > pi / 2 |> cos
00:00:07 #144 [Verbose] > |> _assert_approx_eq None 0.00000000000000006123233995736766f64
00:00:07 #145 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-0801-0129-03759ce24532/main.spi
00:00:07 #146 [Verbose] >
00:00:07 #147 [Verbose] > ╭─[ 136.18ms - stdout ]────────────────────────────────────────────────────────╮
00:00:07 #148 [Verbose] > │ let rec method0 () : unit = │
00:00:07 #149 [Verbose] > │ let v0 : string = $"__expect / actual: %A{6.123233995736766E-17} / │
00:00:07 #150 [Verbose] > │ expected: %A{6.123233995736766E-17}" │
00:00:07 #151 [Verbose] > │ () │
00:00:07 #152 [Verbose] > │ method0() │
00:00:07 #153 [Verbose] > │ │
00:00:07 #154 [Verbose] > │ │
00:00:07 #155 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #156 [Verbose] >
00:00:07 #157 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:07 #158 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:07 #159 [Verbose] > │ ## atan2 │
00:00:07 #160 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #161 [Verbose] >
00:00:07 #162 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:07 #163 [Verbose] > inl atan2 (y : f64) (x : f64) =
00:00:07 #164 [Verbose] > $"System.Math.Atan2 (!y, !x)" : f64
00:00:07 #165 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-0815-1537-121a25afa0ac/main.spi
00:00:07 #166 [Verbose] >
00:00:07 #167 [Verbose] > ╭─[ 130.98ms - stdout ]────────────────────────────────────────────────────────╮
00:00:07 #168 [Verbose] > │ () │
00:00:07 #169 [Verbose] > │ │
00:00:07 #170 [Verbose] > │ │
00:00:07 #171 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #172 [Verbose] >
00:00:07 #173 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:07 #174 [Verbose] > // // test
00:00:07 #175 [Verbose] >
00:00:07 #176 [Verbose] > 0 |> atan2 1
00:00:07 #177 [Verbose] > |> _assert_eq 1.5707963267948966
00:00:07 #178 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-0828-2821-234dc1b1f3d4/main.spi
00:00:07 #179 [Verbose] >
00:00:07 #180 [Verbose] > ╭─[ 329.88ms - stdout ]────────────────────────────────────────────────────────╮
00:00:07 #181 [Verbose] > │ let rec method1 (v0 : bool) : bool = │
00:00:07 #182 [Verbose] > │ v0 │
00:00:07 #183 [Verbose] > │ and method0 () : unit = │
00:00:07 #184 [Verbose] > │ let v0 : float = System.Math.Atan2 (1.0, 0.0) │
00:00:07 #185 [Verbose] > │ let v1 : bool = v0 = 1.5707963267948966 │
00:00:07 #186 [Verbose] > │ let v3 : bool = │
00:00:07 #187 [Verbose] > │ if v1 then │
00:00:07 #188 [Verbose] > │ true │
00:00:07 #189 [Verbose] > │ else │
00:00:07 #190 [Verbose] > │ method1(v1) │
00:00:07 #191 [Verbose] > │ let v4 : string = $"__expect / actual: %A{v0} / expected: │
00:00:07 #192 [Verbose] > │ %A{1.5707963267948966}" │
00:00:07 #193 [Verbose] > │ let v5 : bool = v3 = false │
00:00:07 #194 [Verbose] > │ if v5 then │
00:00:07 #195 [Verbose] > │ failwith<unit> v4 │
00:00:07 #196 [Verbose] > │ method0() │
00:00:07 #197 [Verbose] > │ │
00:00:07 #198 [Verbose] > │ │
00:00:07 #199 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #200 [Verbose] >
00:00:07 #201 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:07 #202 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:07 #203 [Verbose] > │ ## e │
00:00:07 #204 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #205 [Verbose] >
00:00:07 #206 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:07 #207 [Verbose] > inl e () =
00:00:07 #208 [Verbose] > exp 1f64
00:00:07 #209 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-0861-6163-653bee7ee78e/main.spi
00:00:07 #210 [Verbose] >
00:00:07 #211 [Verbose] > ╭─[ 137.39ms - stdout ]────────────────────────────────────────────────────────╮
00:00:07 #212 [Verbose] > │ () │
00:00:07 #213 [Verbose] > │ │
00:00:07 #214 [Verbose] > │ │
00:00:07 #215 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #216 [Verbose] >
00:00:07 #217 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:07 #218 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:07 #219 [Verbose] > │ ## floor │
00:00:07 #220 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #221 [Verbose] >
00:00:07 #222 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:07 #223 [Verbose] > inl floor forall t {float}. (x : t) : t =
00:00:07 #224 [Verbose] > $"floor !x"
00:00:08 #225 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-0875-7543-71c148f2448a/main.spi
00:00:08 #226 [Verbose] >
00:00:08 #227 [Verbose] > ╭─[ 131.10ms - stdout ]────────────────────────────────────────────────────────╮
00:00:08 #228 [Verbose] > │ () │
00:00:08 #229 [Verbose] > │ │
00:00:08 #230 [Verbose] > │ │
00:00:08 #231 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #232 [Verbose] >
00:00:08 #233 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:08 #234 [Verbose] > // // test
00:00:08 #235 [Verbose] >
00:00:08 #236 [Verbose] > 0.6 |> floor
00:00:08 #237 [Verbose] > |> _assert_eq 0f64
00:00:08 #238 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-0888-8855-87f12889f679/main.spi
00:00:08 #239 [Verbose] >
00:00:08 #240 [Verbose] > ╭─[ 153.61ms - stdout ]────────────────────────────────────────────────────────╮
00:00:08 #241 [Verbose] > │ let rec method1 (v0 : bool) : bool = │
00:00:08 #242 [Verbose] > │ v0 │
00:00:08 #243 [Verbose] > │ and method0 () : unit = │
00:00:08 #244 [Verbose] > │ let v0 : float = floor 0.6 │
00:00:08 #245 [Verbose] > │ let v1 : bool = v0 = 0.0 │
00:00:08 #246 [Verbose] > │ let v3 : bool = │
00:00:08 #247 [Verbose] > │ if v1 then │
00:00:08 #248 [Verbose] > │ true │
00:00:08 #249 [Verbose] > │ else │
00:00:08 #250 [Verbose] > │ method1(v1) │
00:00:08 #251 [Verbose] > │ let v4 : string = $"__expect / actual: %A{v0} / expected: %A{0.0}" │
00:00:08 #252 [Verbose] > │ let v5 : bool = v3 = false │
00:00:08 #253 [Verbose] > │ if v5 then │
00:00:08 #254 [Verbose] > │ failwith<unit> v4 │
00:00:08 #255 [Verbose] > │ method0() │
00:00:08 #256 [Verbose] > │ │
00:00:08 #257 [Verbose] > │ │
00:00:08 #258 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #259 [Verbose] >
00:00:08 #260 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:08 #261 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:08 #262 [Verbose] > │ ## log_base │
00:00:08 #263 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #264 [Verbose] >
00:00:08 #265 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:08 #266 [Verbose] > inl log_base (new_base : f64) (a : f64) =
00:00:08 #267 [Verbose] > $"System.Math.Log (!a, !new_base)" : f64
00:00:08 #268 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-0904-0409-0e2252d85878/main.spi
00:00:08 #269 [Verbose] >
00:00:08 #270 [Verbose] > ╭─[ 157.50ms - stdout ]────────────────────────────────────────────────────────╮
00:00:08 #271 [Verbose] > │ () │
00:00:08 #272 [Verbose] > │ │
00:00:08 #273 [Verbose] > │ │
00:00:08 #274 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #275 [Verbose] >
00:00:08 #276 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:08 #277 [Verbose] > // // test
00:00:08 #278 [Verbose] >
00:00:08 #279 [Verbose] > 100 |> log_base 10
00:00:08 #280 [Verbose] > |> _assert_eq 2
00:00:08 #281 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-0919-1994-11ea1850e7e5/main.spi
00:00:08 #282 [Verbose] >
00:00:08 #283 [Verbose] > ╭─[ 141.82ms - stdout ]────────────────────────────────────────────────────────╮
00:00:08 #284 [Verbose] > │ let rec method1 (v0 : bool) : bool = │
00:00:08 #285 [Verbose] > │ v0 │
00:00:08 #286 [Verbose] > │ and method0 () : unit = │
00:00:08 #287 [Verbose] > │ let v0 : float = System.Math.Log (100.0, 10.0) │
00:00:08 #288 [Verbose] > │ let v1 : bool = v0 = 2.0 │
00:00:08 #289 [Verbose] > │ let v3 : bool = │
00:00:08 #290 [Verbose] > │ if v1 then │
00:00:08 #291 [Verbose] > │ true │
00:00:08 #292 [Verbose] > │ else │
00:00:08 #293 [Verbose] > │ method1(v1) │
00:00:08 #294 [Verbose] > │ let v4 : string = $"__expect / actual: %A{v0} / expected: %A{2.0}" │
00:00:08 #295 [Verbose] > │ let v5 : bool = v3 = false │
00:00:08 #296 [Verbose] > │ if v5 then │
00:00:08 #297 [Verbose] > │ failwith<unit> v4 │
00:00:08 #298 [Verbose] > │ method0() │
00:00:08 #299 [Verbose] > │ │
00:00:08 #300 [Verbose] > │ │
00:00:08 #301 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #302 [Verbose] >
00:00:08 #303 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:08 #304 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:08 #305 [Verbose] > │ ## round │
00:00:08 #306 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #307 [Verbose] >
00:00:08 #308 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:08 #309 [Verbose] > inl round forall t {float}. (x : t) : t =
00:00:08 #310 [Verbose] > $"round !x"
00:00:08 #311 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-0934-3431-34cc312d186f/main.spi
00:00:08 #312 [Verbose] >
00:00:08 #313 [Verbose] > ╭─[ 126.93ms - stdout ]────────────────────────────────────────────────────────╮
00:00:08 #314 [Verbose] > │ () │
00:00:08 #315 [Verbose] > │ │
00:00:08 #316 [Verbose] > │ │
00:00:08 #317 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #318 [Verbose] >
00:00:08 #319 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:08 #320 [Verbose] > // // test
00:00:08 #321 [Verbose] >
00:00:08 #322 [Verbose] > 0.5 |> round
00:00:08 #323 [Verbose] > |> _assert_eq 0f64
00:00:08 #324 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-0946-4699-4260e068051d/main.spi
00:00:08 #325 [Verbose] >
00:00:08 #326 [Verbose] > ╭─[ 142.46ms - stdout ]────────────────────────────────────────────────────────╮
00:00:08 #327 [Verbose] > │ let rec method1 (v0 : bool) : bool = │
00:00:08 #328 [Verbose] > │ v0 │
00:00:08 #329 [Verbose] > │ and method0 () : unit = │
00:00:08 #330 [Verbose] > │ let v0 : float = round 0.5 │
00:00:08 #331 [Verbose] > │ let v1 : bool = v0 = 0.0 │
00:00:08 #332 [Verbose] > │ let v3 : bool = │
00:00:08 #333 [Verbose] > │ if v1 then │
00:00:08 #334 [Verbose] > │ true │
00:00:08 #335 [Verbose] > │ else │
00:00:08 #336 [Verbose] > │ method1(v1) │
00:00:08 #337 [Verbose] > │ let v4 : string = $"__expect / actual: %A{v0} / expected: %A{0.0}" │
00:00:08 #338 [Verbose] > │ let v5 : bool = v3 = false │
00:00:08 #339 [Verbose] > │ if v5 then │
00:00:08 #340 [Verbose] > │ failwith<unit> v4 │
00:00:08 #341 [Verbose] > │ method0() │
00:00:08 #342 [Verbose] > │ │
00:00:08 #343 [Verbose] > │ │
00:00:08 #344 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #345 [Verbose] >
00:00:08 #346 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:08 #347 [Verbose] > // // test
00:00:08 #348 [Verbose] >
00:00:08 #349 [Verbose] > 0.6 |> round
00:00:08 #350 [Verbose] > |> _assert_eq 1f64
00:00:08 #351 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-0961-6139-600da4ef8a15/main.spi
00:00:08 #352 [Verbose] >
00:00:08 #353 [Verbose] > ╭─[ 134.38ms - stdout ]────────────────────────────────────────────────────────╮
00:00:08 #354 [Verbose] > │ let rec method1 (v0 : bool) : bool = │
00:00:08 #355 [Verbose] > │ v0 │
00:00:08 #356 [Verbose] > │ and method0 () : unit = │
00:00:08 #357 [Verbose] > │ let v0 : float = round 0.6 │
00:00:08 #358 [Verbose] > │ let v1 : bool = v0 = 1.0 │
00:00:08 #359 [Verbose] > │ let v3 : bool = │
00:00:08 #360 [Verbose] > │ if v1 then │
00:00:08 #361 [Verbose] > │ true │
00:00:08 #362 [Verbose] > │ else │
00:00:08 #363 [Verbose] > │ method1(v1) │
00:00:08 #364 [Verbose] > │ let v4 : string = $"__expect / actual: %A{v0} / expected: %A{1.0}" │
00:00:08 #365 [Verbose] > │ let v5 : bool = v3 = false │
00:00:08 #366 [Verbose] > │ if v5 then │
00:00:08 #367 [Verbose] > │ failwith<unit> v4 │
00:00:08 #368 [Verbose] > │ method0() │
00:00:08 #369 [Verbose] > │ │
00:00:08 #370 [Verbose] > │ │
00:00:08 #371 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #372 [Verbose] >
00:00:08 #373 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:08 #374 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:08 #375 [Verbose] > │ ## square │
00:00:08 #376 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #377 [Verbose] >
00:00:08 #378 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:08 #379 [Verbose] > inl square x =
00:00:08 #380 [Verbose] > x ** 2
00:00:09 #381 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-0975-7505-7e7139aae157/main.spi
00:00:09 #382 [Verbose] >
00:00:09 #383 [Verbose] > ╭─[ 130.78ms - stdout ]────────────────────────────────────────────────────────╮
00:00:09 #384 [Verbose] > │ () │
00:00:09 #385 [Verbose] > │ │
00:00:09 #386 [Verbose] > │ │
00:00:09 #387 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #388 [Verbose] >
00:00:09 #389 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:09 #390 [Verbose] > // // test
00:00:09 #391 [Verbose] >
00:00:09 #392 [Verbose] > 5f64
00:00:09 #393 [Verbose] > |> sqrt
00:00:09 #394 [Verbose] > |> square
00:00:09 #395 [Verbose] > |> _assert_approx_eq None 5
00:00:09 #396 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-0988-8817-8f3b2cbbe705/main.spi
00:00:09 #397 [Verbose] >
00:00:09 #398 [Verbose] > ╭─[ 131.02ms - stdout ]────────────────────────────────────────────────────────╮
00:00:09 #399 [Verbose] > │ let rec method0 () : unit = │
00:00:09 #400 [Verbose] > │ let v0 : string = $"__expect / actual: %A{5.000000000000001} / expected: │
00:00:09 #401 [Verbose] > │ %A{5.0}" │
00:00:09 #402 [Verbose] > │ () │
00:00:09 #403 [Verbose] > │ method0() │
00:00:09 #404 [Verbose] > │ │
00:00:09 #405 [Verbose] > │ │
00:00:09 #406 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #407 [Verbose] >
00:00:09 #408 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:09 #409 [Verbose] > // // test
00:00:09 #410 [Verbose] >
00:00:09 #411 [Verbose] > e () |> square
00:00:09 #412 [Verbose] > |> _assert_approx_eq None 7.3890560989306495
00:00:09 #413 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-1001-0129-0477f4705897/main.spi
00:00:09 #414 [Verbose] >
00:00:09 #415 [Verbose] > ╭─[ 135.35ms - stdout ]────────────────────────────────────────────────────────╮
00:00:09 #416 [Verbose] > │ let rec method0 () : unit = │
00:00:09 #417 [Verbose] > │ let v0 : string = $"__expect / actual: %A{7.3890560989306495} / │
00:00:09 #418 [Verbose] > │ expected: %A{7.3890560989306495}" │
00:00:09 #419 [Verbose] > │ () │
00:00:09 #420 [Verbose] > │ method0() │
00:00:09 #421 [Verbose] > │ │
00:00:09 #422 [Verbose] > │ │
00:00:09 #423 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:10 #424 [Verbose] > [NbConvertApp] Converting notebook math.dib.ipynb to html
00:00:10 #425 [Verbose] > /opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:00:10 #426 [Verbose] > validate(nb)
00:00:10 #427 [Verbose] > /opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:00:10 #428 [Verbose] > return _pygments_highlight(
00:00:10 #429 [Verbose] > [NbConvertApp] Writing 302862 bytes to math.dib.html
00:00:10 #430 [Debug] executeAsync / exitCode: 0 / output.Length: 28739
00:00:10 #431 [Debug] main / executeCommand / exitCode: 0
00:00:00 #1 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #2 [Debug] executeAsync / options: { Command =
"dotnet "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 --default-int i32 --default-float f64"
WorkingDirectory = None
CancellationToken = Some System.Threading.CancellationToken
OnLine = Some <fun:main@464-1020> }
00:00:00 #3 [Verbose] > pwd: /home/runner/work/polyglot/polyglot/lib/spiral
00:00:00 #4 [Verbose] > dll_path: /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release
00:00:00 #5 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #6 [Verbose] waitForPortAccess / port: 13805 / retry: 0
00:00:00 #7 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #8 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #9 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #10 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #11 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #12 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #13 [Verbose] > Starting the Spiral Server. It is bound to: http://localhost:13805
00:00:00 #14 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #15 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #16 [Debug] sendJson / port: 13805 / json: {"Ping":true} / result.Length:
00:00:00 #17 [Verbose] awaitCompiler / Ping / result: Some(null) / port: 13805 / retry: 0
00:00:00 #18 [Verbose] > Server bound to: http://localhost:13805
00:00:00 #19 [Debug] executeAsync / options: { Command = "pwsh -c "../../scripts/invoke-dib.ps1 \"optionm'.dib\"""
WorkingDirectory = None
CancellationToken = Some System.Threading.CancellationToken
OnLine = None }
00:00:02 #20 [Verbose] >
00:00:02 #21 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:02 #22 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:02 #23 [Verbose] > │ # optionm │
00:00:02 #24 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:02 #25 [Verbose] >
00:00:02 #26 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:02 #27 [Verbose] > // // test
00:00:02 #28 [Verbose] >
00:00:02 #29 [Verbose] > open testing
00:00:04 #30 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-1592-9201-9c6b55d55bd6/main.spi
00:00:06 #31 [Verbose] >
00:00:06 #32 [Verbose] > ╭─[ 3.76s - stdout ]───────────────────────────────────────────────────────────╮
00:00:06 #33 [Verbose] > │ () │
00:00:06 #34 [Verbose] > │ │
00:00:06 #35 [Verbose] > │ │
00:00:06 #36 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #37 [Verbose] >
00:00:06 #38 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 #39 [Verbose] > open rust_operators
00:00:06 #40 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-1831-3152-30dccbfc2ebe/main.spi
00:00:06 #41 [Verbose] >
00:00:06 #42 [Verbose] > ╭─[ 160.86ms - stdout ]────────────────────────────────────────────────────────╮
00:00:06 #43 [Verbose] > │ () │
00:00:06 #44 [Verbose] > │ │
00:00:06 #45 [Verbose] > │ │
00:00:06 #46 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #47 [Verbose] >
00:00:06 #48 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:06 #49 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:06 #50 [Verbose] > │ ## default_value │
00:00:06 #51 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #52 [Verbose] >
00:00:06 #53 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 #54 [Verbose] > inl default_value d =
00:00:06 #55 [Verbose] > optionm.defaultWith d
00:00:06 #56 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-1847-4779-4c1249fd33c5/main.spi
00:00:06 #57 [Verbose] >
00:00:06 #58 [Verbose] > ╭─[ 146.29ms - stdout ]────────────────────────────────────────────────────────╮
00:00:06 #59 [Verbose] > │ () │
00:00:06 #60 [Verbose] > │ │
00:00:06 #61 [Verbose] > │ │
00:00:06 #62 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #63 [Verbose] >
00:00:06 #64 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 #65 [Verbose] > // // test
00:00:06 #66 [Verbose] >
00:00:06 #67 [Verbose] > None
00:00:06 #68 [Verbose] > |> default_value 3i32
00:00:06 #69 [Verbose] > |> _assert_eq 3i32
00:00:06 #70 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-1862-6226-67dbb6305f92/main.spi
00:00:06 #71 [Verbose] >
00:00:06 #72 [Verbose] > ╭─[ 489.65ms - stdout ]────────────────────────────────────────────────────────╮
00:00:06 #73 [Verbose] > │ let rec method0 () : unit = │
00:00:06 #74 [Verbose] > │ let v0 : string = $"__expect / actual: %A{3} / expected: %A{3}" │
00:00:06 #75 [Verbose] > │ () │
00:00:06 #76 [Verbose] > │ method0() │
00:00:06 #77 [Verbose] > │ │
00:00:06 #78 [Verbose] > │ │
00:00:06 #79 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #80 [Verbose] >
00:00:06 #81 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:06 #82 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:06 #83 [Verbose] > │ ## (/??) │
00:00:06 #84 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #85 [Verbose] >
00:00:06 #86 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 #87 [Verbose] > inl (/??) a b =
00:00:06 #88 [Verbose] > a |> default_value b
00:00:07 #89 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-1911-1132-18805a969078/main.spi
00:00:07 #90 [Verbose] >
00:00:07 #91 [Verbose] > ╭─[ 132.11ms - stdout ]────────────────────────────────────────────────────────╮
00:00:07 #92 [Verbose] > │ () │
00:00:07 #93 [Verbose] > │ │
00:00:07 #94 [Verbose] > │ │
00:00:07 #95 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #96 [Verbose] >
00:00:07 #97 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:07 #98 [Verbose] > // // test
00:00:07 #99 [Verbose] >
00:00:07 #100 [Verbose] > None /?? 3i32
00:00:07 #101 [Verbose] > |> _assert_eq 3i32
00:00:07 #102 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-1924-2455-231595292639/main.spi
00:00:07 #103 [Verbose] >
00:00:07 #104 [Verbose] > ╭─[ 143.27ms - stdout ]────────────────────────────────────────────────────────╮
00:00:07 #105 [Verbose] > │ let rec method0 () : unit = │
00:00:07 #106 [Verbose] > │ let v0 : string = $"__expect / actual: %A{3} / expected: %A{3}" │
00:00:07 #107 [Verbose] > │ () │
00:00:07 #108 [Verbose] > │ method0() │
00:00:07 #109 [Verbose] > │ │
00:00:07 #110 [Verbose] > │ │
00:00:07 #111 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #112 [Verbose] >
00:00:07 #113 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:07 #114 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:07 #115 [Verbose] > │ ## default_with │
00:00:07 #116 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #117 [Verbose] >
00:00:07 #118 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:07 #119 [Verbose] > inl default_with fn =
00:00:07 #120 [Verbose] > function Some x => x | None => fn ()
00:00:07 #121 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-1938-3898-327d48399b8e/main.spi
00:00:07 #122 [Verbose] >
00:00:07 #123 [Verbose] > ╭─[ 135.63ms - stdout ]────────────────────────────────────────────────────────╮
00:00:07 #124 [Verbose] > │ () │
00:00:07 #125 [Verbose] > │ │
00:00:07 #126 [Verbose] > │ │
00:00:07 #127 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #128 [Verbose] >
00:00:07 #129 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:07 #130 [Verbose] > // // test
00:00:07 #131 [Verbose] >
00:00:07 #132 [Verbose] > None
00:00:07 #133 [Verbose] > |> default_with (fun () => 3i32)
00:00:07 #134 [Verbose] > |> _assert_eq 3i32
00:00:07 #135 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-1952-5269-581500dbc513/main.spi
00:00:07 #136 [Verbose] >
00:00:07 #137 [Verbose] > ╭─[ 138.46ms - stdout ]────────────────────────────────────────────────────────╮
00:00:07 #138 [Verbose] > │ let rec method0 () : unit = │
00:00:07 #139 [Verbose] > │ let v0 : string = $"__expect / actual: %A{3} / expected: %A{3}" │
00:00:07 #140 [Verbose] > │ () │
00:00:07 #141 [Verbose] > │ method0() │
00:00:07 #142 [Verbose] > │ │
00:00:07 #143 [Verbose] > │ │
00:00:07 #144 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #145 [Verbose] >
00:00:07 #146 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:07 #147 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:07 #148 [Verbose] > │ ## choose │
00:00:07 #149 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #150 [Verbose] >
00:00:07 #151 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:07 #152 [Verbose] > inl choose fn a b =
00:00:07 #153 [Verbose] > match a, b with
00:00:07 #154 [Verbose] > | Some x, Some y => fn x y |> Some
00:00:07 #155 [Verbose] > | _ => None
00:00:07 #156 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-1966-6655-64cde6281ff0/main.spi
00:00:07 #157 [Verbose] >
00:00:07 #158 [Verbose] > ╭─[ 132.61ms - stdout ]────────────────────────────────────────────────────────╮
00:00:07 #159 [Verbose] > │ () │
00:00:07 #160 [Verbose] > │ │
00:00:07 #161 [Verbose] > │ │
00:00:07 #162 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #163 [Verbose] >
00:00:07 #164 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:07 #165 [Verbose] > // // test
00:00:07 #166 [Verbose] >
00:00:07 #167 [Verbose] > (Some 2i32, Some 3)
00:00:07 #168 [Verbose] > ||> choose (+)
00:00:07 #169 [Verbose] > |> _assert_eq (Some 5)
00:00:07 #170 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-1979-7992-7bef04b3c2f0/main.spi
00:00:08 #171 [Verbose] >
00:00:08 #172 [Verbose] > ╭─[ 522.09ms - stdout ]────────────────────────────────────────────────────────╮
00:00:08 #173 [Verbose] > │ type [<Struct>] US0 = │
00:00:08 #174 [Verbose] > │ | US0_0 │
00:00:08 #175 [Verbose] > │ | US0_1 of f1_0 : int32 │
00:00:08 #176 [Verbose] > │ let rec method0 () : unit = │
00:00:08 #177 [Verbose] > │ let v3 : US0 = US0_1(5) │
00:00:08 #178 [Verbose] > │ let v4 : US0 = US0_1(5) │
00:00:08 #179 [Verbose] > │ let v5 : string = $"__expect / actual: %A{v3} / expected: %A{v4}" │
00:00:08 #180 [Verbose] > │ () │
00:00:08 #181 [Verbose] > │ method0() │
00:00:08 #182 [Verbose] > │ │
00:00:08 #183 [Verbose] > │ │
00:00:08 #184 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #185 [Verbose] >
00:00:08 #186 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:08 #187 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:08 #188 [Verbose] > │ ## iter │
00:00:08 #189 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #190 [Verbose] >
00:00:08 #191 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:08 #192 [Verbose] > inl iter fn = function
00:00:08 #193 [Verbose] > | Some x => fn x
00:00:08 #194 [Verbose] > | None => ()
00:00:08 #195 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-2032-3219-3449e30bd861/main.spi
00:00:08 #196 [Verbose] >
00:00:08 #197 [Verbose] > ╭─[ 475.56ms - stdout ]────────────────────────────────────────────────────────╮
00:00:08 #198 [Verbose] > │ () │
00:00:08 #199 [Verbose] > │ │
00:00:08 #200 [Verbose] > │ │
00:00:08 #201 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #202 [Verbose] >
00:00:08 #203 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:08 #204 [Verbose] > // // test
00:00:08 #205 [Verbose] >
00:00:08 #206 [Verbose] > inl n = mut 1i32
00:00:08 #207 [Verbose] > inl fn =
00:00:08 #208 [Verbose] > fun n' =>
00:00:08 #209 [Verbose] > n <- *n + n'
00:00:08 #210 [Verbose] > Some 1i32 |> iter fn
00:00:08 #211 [Verbose] > None |> iter fn
00:00:08 #212 [Verbose] > *n
00:00:08 #213 [Verbose] > |> _assert_eq 2i32
00:00:08 #214 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-2079-7986-7399740130f4/main.spi
00:00:08 #215 [Verbose] >
00:00:08 #216 [Verbose] > ╭─[ 299.79ms - stdout ]────────────────────────────────────────────────────────╮
00:00:08 #217 [Verbose] > │ type Mut0 = {mutable l0 : int32} │
00:00:08 #218 [Verbose] > │ let rec method1 (v0 : bool) : bool = │
00:00:08 #219 [Verbose] > │ v0 │
00:00:08 #220 [Verbose] > │ and method0 () : unit = │
00:00:08 #221 [Verbose] > │ let v0 : Mut0 = {l0 = 1} : Mut0 │
00:00:08 #222 [Verbose] > │ let v1 : int32 = v0.l0 │
00:00:08 #223 [Verbose] > │ let v2 : int32 = v1 + 1 │
00:00:08 #224 [Verbose] > │ v0.l0 <- v2 │
00:00:08 #225 [Verbose] > │ let v3 : int32 = v0.l0 │
00:00:08 #226 [Verbose] > │ let v4 : bool = v3 = 2 │
00:00:08 #227 [Verbose] > │ let v6 : bool = │
00:00:08 #228 [Verbose] > │ if v4 then │
00:00:08 #229 [Verbose] > │ true │
00:00:08 #230 [Verbose] > │ else │
00:00:08 #231 [Verbose] > │ method1(v4) │
00:00:08 #232 [Verbose] > │ let v7 : string = $"__expect / actual: %A{v3} / expected: %A{2}" │
00:00:08 #233 [Verbose] > │ let v8 : bool = v6 = false │
00:00:08 #234 [Verbose] > │ if v8 then │
00:00:08 #235 [Verbose] > │ failwith<unit> v7 │
00:00:08 #236 [Verbose] > │ method0() │
00:00:08 #237 [Verbose] > │ │
00:00:08 #238 [Verbose] > │ │
00:00:08 #239 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #240 [Verbose] >
00:00:08 #241 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:08 #242 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:08 #243 [Verbose] > │ ## option' │
00:00:08 #244 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #245 [Verbose] >
00:00:08 #246 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:08 #247 [Verbose] > nominal option' t = $"`t option"
00:00:08 #248 [Verbose] >
00:00:08 #249 [Verbose] > inl unbox forall t. (x : option' t) : option t =
00:00:08 #250 [Verbose] > inl some x : option t = Some x
00:00:08 #251 [Verbose] > inl none : option t = None
00:00:08 #252 [Verbose] > $"!x |> Option.map !some |> Option.defaultValue !none"
00:00:08 #253 [Verbose] >
00:00:08 #254 [Verbose] > inl box forall t. (x : option t) : option' t =
00:00:08 #255 [Verbose] > match x with
00:00:08 #256 [Verbose] > | Some x => $"Some !x"
00:00:08 #257 [Verbose] > | None => $"None"
00:00:09 #258 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-2110-1033-130274011b45/main.spi
00:00:09 #259 [Verbose] >
00:00:09 #260 [Verbose] > ╭─[ 129.61ms - stdout ]────────────────────────────────────────────────────────╮
00:00:09 #261 [Verbose] > │ () │
00:00:09 #262 [Verbose] > │ │
00:00:09 #263 [Verbose] > │ │
00:00:09 #264 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #265 [Verbose] >
00:00:09 #266 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:09 #267 [Verbose] > // // test
00:00:09 #268 [Verbose] >
00:00:09 #269 [Verbose] > inl x = Some 3i32
00:00:09 #270 [Verbose] > inl y : option i32 = None
00:00:09 #271 [Verbose] > inl x' = x |> box |> unbox
00:00:09 #272 [Verbose] > inl y' = y |> box |> unbox
00:00:09 #273 [Verbose] > (x', y') |> _assert_eq (x, y)
00:00:09 #274 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-2123-2303-22b16d04abd3/main.spi
00:00:09 #275 [Verbose] >
00:00:09 #276 [Verbose] > ╭─[ 220.22ms - stdout ]────────────────────────────────────────────────────────╮
00:00:09 #277 [Verbose] > │ type [<Struct>] US0 = │
00:00:09 #278 [Verbose] > │ | US0_0 │
00:00:09 #279 [Verbose] > │ | US0_1 of f1_0 : int32 │
00:00:09 #280 [Verbose] > │ let rec closure0 () (v0 : int32) : US0 = │
00:00:09 #281 [Verbose] > │ US0_1(v0) │
00:00:09 #282 [Verbose] > │ and method1 (v0 : bool) : bool = │
00:00:09 #283 [Verbose] > │ v0 │
00:00:09 #284 [Verbose] > │ and method0 () : unit = │
00:00:09 #285 [Verbose] > │ let v0 : int32 option = Some 3 │
00:00:09 #286 [Verbose] > │ let v1 : (int32 -> US0) = closure0() │
00:00:09 #287 [Verbose] > │ let v2 : US0 = US0_0 │
00:00:09 #288 [Verbose] > │ let v3 : US0 = v0 |> Option.map v1 |> Option.defaultValue v2 │
00:00:09 #289 [Verbose] > │ let v4 : int32 option = None │
00:00:09 #290 [Verbose] > │ let v5 : US0 = US0_0 │
00:00:09 #291 [Verbose] > │ let v6 : US0 = v4 |> Option.map v1 |> Option.defaultValue v5 │
00:00:09 #292 [Verbose] > │ let v11 : bool = │
00:00:09 #293 [Verbose] > │ match v3 with │
00:00:09 #294 [Verbose] > │ | US0_1(v9) -> (* Some *) │
00:00:09 #295 [Verbose] > │ let v10 : bool = v9 = 3 │
00:00:09 #296 [Verbose] > │ v10 │
00:00:09 #297 [Verbose] > │ | _ -> │
00:00:09 #298 [Verbose] > │ false │
00:00:09 #299 [Verbose] > │ let v13 : bool = │
00:00:09 #300 [Verbose] > │ if v11 then │
00:00:09 #301 [Verbose] > │ match v6 with │
00:00:09 #302 [Verbose] > │ | US0_0 -> (* None *) │
00:00:09 #303 [Verbose] > │ true │
00:00:09 #304 [Verbose] > │ | _ -> │
00:00:09 #305 [Verbose] > │ false │
00:00:09 #306 [Verbose] > │ else │
00:00:09 #307 [Verbose] > │ false │
00:00:09 #308 [Verbose] > │ let v15 : bool = │
00:00:09 #309 [Verbose] > │ if v13 then │
00:00:09 #310 [Verbose] > │ true │
00:00:09 #311 [Verbose] > │ else │
00:00:09 #312 [Verbose] > │ method1(v13) │
00:00:09 #313 [Verbose] > │ let v16 : US0 = US0_1(3) │
00:00:09 #314 [Verbose] > │ let v17 : US0 = US0_0 │
00:00:09 #315 [Verbose] > │ let v18 : string = $"__expect / actual: %A{struct (v3, v6)} / expected: │
00:00:09 #316 [Verbose] > │ %A{struct (v16, v17)}" │
00:00:09 #317 [Verbose] > │ let v19 : bool = v15 = false │
00:00:09 #318 [Verbose] > │ if v19 then │
00:00:09 #319 [Verbose] > │ failwith<unit> v18 │
00:00:09 #320 [Verbose] > │ method0() │
00:00:09 #321 [Verbose] > │ │
00:00:09 #322 [Verbose] > │ │
00:00:09 #323 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #324 [Verbose] >
00:00:09 #325 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:09 #326 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:09 #327 [Verbose] > │ ## map │
00:00:09 #328 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #329 [Verbose] >
00:00:09 #330 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:09 #331 [Verbose] > inl map forall t u. (fn : t -> u) (x : option' t) : option' u =
00:00:09 #332 [Verbose] > inl x = join x
00:00:09 #333 [Verbose] > inl fn = join fn
00:00:09 #334 [Verbose] > !\($'"!x.map(|x| !fn(x))"')
00:00:09 #335 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-2145-4596-49afecfdef5c/main.spi
00:00:09 #336 [Verbose] >
00:00:09 #337 [Verbose] > ╭─[ 140.45ms - stdout ]────────────────────────────────────────────────────────╮
00:00:09 #338 [Verbose] > │ () │
00:00:09 #339 [Verbose] > │ │
00:00:09 #340 [Verbose] > │ │
00:00:09 #341 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #342 [Verbose] >
00:00:09 #343 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:09 #344 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:09 #345 [Verbose] > │ ## flatten │
00:00:09 #346 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #347 [Verbose] >
00:00:09 #348 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:09 #349 [Verbose] > inl flatten x =
00:00:09 #350 [Verbose] > match x with
00:00:09 #351 [Verbose] > | Some (Some x) => Some x
00:00:09 #352 [Verbose] > | _ => None
00:00:09 #353 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-2159-5966-542682aacaff/main.spi
00:00:09 #354 [Verbose] >
00:00:09 #355 [Verbose] > ╭─[ 137.39ms - stdout ]────────────────────────────────────────────────────────╮
00:00:09 #356 [Verbose] > │ () │
00:00:09 #357 [Verbose] > │ │
00:00:09 #358 [Verbose] > │ │
00:00:09 #359 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #360 [Verbose] >
00:00:09 #361 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:09 #362 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:09 #363 [Verbose] > │ ## unwrap │
00:00:09 #364 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #365 [Verbose] >
00:00:09 #366 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:09 #367 [Verbose] > inl unwrap forall t. (x : option' t) : t =
00:00:09 #368 [Verbose] > !\($'"!x.unwrap()"')
00:00:09 #369 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-2173-7351-74952e53c6e8/main.spi
00:00:09 #370 [Verbose] >
00:00:09 #371 [Verbose] > ╭─[ 125.98ms - stdout ]────────────────────────────────────────────────────────╮
00:00:09 #372 [Verbose] > │ () │
00:00:09 #373 [Verbose] > │ │
00:00:09 #374 [Verbose] > │ │
00:00:09 #375 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #376 [Verbose] >
00:00:09 #377 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:09 #378 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:09 #379 [Verbose] > │ ## unwrap_or │
00:00:09 #380 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #381 [Verbose] >
00:00:09 #382 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:09 #383 [Verbose] > inl unwrap_or forall t. (def : t) (x : option' t) : t =
00:00:09 #384 [Verbose] > !\($'"!x.unwrap_or(!def)"')
00:00:09 #385 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-2186-8622-817f42ebe8d9/main.spi
00:00:09 #386 [Verbose] >
00:00:09 #387 [Verbose] > ╭─[ 147.01ms - stdout ]────────────────────────────────────────────────────────╮
00:00:09 #388 [Verbose] > │ () │
00:00:09 #389 [Verbose] > │ │
00:00:09 #390 [Verbose] > │ │
00:00:09 #391 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #392 [Verbose] >
00:00:09 #393 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:09 #394 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:09 #395 [Verbose] > │ ## rc_upgrade │
00:00:09 #396 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #397 [Verbose] >
00:00:09 #398 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:09 #399 [Verbose] > inl rc_upgrade forall t. (x : rust.weak_rc t) : option (rust.rc t) =
00:00:09 #400 [Verbose] > inl x = join x
00:00:09 #401 [Verbose] > !\($'"std::rc::Weak::upgrade(&!x)"')
00:00:09 #402 [Verbose] > |> unbox
00:00:09 #403 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-2201-0109-06a2dc08e86f/main.spi
00:00:09 #404 [Verbose] >
00:00:09 #405 [Verbose] > ╭─[ 134.65ms - stdout ]────────────────────────────────────────────────────────╮
00:00:09 #406 [Verbose] > │ () │
00:00:09 #407 [Verbose] > │ │
00:00:09 #408 [Verbose] > │ │
00:00:09 #409 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:10 #410 [Verbose] > [NbConvertApp] Converting notebook optionm'.dib.ipynb to html
00:00:10 #411 [Verbose] > /opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:00:10 #412 [Verbose] > validate(nb)
00:00:11 #413 [Verbose] > /opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:00:11 #414 [Verbose] > return _pygments_highlight(
00:00:11 #415 [Verbose] > [NbConvertApp] Writing 306666 bytes to optionm'.dib.html
00:00:11 #416 [Debug] executeAsync / exitCode: 0 / output.Length: 27248
00:00:11 #417 [Debug] main / executeCommand / exitCode: 0
00:00:00 #1 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #2 [Debug] executeAsync / options: { Command =
"dotnet "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 --default-int i32 --default-float f64"
WorkingDirectory = None
CancellationToken = Some System.Threading.CancellationToken
OnLine = Some <fun:main@464-1020> }
00:00:00 #3 [Verbose] > pwd: /home/runner/work/polyglot/polyglot/lib/spiral
00:00:00 #4 [Verbose] > dll_path: /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release
00:00:00 #5 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #6 [Verbose] waitForPortAccess / port: 13805 / retry: 0
00:00:00 #7 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #8 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #9 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #10 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #11 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #12 [Verbose] > Starting the Spiral Server. It is bound to: http://localhost:13805
00:00:00 #13 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #14 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #15 [Debug] sendJson / port: 13805 / json: {"Ping":true} / result.Length:
00:00:00 #16 [Verbose] awaitCompiler / Ping / result: Some(null) / port: 13805 / retry: 0
00:00:00 #17 [Verbose] > Server bound to: http://localhost:13805
00:00:00 #18 [Debug] executeAsync / options: { Command = "pwsh -c "../../scripts/invoke-dib.ps1 \"am'.dib\"""
WorkingDirectory = None
CancellationToken = Some System.Threading.CancellationToken
OnLine = None }
00:00:02 #19 [Verbose] >
00:00:02 #20 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:02 #21 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:02 #22 [Verbose] > │ # am' │
00:00:02 #23 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:02 #24 [Verbose] >
00:00:02 #25 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:02 #26 [Verbose] > // // test
00:00:02 #27 [Verbose] >
00:00:02 #28 [Verbose] > open testing
00:00:02 #29 [Verbose] >
00:00:02 #30 [Verbose] > prototype append t : t -> t -> t
00:00:04 #31 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-2777-7793-7e1e6ffaba51/main.spi
00:00:05 #32 [Verbose] >
00:00:05 #33 [Verbose] > ╭─[ 3.63s - stdout ]───────────────────────────────────────────────────────────╮
00:00:05 #34 [Verbose] > │ () │
00:00:05 #35 [Verbose] > │ │
00:00:05 #36 [Verbose] > │ │
00:00:05 #37 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:05 #38 [Verbose] >
00:00:05 #39 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:05 #40 [Verbose] > open rust_operators
00:00:06 #41 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-3008-0883-06ca2bc89530/main.spi
00:00:06 #42 [Verbose] >
00:00:06 #43 [Verbose] > ╭─[ 180.56ms - stdout ]────────────────────────────────────────────────────────╮
00:00:06 #44 [Verbose] > │ () │
00:00:06 #45 [Verbose] > │ │
00:00:06 #46 [Verbose] > │ │
00:00:06 #47 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #48 [Verbose] >
00:00:06 #49 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 #50 [Verbose] > inl types () =
00:00:06 #51 [Verbose] > global "[[<Fable.Core.Erase; Fable.Core.Emit(\"[[$0]]\")>]] type Slice<'T> =
00:00:06 #52 [Verbose] > class end"
00:00:06 #53 [Verbose] > global "[[<Fable.Core.Erase; Fable.Core.Emit(\"[[$0; $1]]\")>]] type
00:00:06 #54 [Verbose] > Slice'<'T, 'U> = class end"
00:00:06 #55 [Verbose] > global "[[<Fable.Core.Erase; Fable.Core.Emit(\"Vec<$0>\")>]] type Vec<'T> =
00:00:06 #56 [Verbose] > class end"
00:00:06 #57 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-3027-2702-21e6eef4d1ef/main.spi
00:00:06 #58 [Verbose] >
00:00:06 #59 [Verbose] > ╭─[ 171.32ms - stdout ]────────────────────────────────────────────────────────╮
00:00:06 #60 [Verbose] > │ () │
00:00:06 #61 [Verbose] > │ │
00:00:06 #62 [Verbose] > │ │
00:00:06 #63 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #64 [Verbose] >
00:00:06 #65 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 #66 [Verbose] > nominal slice t = $"Slice<`t>"
00:00:06 #67 [Verbose] > nominal slice' t u = $"Slice'<`t, `u>"
00:00:06 #68 [Verbose] > nominal vec t = $"Vec<`t>"
00:00:06 #69 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-3043-4387-49bfe0fa7a98/main.spi
00:00:06 #70 [Verbose] >
00:00:06 #71 [Verbose] > ╭─[ 151.63ms - stdout ]────────────────────────────────────────────────────────╮
00:00:06 #72 [Verbose] > │ () │
00:00:06 #73 [Verbose] > │ │
00:00:06 #74 [Verbose] > │ │
00:00:06 #75 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #76 [Verbose] >
00:00:06 #77 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:06 #78 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:06 #79 [Verbose] > │ ## append │
00:00:06 #80 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #81 [Verbose] >
00:00:06 #82 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 #83 [Verbose] > instance append a dim {int; number} t =
00:00:06 #84 [Verbose] > am.append
00:00:06 #85 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-3059-5929-50f55b9cac26/main.spi
00:00:06 #86 [Verbose] >
00:00:06 #87 [Verbose] > ╭─[ 154.35ms - stdout ]────────────────────────────────────────────────────────╮
00:00:06 #88 [Verbose] > │ () │
00:00:06 #89 [Verbose] > │ │
00:00:06 #90 [Verbose] > │ │
00:00:06 #91 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #92 [Verbose] >
00:00:06 #93 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:06 #94 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:06 #95 [Verbose] > │ ## /@ │
00:00:06 #96 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #97 [Verbose] >
00:00:06 #98 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 #99 [Verbose] > inl (/@) a b =
00:00:06 #100 [Verbose] > b |> append a
00:00:06 #101 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-3074-7477-71eed2865b48/main.spi
00:00:06 #102 [Verbose] >
00:00:06 #103 [Verbose] > ╭─[ 178.04ms - stdout ]────────────────────────────────────────────────────────╮
00:00:06 #104 [Verbose] > │ () │
00:00:06 #105 [Verbose] > │ │
00:00:06 #106 [Verbose] > │ │
00:00:06 #107 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #108 [Verbose] >
00:00:06 #109 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 #110 [Verbose] > // // test
00:00:06 #111 [Verbose] >
00:00:06 #112 [Verbose] > a ;[[ "a"; "b" ]] /@ a ;[[ "c"; "d" ]]
00:00:06 #113 [Verbose] > |> _assert_eq (a ;[[ "a"; "b"; "c"; "d" ]] : _ i32 _)
00:00:06 #114 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-3092-9287-91715510a156/main.spi
00:00:07 #115 [Verbose] >
00:00:07 #116 [Verbose] > ╭─[ 1.03s - stdout ]───────────────────────────────────────────────────────────╮
00:00:07 #117 [Verbose] > │ type Mut0 = {mutable l0 : int32} │
00:00:07 #118 [Verbose] > │ let rec method1 (v0 : (string [])) : (string []) = │
00:00:07 #119 [Verbose] > │ v0 │
00:00:07 #120 [Verbose] > │ and method2 (v0 : int32, v1 : Mut0) : bool = │
00:00:07 #121 [Verbose] > │ let v2 : int32 = v1.l0 │
00:00:07 #122 [Verbose] > │ let v3 : bool = v2 < v0 │
00:00:07 #123 [Verbose] > │ v3 │
00:00:07 #124 [Verbose] > │ and method3 (v0 : (string []), v1 : (string []), v2 : int32) : bool = │
00:00:07 #125 [Verbose] > │ let v3 : int32 = v0.Length │
00:00:07 #126 [Verbose] > │ let v4 : bool = v2 < v3 │
00:00:07 #127 [Verbose] > │ if v4 then │
00:00:07 #128 [Verbose] > │ let v5 : string = v0.[int v2] │
00:00:07 #129 [Verbose] > │ let v6 : string = v1.[int v2] │
00:00:07 #130 [Verbose] > │ let v7 : bool = v5 = v6 │
00:00:07 #131 [Verbose] > │ if v7 then │
00:00:07 #132 [Verbose] > │ let v8 : int32 = v2 + 1 │
00:00:07 #133 [Verbose] > │ method3(v0, v1, v8) │
00:00:07 #134 [Verbose] > │ else │
00:00:07 #135 [Verbose] > │ false │
00:00:07 #136 [Verbose] > │ else │
00:00:07 #137 [Verbose] > │ true │
00:00:07 #138 [Verbose] > │ and method4 (v0 : bool) : bool = │
00:00:07 #139 [Verbose] > │ v0 │
00:00:07 #140 [Verbose] > │ and method0 () : unit = │
00:00:07 #141 [Verbose] > │ let v0 : string = "a" │
00:00:07 #142 [Verbose] > │ let v1 : string = "b" │
00:00:07 #143 [Verbose] > │ let v2 : (string []) = [|v0; v1|] │
00:00:07 #144 [Verbose] > │ let v3 : (string []) = method1(v2) │
00:00:07 #145 [Verbose] > │ let v4 : string = "c" │
00:00:07 #146 [Verbose] > │ let v5 : string = "d" │
00:00:07 #147 [Verbose] > │ let v6 : (string []) = [|v4; v5|] │
00:00:07 #148 [Verbose] > │ let v7 : (string []) = method1(v6) │
00:00:07 #149 [Verbose] > │ let v8 : int32 = v3.Length │
00:00:07 #150 [Verbose] > │ let v9 : int32 = v7.Length │
00:00:07 #151 [Verbose] > │ let v10 : int32 = v8 + v9 │
00:00:07 #152 [Verbose] > │ let v11 : (string []) = Array.zeroCreate<string> (v10) │
00:00:07 #153 [Verbose] > │ let v12 : Mut0 = {l0 = 0} : Mut0 │
00:00:07 #154 [Verbose] > │ while method2(v10, v12) do │
00:00:07 #155 [Verbose] > │ let v14 : int32 = v12.l0 │
00:00:07 #156 [Verbose] > │ let v15 : bool = v14 < v8 │
00:00:07 #157 [Verbose] > │ let v19 : string = │
00:00:07 #158 [Verbose] > │ if v15 then │
00:00:07 #159 [Verbose] > │ let v16 : string = v3.[int v14] │
00:00:07 #160 [Verbose] > │ v16 │
00:00:07 #161 [Verbose] > │ else │
00:00:07 #162 [Verbose] > │ let v17 : int32 = v14 - v8 │
00:00:07 #163 [Verbose] > │ let v18 : string = v7.[int v17] │
00:00:07 #164 [Verbose] > │ v18 │
00:00:07 #165 [Verbose] > │ v11.[int v14] <- v19 │
00:00:07 #166 [Verbose] > │ let v20 : int32 = v14 + 1 │
00:00:07 #167 [Verbose] > │ v12.l0 <- v20 │
00:00:07 #168 [Verbose] > │ () │
00:00:07 #169 [Verbose] > │ let v21 : (string []) = [|v0; v1; v4; v5|] │
00:00:07 #170 [Verbose] > │ let v22 : (string []) = method1(v21) │
00:00:07 #171 [Verbose] > │ let v23 : int32 = v11.Length │
00:00:07 #172 [Verbose] > │ let v24 : int32 = v22.Length │
00:00:07 #173 [Verbose] > │ let v25 : bool = v23 = v24 │
00:00:07 #174 [Verbose] > │ let v26 : bool = v25 <> true │
00:00:07 #175 [Verbose] > │ let v29 : bool = │
00:00:07 #176 [Verbose] > │ if v26 then │
00:00:07 #177 [Verbose] > │ false │
00:00:07 #178 [Verbose] > │ else │
00:00:07 #179 [Verbose] > │ let v27 : int32 = 0 │
00:00:07 #180 [Verbose] > │ method3(v11, v22, v27) │
00:00:07 #181 [Verbose] > │ let v31 : bool = │
00:00:07 #182 [Verbose] > │ if v29 then │
00:00:07 #183 [Verbose] > │ true │
00:00:07 #184 [Verbose] > │ else │
00:00:07 #185 [Verbose] > │ method4(v29) │
00:00:07 #186 [Verbose] > │ let v32 : string = $"__expect / actual: %A{v11} / expected: %A{v22}" │
00:00:07 #187 [Verbose] > │ let v33 : bool = v31 = false │
00:00:07 #188 [Verbose] > │ if v33 then │
00:00:07 #189 [Verbose] > │ failwith<unit> v32 │
00:00:07 #190 [Verbose] > │ method0() │
00:00:07 #191 [Verbose] > │ │
00:00:07 #192 [Verbose] > │ │
00:00:07 #193 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #194 [Verbose] >
00:00:07 #195 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:07 #196 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:07 #197 [Verbose] > │ ## collect │
00:00:07 #198 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #199 [Verbose] >
00:00:07 #200 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:07 #201 [Verbose] > inl collect forall t r. (fn : t -> a i32 r) (items : a i32 t) : a i32 r =
00:00:07 #202 [Verbose] > items
00:00:07 #203 [Verbose] > |> am.map fn
00:00:07 #204 [Verbose] > |> am.fold (/@) (a ;[[]])
00:00:07 #205 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-3196-9640-9a96d62bd98f/main.spi
00:00:07 #206 [Verbose] >
00:00:07 #207 [Verbose] > ╭─[ 137.08ms - stdout ]────────────────────────────────────────────────────────╮
00:00:07 #208 [Verbose] > │ () │
00:00:07 #209 [Verbose] > │ │
00:00:07 #210 [Verbose] > │ │
00:00:07 #211 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #212 [Verbose] >
00:00:07 #213 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:07 #214 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:07 #215 [Verbose] > │ ## choose │
00:00:07 #216 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #217 [Verbose] >
00:00:07 #218 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:07 #219 [Verbose] > inl choose f l =
00:00:07 #220 [Verbose] > (l, [[]])
00:00:07 #221 [Verbose] > ||> am.foldBack fun x acc =>
00:00:07 #222 [Verbose] > match f x with
00:00:07 #223 [Verbose] > | Some y => y :: acc
00:00:07 #224 [Verbose] > | None => acc
00:00:07 #225 [Verbose] > |> listm.toArray
00:00:08 #226 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-3210-1019-1476e6d0b4b2/main.spi
00:00:08 #227 [Verbose] >
00:00:08 #228 [Verbose] > ╭─[ 127.63ms - stdout ]────────────────────────────────────────────────────────╮
00:00:08 #229 [Verbose] > │ () │
00:00:08 #230 [Verbose] > │ │
00:00:08 #231 [Verbose] > │ │
00:00:08 #232 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #233 [Verbose] >
00:00:08 #234 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:08 #235 [Verbose] > // // test
00:00:08 #236 [Verbose] >
00:00:08 #237 [Verbose] > (am.init 10i32 id : a _ _)
00:00:08 #238 [Verbose] > |> choose (fun x => if x % 2 = 0 then Some x else None)
00:00:08 #239 [Verbose] > |> _assert_eq (a ;[[ 0; 2; 4; 6; 8 ]] : _ i32 _)
00:00:08 #240 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-3223-2300-23576c78ee77/main.spi
00:00:08 #241 [Verbose] >
00:00:08 #242 [Verbose] > ╭─[ 425.37ms - stdout ]────────────────────────────────────────────────────────╮
00:00:08 #243 [Verbose] > │ type Mut0 = {mutable l0 : int32} │
00:00:08 #244 [Verbose] > │ and UH0 = │
00:00:08 #245 [Verbose] > │ | UH0_0 of int32 * UH0 │
00:00:08 #246 [Verbose] > │ | UH0_1 │
00:00:08 #247 [Verbose] > │ and Mut1 = {mutable l0 : int32; mutable l1 : UH0} │
00:00:08 #248 [Verbose] > │ and [<Struct>] US0 = │
00:00:08 #249 [Verbose] > │ | US0_0 │
00:00:08 #250 [Verbose] > │ | US0_1 of f1_0 : int32 │
00:00:08 #251 [Verbose] > │ let rec method1 (v0 : Mut0) : bool = │
00:00:08 #252 [Verbose] > │ let v1 : int32 = v0.l0 │
00:00:08 #253 [Verbose] > │ let v2 : bool = v1 < 10 │
00:00:08 #254 [Verbose] > │ v2 │
00:00:08 #255 [Verbose] > │ and method2 (v0 : int32, v1 : Mut1) : bool = │
00:00:08 #256 [Verbose] > │ let v2 : int32 = v1.l0 │
00:00:08 #257 [Verbose] > │ let v3 : bool = v2 < v0 │
00:00:08 #258 [Verbose] > │ v3 │
00:00:08 #259 [Verbose] > │ and method4 (v0 : UH0, v1 : int32) : int32 = │
00:00:08 #260 [Verbose] > │ match v0 with │
00:00:08 #261 [Verbose] > │ | UH0_0(v2, v3) -> (* Cons *) │
00:00:08 #262 [Verbose] > │ let v4 : int32 = v1 + 1 │
00:00:08 #263 [Verbose] > │ method4(v3, v4) │
00:00:08 #264 [Verbose] > │ | UH0_1 -> (* Nil *) │
00:00:08 #265 [Verbose] > │ v1 │
00:00:08 #266 [Verbose] > │ and method5 (v0 : (int32 []), v1 : UH0, v2 : int32) : int32 = │
00:00:08 #267 [Verbose] > │ match v1 with │
00:00:08 #268 [Verbose] > │ | UH0_0(v3, v4) -> (* Cons *) │
00:00:08 #269 [Verbose] > │ v0.[int v2] <- v3 │
00:00:08 #270 [Verbose] > │ let v5 : int32 = v2 + 1 │
00:00:08 #271 [Verbose] > │ method5(v0, v4, v5) │
00:00:08 #272 [Verbose] > │ | UH0_1 -> (* Nil *) │
00:00:08 #273 [Verbose] > │ v2 │
00:00:08 #274 [Verbose] > │ and method3 (v0 : UH0) : (int32 []) = │
00:00:08 #275 [Verbose] > │ let v1 : int32 = 0 │
00:00:08 #276 [Verbose] > │ let v2 : int32 = method4(v0, v1) │
00:00:08 #277 [Verbose] > │ let v3 : (int32 []) = Array.zeroCreate<int32> (v2) │
00:00:08 #278 [Verbose] > │ let v4 : int32 = 0 │
00:00:08 #279 [Verbose] > │ let v5 : int32 = method5(v3, v0, v4) │
00:00:08 #280 [Verbose] > │ v3 │
00:00:08 #281 [Verbose] > │ and method6 (v0 : (int32 [])) : (int32 []) = │
00:00:08 #282 [Verbose] > │ v0 │
00:00:08 #283 [Verbose] > │ and method7 (v0 : (int32 []), v1 : (int32 []), v2 : int32) : bool = │
00:00:08 #284 [Verbose] > │ let v3 : int32 = v0.Length │
00:00:08 #285 [Verbose] > │ let v4 : bool = v2 < v3 │
00:00:08 #286 [Verbose] > │ if v4 then │
00:00:08 #287 [Verbose] > │ let v5 : int32 = v0.[int v2] │
00:00:08 #288 [Verbose] > │ let v6 : int32 = v1.[int v2] │
00:00:08 #289 [Verbose] > │ let v7 : bool = v5 = v6 │
00:00:08 #290 [Verbose] > │ if v7 then │
00:00:08 #291 [Verbose] > │ let v8 : int32 = v2 + 1 │
00:00:08 #292 [Verbose] > │ method7(v0, v1, v8) │
00:00:08 #293 [Verbose] > │ else │
00:00:08 #294 [Verbose] > │ false │
00:00:08 #295 [Verbose] > │ else │
00:00:08 #296 [Verbose] > │ true │
00:00:08 #297 [Verbose] > │ and method8 (v0 : bool) : bool = │
00:00:08 #298 [Verbose] > │ v0 │
00:00:08 #299 [Verbose] > │ and method0 () : unit = │
00:00:08 #300 [Verbose] > │ let v0 : (int32 []) = Array.zeroCreate<int32> (10) │
00:00:08 #301 [Verbose] > │ let v1 : Mut0 = {l0 = 0} : Mut0 │
00:00:08 #302 [Verbose] > │ while method1(v1) do │
00:00:08 #303 [Verbose] > │ let v3 : int32 = v1.l0 │
00:00:08 #304 [Verbose] > │ v0.[int v3] <- v3 │
00:00:08 #305 [Verbose] > │ let v4 : int32 = v3 + 1 │
00:00:08 #306 [Verbose] > │ v1.l0 <- v4 │
00:00:08 #307 [Verbose] > │ () │
00:00:08 #308 [Verbose] > │ let v5 : int32 = v0.Length │
00:00:08 #309 [Verbose] > │ let v6 : UH0 = UH0_1 │
00:00:08 #310 [Verbose] > │ let v7 : Mut1 = {l0 = 0; l1 = v6} : Mut1 │
00:00:08 #311 [Verbose] > │ while method2(v5, v7) do │
00:00:08 #312 [Verbose] > │ let v9 : int32 = v7.l0 │
00:00:08 #313 [Verbose] > │ let v10 : int32 = -v9 │
00:00:08 #314 [Verbose] > │ let v11 : int32 = v10 + v5 │
00:00:08 #315 [Verbose] > │ let v12 : int32 = v11 - 1 │
00:00:08 #316 [Verbose] > │ let v13 : UH0 = v7.l1 │
00:00:08 #317 [Verbose] > │ let v14 : int32 = v0.[int v12] │
00:00:08 #318 [Verbose] > │ let v15 : int32 = v14 % 2 │
00:00:08 #319 [Verbose] > │ let v16 : bool = v15 = 0 │
00:00:08 #320 [Verbose] > │ let v19 : US0 = │
00:00:08 #321 [Verbose] > │ if v16 then │
00:00:08 #322 [Verbose] > │ US0_1(v14) │
00:00:08 #323 [Verbose] > │ else │
00:00:08 #324 [Verbose] > │ US0_0 │
00:00:08 #325 [Verbose] > │ let v23 : UH0 = │
00:00:08 #326 [Verbose] > │ match v19 with │
00:00:08 #327 [Verbose] > │ | US0_0 -> (* None *) │
00:00:08 #328 [Verbose] > │ v13 │
00:00:08 #329 [Verbose] > │ | US0_1(v20) -> (* Some *) │
00:00:08 #330 [Verbose] > │ UH0_0(v20, v13) │
00:00:08 #331 [Verbose] > │ let v24 : int32 = v9 + 1 │
00:00:08 #332 [Verbose] > │ v7.l0 <- v24 │
00:00:08 #333 [Verbose] > │ v7.l1 <- v23 │
00:00:08 #334 [Verbose] > │ () │
00:00:08 #335 [Verbose] > │ let v25 : UH0 = v7.l1 │
00:00:08 #336 [Verbose] > │ let v26 : (int32 []) = method3(v25) │
00:00:08 #337 [Verbose] > │ let v27 : (int32 []) = [|0; 2; 4; 6; 8|] │
00:00:08 #338 [Verbose] > │ let v28 : (int32 []) = method6(v27) │
00:00:08 #339 [Verbose] > │ let v29 : int32 = v26.Length │
00:00:08 #340 [Verbose] > │ let v30 : int32 = v28.Length │
00:00:08 #341 [Verbose] > │ let v31 : bool = v29 = v30 │
00:00:08 #342 [Verbose] > │ let v32 : bool = v31 <> true │
00:00:08 #343 [Verbose] > │ let v35 : bool = │
00:00:08 #344 [Verbose] > │ if v32 then │
00:00:08 #345 [Verbose] > │ false │
00:00:08 #346 [Verbose] > │ else │
00:00:08 #347 [Verbose] > │ let v33 : int32 = 0 │
00:00:08 #348 [Verbose] > │ method7(v26, v28, v33) │
00:00:08 #349 [Verbose] > │ let v37 : bool = │
00:00:08 #350 [Verbose] > │ if v35 then │
00:00:08 #351 [Verbose] > │ true │
00:00:08 #352 [Verbose] > │ else │
00:00:08 #353 [Verbose] > │ method8(v35) │
00:00:08 #354 [Verbose] > │ let v38 : string = $"__expect / actual: %A{v26} / expected: %A{v28}" │
00:00:08 #355 [Verbose] > │ let v39 : bool = v37 = false │
00:00:08 #356 [Verbose] > │ if v39 then │
00:00:08 #357 [Verbose] > │ failwith<unit> v38 │
00:00:08 #358 [Verbose] > │ method0() │
00:00:08 #359 [Verbose] > │ │
00:00:08 #360 [Verbose] > │ │
00:00:08 #361 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #362 [Verbose] >
00:00:08 #363 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:08 #364 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:08 #365 [Verbose] > │ ## sum │
00:00:08 #366 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #367 [Verbose] >
00:00:08 #368 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:08 #369 [Verbose] > inl sum (a' : a _ _) =
00:00:08 #370 [Verbose] > a' |> am.fold (+) 0
00:00:08 #371 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-3266-6696-69aee646338a/main.spi
00:00:08 #372 [Verbose] >
00:00:08 #373 [Verbose] > ╭─[ 142.14ms - stdout ]────────────────────────────────────────────────────────╮
00:00:08 #374 [Verbose] > │ () │
00:00:08 #375 [Verbose] > │ │
00:00:08 #376 [Verbose] > │ │
00:00:08 #377 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #378 [Verbose] >
00:00:08 #379 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:08 #380 [Verbose] > // // test
00:00:08 #381 [Verbose] >
00:00:08 #382 [Verbose] > am.init 10i32 id
00:00:08 #383 [Verbose] > |> sum
00:00:08 #384 [Verbose] > |> _assert_eq 45
00:00:08 #385 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-3281-8103-8f0a7cc24a91/main.spi
00:00:08 #386 [Verbose] >
00:00:08 #387 [Verbose] > ╭─[ 285.20ms - stdout ]────────────────────────────────────────────────────────╮
00:00:08 #388 [Verbose] > │ type Mut0 = {mutable l0 : int32} │
00:00:08 #389 [Verbose] > │ and Mut1 = {mutable l0 : int32; mutable l1 : int32} │
00:00:08 #390 [Verbose] > │ let rec method1 (v0 : Mut0) : bool = │
00:00:08 #391 [Verbose] > │ let v1 : int32 = v0.l0 │
00:00:08 #392 [Verbose] > │ let v2 : bool = v1 < 10 │
00:00:08 #393 [Verbose] > │ v2 │
00:00:08 #394 [Verbose] > │ and method2 (v0 : int32, v1 : Mut1) : bool = │
00:00:08 #395 [Verbose] > │ let v2 : int32 = v1.l0 │
00:00:08 #396 [Verbose] > │ let v3 : bool = v2 < v0 │
00:00:08 #397 [Verbose] > │ v3 │
00:00:08 #398 [Verbose] > │ and method3 (v0 : bool) : bool = │
00:00:08 #399 [Verbose] > │ v0 │
00:00:08 #400 [Verbose] > │ and method0 () : unit = │
00:00:08 #401 [Verbose] > │ let v0 : (int32 []) = Array.zeroCreate<int32> (10) │
00:00:08 #402 [Verbose] > │ let v1 : Mut0 = {l0 = 0} : Mut0 │
00:00:08 #403 [Verbose] > │ while method1(v1) do │
00:00:08 #404 [Verbose] > │ let v3 : int32 = v1.l0 │
00:00:08 #405 [Verbose] > │ v0.[int v3] <- v3 │
00:00:08 #406 [Verbose] > │ let v4 : int32 = v3 + 1 │
00:00:08 #407 [Verbose] > │ v1.l0 <- v4 │
00:00:08 #408 [Verbose] > │ () │
00:00:08 #409 [Verbose] > │ let v5 : int32 = v0.Length │
00:00:08 #410 [Verbose] > │ let v6 : Mut1 = {l0 = 0; l1 = 0} : Mut1 │
00:00:08 #411 [Verbose] > │ while method2(v5, v6) do │
00:00:08 #412 [Verbose] > │ let v8 : int32 = v6.l0 │
00:00:08 #413 [Verbose] > │ let v9 : int32 = v6.l1 │
00:00:08 #414 [Verbose] > │ let v10 : int32 = v0.[int v8] │
00:00:08 #415 [Verbose] > │ let v11 : int32 = v9 + v10 │
00:00:08 #416 [Verbose] > │ let v12 : int32 = v8 + 1 │
00:00:08 #417 [Verbose] > │ v6.l0 <- v12 │
00:00:08 #418 [Verbose] > │ v6.l1 <- v11 │
00:00:08 #419 [Verbose] > │ () │
00:00:08 #420 [Verbose] > │ let v13 : int32 = v6.l1 │
00:00:08 #421 [Verbose] > │ let v14 : bool = v13 = 45 │
00:00:08 #422 [Verbose] > │ let v16 : bool = │
00:00:08 #423 [Verbose] > │ if v14 then │
00:00:08 #424 [Verbose] > │ true │
00:00:08 #425 [Verbose] > │ else │
00:00:08 #426 [Verbose] > │ method3(v14) │
00:00:08 #427 [Verbose] > │ let v17 : string = $"__expect / actual: %A{v13} / expected: %A{45}" │
00:00:08 #428 [Verbose] > │ let v18 : bool = v16 = false │
00:00:08 #429 [Verbose] > │ if v18 then │
00:00:08 #430 [Verbose] > │ failwith<unit> v17 │
00:00:08 #431 [Verbose] > │ method0() │
00:00:08 #432 [Verbose] > │ │
00:00:08 #433 [Verbose] > │ │
00:00:09 #434 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #435 [Verbose] >
00:00:09 #436 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:09 #437 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:09 #438 [Verbose] > │ ## init_series │
00:00:09 #439 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #440 [Verbose] >
00:00:09 #441 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:09 #442 [Verbose] > inl init_series start end inc =
00:00:09 #443 [Verbose] > inl total = conv ((end - start) / inc) + 1
00:00:09 #444 [Verbose] > am.init total (conv >> (*) inc >> (+) start) : a i32 _
00:00:09 #445 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-3310-1028-1a6dc9ed6b78/main.spi
00:00:09 #446 [Verbose] >
00:00:09 #447 [Verbose] > ╭─[ 139.29ms - stdout ]────────────────────────────────────────────────────────╮
00:00:09 #448 [Verbose] > │ () │
00:00:09 #449 [Verbose] > │ │
00:00:09 #450 [Verbose] > │ │
00:00:09 #451 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #452 [Verbose] >
00:00:09 #453 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:09 #454 [Verbose] > // // test
00:00:09 #455 [Verbose] >
00:00:09 #456 [Verbose] > init_series 0 1 0.5
00:00:09 #457 [Verbose] > |> _assert_eq (a ;[[0f64; 0.5; 1]])
00:00:09 #458 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-3324-2419-2fe0da85db3e/main.spi
00:00:09 #459 [Verbose] >
00:00:09 #460 [Verbose] > ╭─[ 176.60ms - stdout ]────────────────────────────────────────────────────────╮
00:00:09 #461 [Verbose] > │ type Mut0 = {mutable l0 : int32} │
00:00:09 #462 [Verbose] > │ let rec method1 (v0 : Mut0) : bool = │
00:00:09 #463 [Verbose] > │ let v1 : int32 = v0.l0 │
00:00:09 #464 [Verbose] > │ let v2 : bool = v1 < 3 │
00:00:09 #465 [Verbose] > │ v2 │
00:00:09 #466 [Verbose] > │ and method2 (v0 : (float [])) : (float []) = │
00:00:09 #467 [Verbose] > │ v0 │
00:00:09 #468 [Verbose] > │ and method3 (v0 : (float []), v1 : (float []), v2 : int32) : bool = │
00:00:09 #469 [Verbose] > │ let v3 : int32 = v0.Length │
00:00:09 #470 [Verbose] > │ let v4 : bool = v2 < v3 │
00:00:09 #471 [Verbose] > │ if v4 then │
00:00:09 #472 [Verbose] > │ let v5 : float = v0.[int v2] │
00:00:09 #473 [Verbose] > │ let v6 : float = v1.[int v2] │
00:00:09 #474 [Verbose] > │ let v7 : bool = v5 = v6 │
00:00:09 #475 [Verbose] > │ if v7 then │
00:00:09 #476 [Verbose] > │ let v8 : int32 = v2 + 1 │
00:00:09 #477 [Verbose] > │ method3(v0, v1, v8) │
00:00:09 #478 [Verbose] > │ else │
00:00:09 #479 [Verbose] > │ false │
00:00:09 #480 [Verbose] > │ else │
00:00:09 #481 [Verbose] > │ true │
00:00:09 #482 [Verbose] > │ and method4 (v0 : bool) : bool = │
00:00:09 #483 [Verbose] > │ v0 │
00:00:09 #484 [Verbose] > │ and method0 () : unit = │
00:00:09 #485 [Verbose] > │ let v0 : (float []) = Array.zeroCreate<float> (3) │
00:00:09 #486 [Verbose] > │ let v1 : Mut0 = {l0 = 0} : Mut0 │
00:00:09 #487 [Verbose] > │ while method1(v1) do │
00:00:09 #488 [Verbose] > │ let v3 : int32 = v1.l0 │
00:00:09 #489 [Verbose] > │ let v4 : float = float v3 │
00:00:09 #490 [Verbose] > │ let v5 : float = 0.5 * v4 │
00:00:09 #491 [Verbose] > │ v0.[int v3] <- v5 │
00:00:09 #492 [Verbose] > │ let v6 : int32 = v3 + 1 │
00:00:09 #493 [Verbose] > │ v1.l0 <- v6 │
00:00:09 #494 [Verbose] > │ () │
00:00:09 #495 [Verbose] > │ let v7 : (float []) = [|0.0; 0.5; 1.0|] │
00:00:09 #496 [Verbose] > │ let v8 : (float []) = method2(v7) │
00:00:09 #497 [Verbose] > │ let v9 : int32 = v0.Length │
00:00:09 #498 [Verbose] > │ let v10 : int32 = v8.Length │
00:00:09 #499 [Verbose] > │ let v11 : bool = v9 = v10 │
00:00:09 #500 [Verbose] > │ let v12 : bool = v11 <> true │
00:00:09 #501 [Verbose] > │ let v15 : bool = │
00:00:09 #502 [Verbose] > │ if v12 then │
00:00:09 #503 [Verbose] > │ false │
00:00:09 #504 [Verbose] > │ else │
00:00:09 #505 [Verbose] > │ let v13 : int32 = 0 │
00:00:09 #506 [Verbose] > │ method3(v0, v8, v13) │
00:00:09 #507 [Verbose] > │ let v17 : bool = │
00:00:09 #508 [Verbose] > │ if v15 then │
00:00:09 #509 [Verbose] > │ true │
00:00:09 #510 [Verbose] > │ else │
00:00:09 #511 [Verbose] > │ method4(v15) │
00:00:09 #512 [Verbose] > │ let v18 : string = $"__expect / actual: %A{v0} / expected: %A{v8}" │
00:00:09 #513 [Verbose] > │ let v19 : bool = v17 = false │
00:00:09 #514 [Verbose] > │ if v19 then │
00:00:09 #515 [Verbose] > │ failwith<unit> v18 │
00:00:09 #516 [Verbose] > │ method0() │
00:00:09 #517 [Verbose] > │ │
00:00:09 #518 [Verbose] > │ │
00:00:09 #519 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #520 [Verbose] >
00:00:09 #521 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:09 #522 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:09 #523 [Verbose] > │ ## head │
00:00:09 #524 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #525 [Verbose] >
00:00:09 #526 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:09 #527 [Verbose] > inl head (ar : a _ _) =
00:00:09 #528 [Verbose] > if var_is ar || length ar > 0
00:00:09 #529 [Verbose] > then index ar 0
00:00:09 #530 [Verbose] > else error_type "The length of the array should be greater than 0."
00:00:09 #531 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-3342-4219-4e36c8d74721/main.spi
00:00:09 #532 [Verbose] >
00:00:09 #533 [Verbose] > ╭─[ 135.61ms - stdout ]────────────────────────────────────────────────────────╮
00:00:09 #534 [Verbose] > │ () │
00:00:09 #535 [Verbose] > │ │
00:00:09 #536 [Verbose] > │ │
00:00:09 #537 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #538 [Verbose] >
00:00:09 #539 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:09 #540 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:09 #541 [Verbose] > │ ## last │
00:00:09 #542 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #543 [Verbose] >
00:00:09 #544 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:09 #545 [Verbose] > inl last (ar : a _ _) =
00:00:09 #546 [Verbose] > inl len = length ar
00:00:09 #547 [Verbose] > if var_is ar || len > 0
00:00:09 #548 [Verbose] > then index ar (len - 1)
00:00:09 #549 [Verbose] > else error_type "The length of the array should be greater than 0."
00:00:09 #550 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-3355-5583-569ba5438582/main.spi
00:00:09 #551 [Verbose] >
00:00:09 #552 [Verbose] > ╭─[ 139.75ms - stdout ]────────────────────────────────────────────────────────╮
00:00:09 #553 [Verbose] > │ () │
00:00:09 #554 [Verbose] > │ │
00:00:09 #555 [Verbose] > │ │
00:00:09 #556 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #557 [Verbose] >
00:00:09 #558 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:09 #559 [Verbose] > // // test
00:00:09 #560 [Verbose] >
00:00:09 #561 [Verbose] > am.init 10i32 id
00:00:09 #562 [Verbose] > |> last
00:00:09 #563 [Verbose] > |> _assert_eq 9
00:00:09 #564 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-3369-6984-6c04ec8a9543/main.spi
00:00:09 #565 [Verbose] >
00:00:09 #566 [Verbose] > ╭─[ 152.55ms - stdout ]────────────────────────────────────────────────────────╮
00:00:09 #567 [Verbose] > │ type Mut0 = {mutable l0 : int32} │
00:00:09 #568 [Verbose] > │ let rec method1 (v0 : Mut0) : bool = │
00:00:09 #569 [Verbose] > │ let v1 : int32 = v0.l0 │
00:00:09 #570 [Verbose] > │ let v2 : bool = v1 < 10 │
00:00:09 #571 [Verbose] > │ v2 │
00:00:09 #572 [Verbose] > │ and method2 (v0 : bool) : bool = │
00:00:09 #573 [Verbose] > │ v0 │
00:00:09 #574 [Verbose] > │ and method0 () : unit = │
00:00:09 #575 [Verbose] > │ let v0 : (int32 []) = Array.zeroCreate<int32> (10) │
00:00:09 #576 [Verbose] > │ let v1 : Mut0 = {l0 = 0} : Mut0 │
00:00:09 #577 [Verbose] > │ while method1(v1) do │
00:00:09 #578 [Verbose] > │ let v3 : int32 = v1.l0 │
00:00:09 #579 [Verbose] > │ v0.[int v3] <- v3 │
00:00:09 #580 [Verbose] > │ let v4 : int32 = v3 + 1 │
00:00:09 #581 [Verbose] > │ v1.l0 <- v4 │
00:00:09 #582 [Verbose] > │ () │
00:00:09 #583 [Verbose] > │ let v5 : int32 = v0.Length │
00:00:09 #584 [Verbose] > │ let v6 : int32 = v5 - 1 │
00:00:09 #585 [Verbose] > │ let v7 : int32 = v0.[int v6] │
00:00:09 #586 [Verbose] > │ let v8 : bool = v7 = 9 │
00:00:09 #587 [Verbose] > │ let v10 : bool = │
00:00:09 #588 [Verbose] > │ if v8 then │
00:00:09 #589 [Verbose] > │ true │
00:00:09 #590 [Verbose] > │ else │
00:00:09 #591 [Verbose] > │ method2(v8) │
00:00:09 #592 [Verbose] > │ let v11 : string = $"__expect / actual: %A{v7} / expected: %A{9}" │
00:00:09 #593 [Verbose] > │ let v12 : bool = v10 = false │
00:00:09 #594 [Verbose] > │ if v12 then │
00:00:09 #595 [Verbose] > │ failwith<unit> v11 │
00:00:09 #596 [Verbose] > │ method0() │
00:00:09 #597 [Verbose] > │ │
00:00:09 #598 [Verbose] > │ │
00:00:09 #599 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #600 [Verbose] >
00:00:09 #601 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:09 #602 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:09 #603 [Verbose] > │ ## try_pick │
00:00:09 #604 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #605 [Verbose] >
00:00:09 #606 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:09 #607 [Verbose] > inl try_pick forall t u. (fn : t -> option u) (array : a _ t) : option u =
00:00:09 #608 [Verbose] > (array, None)
00:00:09 #609 [Verbose] > ||> am.foldBack fun x acc =>
00:00:09 #610 [Verbose] > match acc with
00:00:09 #611 [Verbose] > | Some _ => acc
00:00:09 #612 [Verbose] > | None => x |> fn
00:00:09 #613 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-3385-8534-8ce98b657b0a/main.spi
00:00:09 #614 [Verbose] >
00:00:09 #615 [Verbose] > ╭─[ 127.12ms - stdout ]────────────────────────────────────────────────────────╮
00:00:09 #616 [Verbose] > │ () │
00:00:09 #617 [Verbose] > │ │
00:00:09 #618 [Verbose] > │ │
00:00:09 #619 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #620 [Verbose] >
00:00:09 #621 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:09 #622 [Verbose] > // // test
00:00:09 #623 [Verbose] >
00:00:09 #624 [Verbose] > am.init 10i32 id
00:00:09 #625 [Verbose] > |> try_pick (fun x => if x = 5i32 then Some x else None)
00:00:09 #626 [Verbose] > |> _assert_eq (Some 5i32)
00:00:09 #627 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-3398-9814-9cf0d9ee7799/main.spi
00:00:10 #628 [Verbose] >
00:00:10 #629 [Verbose] > ╭─[ 201.39ms - stdout ]────────────────────────────────────────────────────────╮
00:00:10 #630 [Verbose] > │ type Mut0 = {mutable l0 : int32} │
00:00:10 #631 [Verbose] > │ and [<Struct>] US0 = │
00:00:10 #632 [Verbose] > │ | US0_0 │
00:00:10 #633 [Verbose] > │ | US0_1 of f1_0 : int32 │
00:00:10 #634 [Verbose] > │ and Mut1 = {mutable l0 : int32; mutable l1 : US0} │
00:00:10 #635 [Verbose] > │ let rec method1 (v0 : Mut0) : bool = │
00:00:10 #636 [Verbose] > │ let v1 : int32 = v0.l0 │
00:00:10 #637 [Verbose] > │ let v2 : bool = v1 < 10 │
00:00:10 #638 [Verbose] > │ v2 │
00:00:10 #639 [Verbose] > │ and method2 (v0 : int32, v1 : Mut1) : bool = │
00:00:10 #640 [Verbose] > │ let v2 : int32 = v1.l0 │
00:00:10 #641 [Verbose] > │ let v3 : bool = v2 < v0 │
00:00:10 #642 [Verbose] > │ v3 │
00:00:10 #643 [Verbose] > │ and method3 (v0 : bool) : bool = │
00:00:10 #644 [Verbose] > │ v0 │
00:00:10 #645 [Verbose] > │ and method0 () : unit = │
00:00:10 #646 [Verbose] > │ let v0 : (int32 []) = Array.zeroCreate<int32> (10) │
00:00:10 #647 [Verbose] > │ let v1 : Mut0 = {l0 = 0} : Mut0 │
00:00:10 #648 [Verbose] > │ while method1(v1) do │
00:00:10 #649 [Verbose] > │ let v3 : int32 = v1.l0 │
00:00:10 #650 [Verbose] > │ v0.[int v3] <- v3 │
00:00:10 #651 [Verbose] > │ let v4 : int32 = v3 + 1 │
00:00:10 #652 [Verbose] > │ v1.l0 <- v4 │
00:00:10 #653 [Verbose] > │ () │
00:00:10 #654 [Verbose] > │ let v5 : int32 = v0.Length │
00:00:10 #655 [Verbose] > │ let v6 : US0 = US0_0 │
00:00:10 #656 [Verbose] > │ let v7 : Mut1 = {l0 = 0; l1 = v6} : Mut1 │
00:00:10 #657 [Verbose] > │ while method2(v5, v7) do │
00:00:10 #658 [Verbose] > │ let v9 : int32 = v7.l0 │
00:00:10 #659 [Verbose] > │ let v10 : int32 = -v9 │
00:00:10 #660 [Verbose] > │ let v11 : int32 = v10 + v5 │
00:00:10 #661 [Verbose] > │ let v12 : int32 = v11 - 1 │
00:00:10 #662 [Verbose] > │ let v13 : US0 = v7.l1 │
00:00:10 #663 [Verbose] > │ let v14 : int32 = v0.[int v12] │
00:00:10 #664 [Verbose] > │ let v21 : US0 = │
00:00:10 #665 [Verbose] > │ match v13 with │
00:00:10 #666 [Verbose] > │ | US0_0 -> (* None *) │
00:00:10 #667 [Verbose] > │ let v16 : bool = v14 = 5 │
00:00:10 #668 [Verbose] > │ if v16 then │
00:00:10 #669 [Verbose] > │ US0_1(v14) │
00:00:10 #670 [Verbose] > │ else │
00:00:10 #671 [Verbose] > │ US0_0 │
00:00:10 #672 [Verbose] > │ | US0_1(v15) -> (* Some *) │
00:00:10 #673 [Verbose] > │ v13 │
00:00:10 #674 [Verbose] > │ let v22 : int32 = v9 + 1 │
00:00:10 #675 [Verbose] > │ v7.l0 <- v22 │
00:00:10 #676 [Verbose] > │ v7.l1 <- v21 │
00:00:10 #677 [Verbose] > │ () │
00:00:10 #678 [Verbose] > │ let v23 : US0 = v7.l1 │
00:00:10 #679 [Verbose] > │ let v27 : bool = │
00:00:10 #680 [Verbose] > │ match v23 with │
00:00:10 #681 [Verbose] > │ | US0_1(v25) -> (* Some *) │
00:00:10 #682 [Verbose] > │ let v26 : bool = v25 = 5 │
00:00:10 #683 [Verbose] > │ v26 │
00:00:10 #684 [Verbose] > │ | _ -> │
00:00:10 #685 [Verbose] > │ false │
00:00:10 #686 [Verbose] > │ let v29 : bool = │
00:00:10 #687 [Verbose] > │ if v27 then │
00:00:10 #688 [Verbose] > │ true │
00:00:10 #689 [Verbose] > │ else │
00:00:10 #690 [Verbose] > │ method3(v27) │
00:00:10 #691 [Verbose] > │ let v30 : US0 = US0_1(5) │
00:00:10 #692 [Verbose] > │ let v31 : string = $"__expect / actual: %A{v23} / expected: %A{v30}" │
00:00:10 #693 [Verbose] > │ let v32 : bool = v29 = false │
00:00:10 #694 [Verbose] > │ if v32 then │
00:00:10 #695 [Verbose] > │ failwith<unit> v31 │
00:00:10 #696 [Verbose] > │ method0() │
00:00:10 #697 [Verbose] > │ │
00:00:10 #698 [Verbose] > │ │
00:00:10 #699 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:10 #700 [Verbose] >
00:00:10 #701 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:10 #702 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:10 #703 [Verbose] > │ ## indexed' │
00:00:10 #704 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:10 #705 [Verbose] >
00:00:10 #706 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:10 #707 [Verbose] > inl indexed' forall t dim {int; number} dim' {int; number} u {number}. (ar : a
00:00:10 #708 [Verbose] > dim t) : a dim' (u * t) =
00:00:10 #709 [Verbose] > ((0, a ;[[]]), ar)
00:00:10 #710 [Verbose] > ||> am.fold fun (i, acc) x =>
00:00:10 #711 [Verbose] > i + 1, acc /@ a ;[[i, x]]
00:00:10 #712 [Verbose] > |> snd
00:00:10 #713 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-3418-1871-12bfbb493608/main.spi
00:00:10 #714 [Verbose] >
00:00:10 #715 [Verbose] > ╭─[ 130.65ms - stdout ]────────────────────────────────────────────────────────╮
00:00:10 #716 [Verbose] > │ () │
00:00:10 #717 [Verbose] > │ │
00:00:10 #718 [Verbose] > │ │
00:00:10 #719 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:10 #720 [Verbose] >
00:00:10 #721 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:10 #722 [Verbose] > // // test
00:00:10 #723 [Verbose] >
00:00:10 #724 [Verbose] > am.init 3i32 ((*) 2)
00:00:10 #725 [Verbose] > |> indexed'
00:00:10 #726 [Verbose] > |> _assert_eq (a ;[[0i32, 0; 1, 2; 2, 4]] : a i32 _)
00:00:10 #727 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-3431-3182-37eec6df0275/main.spi
00:00:10 #728 [Verbose] >
00:00:10 #729 [Verbose] > ╭─[ 205.55ms - stdout ]────────────────────────────────────────────────────────╮
00:00:10 #730 [Verbose] > │ type Mut0 = {mutable l0 : int32} │
00:00:10 #731 [Verbose] > │ and Mut1 = {mutable l0 : int32; mutable l1 : int32; mutable l2 : (struct │
00:00:10 #732 [Verbose] > │ (int32 * int32) [])} │
00:00:10 #733 [Verbose] > │ let rec method1 (v0 : Mut0) : bool = │
00:00:10 #734 [Verbose] > │ let v1 : int32 = v0.l0 │
00:00:10 #735 [Verbose] > │ let v2 : bool = v1 < 3 │
00:00:10 #736 [Verbose] > │ v2 │
00:00:10 #737 [Verbose] > │ and method2 (v0 : (struct (int32 * int32) [])) : (struct (int32 * int32) []) │
00:00:10 #738 [Verbose] > │ = │
00:00:10 #739 [Verbose] > │ v0 │
00:00:10 #740 [Verbose] > │ and method3 (v0 : int32, v1 : Mut1) : bool = │
00:00:10 #741 [Verbose] > │ let v2 : int32 = v1.l0 │
00:00:10 #742 [Verbose] > │ let v3 : bool = v2 < v0 │
00:00:10 #743 [Verbose] > │ v3 │
00:00:10 #744 [Verbose] > │ and method4 (v0 : int32, v1 : Mut0) : bool = │
00:00:10 #745 [Verbose] > │ let v2 : int32 = v1.l0 │
00:00:10 #746 [Verbose] > │ let v3 : bool = v2 < v0 │
00:00:10 #747 [Verbose] > │ v3 │
00:00:10 #748 [Verbose] > │ and method5 (v0 : (struct (int32 * int32) []), v1 : (struct (int32 * int32) │
00:00:10 #749 [Verbose] > │ []), v2 : int32) : bool = │
00:00:10 #750 [Verbose] > │ let v3 : int32 = v0.Length │
00:00:10 #751 [Verbose] > │ let v4 : bool = v2 < v3 │
00:00:10 #752 [Verbose] > │ if v4 then │
00:00:10 #753 [Verbose] > │ let struct (v5 : int32, v6 : int32) = v0.[int v2] │
00:00:10 #754 [Verbose] > │ let struct (v7 : int32, v8 : int32) = v1.[int v2] │
00:00:10 #755 [Verbose] > │ let v9 : bool = v5 = v7 │
00:00:10 #756 [Verbose] > │ let v11 : bool = │
00:00:10 #757 [Verbose] > │ if v9 then │
00:00:10 #758 [Verbose] > │ let v10 : bool = v6 = v8 │
00:00:10 #759 [Verbose] > │ v10 │
00:00:10 #760 [Verbose] > │ else │
00:00:10 #761 [Verbose] > │ false │
00:00:10 #762 [Verbose] > │ if v11 then │
00:00:10 #763 [Verbose] > │ let v12 : int32 = v2 + 1 │
00:00:10 #764 [Verbose] > │ method5(v0, v1, v12) │
00:00:10 #765 [Verbose] > │ else │
00:00:10 #766 [Verbose] > │ false │
00:00:10 #767 [Verbose] > │ else │
00:00:10 #768 [Verbose] > │ true │
00:00:10 #769 [Verbose] > │ and method6 (v0 : bool) : bool = │
00:00:10 #770 [Verbose] > │ v0 │
00:00:10 #771 [Verbose] > │ and method0 () : unit = │
00:00:10 #772 [Verbose] > │ let v0 : (int32 []) = Array.zeroCreate<int32> (3) │
00:00:10 #773 [Verbose] > │ let v1 : Mut0 = {l0 = 0} : Mut0 │
00:00:10 #774 [Verbose] > │ while method1(v1) do │
00:00:10 #775 [Verbose] > │ let v3 : int32 = v1.l0 │
00:00:10 #776 [Verbose] > │ let v4 : int32 = 2 * v3 │
00:00:10 #777 [Verbose] > │ v0.[int v3] <- v4 │
00:00:10 #778 [Verbose] > │ let v5 : int32 = v3 + 1 │
00:00:10 #779 [Verbose] > │ v1.l0 <- v5 │
00:00:10 #780 [Verbose] > │ () │
00:00:10 #781 [Verbose] > │ let v6 : (struct (int32 * int32) []) = [||] │
00:00:10 #782 [Verbose] > │ let v7 : (struct (int32 * int32) []) = method2(v6) │
00:00:10 #783 [Verbose] > │ let v8 : int32 = v0.Length │
00:00:10 #784 [Verbose] > │ let v9 : Mut1 = {l0 = 0; l1 = 0; l2 = v7} : Mut1 │
00:00:10 #785 [Verbose] > │ while method3(v8, v9) do │
00:00:10 #786 [Verbose] > │ let v11 : int32 = v9.l0 │
00:00:10 #787 [Verbose] > │ let struct (v12 : int32, v13 : (struct (int32 * int32) [])) = v9.l1, │
00:00:10 #788 [Verbose] > │ v9.l2 │
00:00:10 #789 [Verbose] > │ let v14 : int32 = v0.[int v11] │
00:00:10 #790 [Verbose] > │ let v15 : int32 = v12 + 1 │
00:00:10 #791 [Verbose] > │ let v16 : (struct (int32 * int32) []) = [|struct (v12, v14)|] │
00:00:10 #792 [Verbose] > │ let v17 : (struct (int32 * int32) []) = method2(v16) │
00:00:10 #793 [Verbose] > │ let v18 : int32 = v13.Length │
00:00:10 #794 [Verbose] > │ let v19 : int32 = v17.Length │
00:00:10 #795 [Verbose] > │ let v20 : int32 = v18 + v19 │
00:00:10 #796 [Verbose] > │ let v21 : (struct (int32 * int32) []) = Array.zeroCreate<struct │
00:00:10 #797 [Verbose] > │ (int32 * int32)> (v20) │
00:00:10 #798 [Verbose] > │ let v22 : Mut0 = {l0 = 0} : Mut0 │
00:00:10 #799 [Verbose] > │ while method4(v20, v22) do │
00:00:10 #800 [Verbose] > │ let v24 : int32 = v22.l0 │
00:00:10 #801 [Verbose] > │ let v25 : bool = v24 < v18 │
00:00:10 #802 [Verbose] > │ let struct (v31 : int32, v32 : int32) = │
00:00:10 #803 [Verbose] > │ if v25 then │
00:00:10 #804 [Verbose] > │ let struct (v26 : int32, v27 : int32) = v13.[int v24] │
00:00:10 #805 [Verbose] > │ struct (v26, v27) │
00:00:10 #806 [Verbose] > │ else │
00:00:10 #807 [Verbose] > │ let v28 : int32 = v24 - v18 │
00:00:10 #808 [Verbose] > │ let struct (v29 : int32, v30 : int32) = v17.[int v28] │
00:00:10 #809 [Verbose] > │ struct (v29, v30) │
00:00:10 #810 [Verbose] > │ v21.[int v24] <- struct (v31, v32) │
00:00:10 #811 [Verbose] > │ let v33 : int32 = v24 + 1 │
00:00:10 #812 [Verbose] > │ v22.l0 <- v33 │
00:00:10 #813 [Verbose] > │ () │
00:00:10 #814 [Verbose] > │ let v34 : int32 = v11 + 1 │
00:00:10 #815 [Verbose] > │ v9.l0 <- v34 │
00:00:10 #816 [Verbose] > │ v9.l1 <- v15 │
00:00:10 #817 [Verbose] > │ v9.l2 <- v21 │
00:00:10 #818 [Verbose] > │ () │
00:00:10 #819 [Verbose] > │ let struct (v35 : int32, v36 : (struct (int32 * int32) [])) = v9.l1, │
00:00:10 #820 [Verbose] > │ v9.l2 │
00:00:10 #821 [Verbose] > │ let v37 : (struct (int32 * int32) []) = [|struct (0, 0); struct (1, 2); │
00:00:10 #822 [Verbose] > │ struct (2, 4)|] │
00:00:10 #823 [Verbose] > │ let v38 : (struct (int32 * int32) []) = method2(v37) │
00:00:10 #824 [Verbose] > │ let v39 : int32 = v36.Length │
00:00:10 #825 [Verbose] > │ let v40 : int32 = v38.Length │
00:00:10 #826 [Verbose] > │ let v41 : bool = v39 = v40 │
00:00:10 #827 [Verbose] > │ let v42 : bool = v41 <> true │
00:00:10 #828 [Verbose] > │ let v45 : bool = │
00:00:10 #829 [Verbose] > │ if v42 then │
00:00:10 #830 [Verbose] > │ false │
00:00:10 #831 [Verbose] > │ else │
00:00:10 #832 [Verbose] > │ let v43 : int32 = 0 │
00:00:10 #833 [Verbose] > │ method5(v36, v38, v43) │
00:00:10 #834 [Verbose] > │ let v47 : bool = │
00:00:10 #835 [Verbose] > │ if v45 then │
00:00:10 #836 [Verbose] > │ true │
00:00:10 #837 [Verbose] > │ else │
00:00:10 #838 [Verbose] > │ method6(v45) │
00:00:10 #839 [Verbose] > │ let v48 : string = $"__expect / actual: %A{v36} / expected: %A{v38}" │
00:00:10 #840 [Verbose] > │ let v49 : bool = v47 = false │
00:00:10 #841 [Verbose] > │ if v49 then │
00:00:10 #842 [Verbose] > │ failwith<unit> v48 │
00:00:10 #843 [Verbose] > │ method0() │
00:00:10 #844 [Verbose] > │ │
00:00:10 #845 [Verbose] > │ │
00:00:10 #846 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:10 #847 [Verbose] >
00:00:10 #848 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:10 #849 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:10 #850 [Verbose] > │ ## map_base │
00:00:10 #851 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:10 #852 [Verbose] >
00:00:10 #853 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:10 #854 [Verbose] > inl map_base forall t u. (fn : t -> u) (x : array_base t) : array_base u =
00:00:10 #855 [Verbose] > a x
00:00:10 #856 [Verbose] > |> am.map fn
00:00:10 #857 [Verbose] > |> fun (a x : _ i64 _) => x
00:00:10 #858 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-3453-5339-5ce0546c00f1/main.spi
00:00:10 #859 [Verbose] >
00:00:10 #860 [Verbose] > ╭─[ 131.23ms - stdout ]────────────────────────────────────────────────────────╮
00:00:10 #861 [Verbose] > │ () │
00:00:10 #862 [Verbose] > │ │
00:00:10 #863 [Verbose] > │ │
00:00:10 #864 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:10 #865 [Verbose] >
00:00:10 #866 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:10 #867 [Verbose] > inl average forall el {number}. (array : a _ el) : el =
00:00:10 #868 [Verbose] > $"!array |> Array.average"
00:00:10 #869 [Verbose] >
00:00:10 #870 [Verbose] > inl length forall dim el {number}. (array : a dim el) : dim =
00:00:10 #871 [Verbose] > $"!array |> Array.length"
00:00:10 #872 [Verbose] >
00:00:10 #873 [Verbose] > inl parallel_map forall dim el el'. (fn : el -> el') (array : a dim el) : a dim
00:00:10 #874 [Verbose] > el' =
00:00:10 #875 [Verbose] > $"!array |> Array.Parallel.map !fn"
00:00:10 #876 [Verbose] >
00:00:10 #877 [Verbose] > inl sort_by forall dim el. (fn : el -> _) (array : a dim el) : a dim el =
00:00:10 #878 [Verbose] > $"!array |> Array.sortBy !fn"
00:00:10 #879 [Verbose] >
00:00:10 #880 [Verbose] > inl sort_descending forall dim el. (array : a dim el) : a dim el =
00:00:10 #881 [Verbose] > $"!array |> Array.sortDescending"
00:00:10 #882 [Verbose] >
00:00:10 #883 [Verbose] > inl transpose forall dim el. (array : a dim (a dim el)) : a dim (a dim el) =
00:00:10 #884 [Verbose] > $"!array |> Array.transpose"
00:00:10 #885 [Verbose] >
00:00:10 #886 [Verbose] > inl try_item forall dim el. (i : i32) (array : a dim el) : option el =
00:00:10 #887 [Verbose] > $"!array |> Array.tryItem !i" |> optionm'.unbox
00:00:10 #888 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-3466-6657-624f7a7a4ff9/main.spi
00:00:10 #889 [Verbose] >
00:00:10 #890 [Verbose] > ╭─[ 128.24ms - stdout ]────────────────────────────────────────────────────────╮
00:00:10 #891 [Verbose] > │ () │
00:00:10 #892 [Verbose] > │ │
00:00:10 #893 [Verbose] > │ │
00:00:10 #894 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:10 #895 [Verbose] >
00:00:10 #896 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:10 #897 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:10 #898 [Verbose] > │ ## indexed │
00:00:10 #899 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:10 #900 [Verbose] >
00:00:10 #901 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:10 #902 [Verbose] > inl indexed (array : a _ _) =
00:00:10 #903 [Verbose] > (([[]], 0), array)
00:00:10 #904 [Verbose] > ||> am.fold fun (acc, i) x =>
00:00:10 #905 [Verbose] > (i, x) :: acc, i + 1
00:00:10 #906 [Verbose] > |> fst
00:00:10 #907 [Verbose] > |> listm.rev
00:00:10 #908 [Verbose] > |> listm.toArray
00:00:10 #909 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-3479-7940-7918de75e433/main.spi
00:00:10 #910 [Verbose] >
00:00:10 #911 [Verbose] > ╭─[ 123.60ms - stdout ]────────────────────────────────────────────────────────╮
00:00:10 #912 [Verbose] > │ () │
00:00:10 #913 [Verbose] > │ │
00:00:10 #914 [Verbose] > │ │
00:00:10 #915 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:10 #916 [Verbose] >
00:00:10 #917 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:10 #918 [Verbose] > // // test
00:00:10 #919 [Verbose] >
00:00:10 #920 [Verbose] > am.init 3i32 ((*) 2)
00:00:10 #921 [Verbose] > |> indexed
00:00:10 #922 [Verbose] > |> _assert_eq (a ;[[0i32, 0; 1, 2; 2, 4]] : a i32 _)
00:00:10 #923 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-3491-9175-921b779c4f17/main.spi
00:00:11 #924 [Verbose] >
00:00:11 #925 [Verbose] > ╭─[ 275.86ms - stdout ]────────────────────────────────────────────────────────╮
00:00:11 #926 [Verbose] > │ type Mut0 = {mutable l0 : int32} │
00:00:11 #927 [Verbose] > │ and UH0 = │
00:00:11 #928 [Verbose] > │ | UH0_0 of int32 * int32 * UH0 │
00:00:11 #929 [Verbose] > │ | UH0_1 │
00:00:11 #930 [Verbose] > │ and Mut1 = {mutable l0 : int32; mutable l1 : UH0; mutable l2 : int32} │
00:00:11 #931 [Verbose] > │ let rec method1 (v0 : Mut0) : bool = │
00:00:11 #932 [Verbose] > │ let v1 : int32 = v0.l0 │
00:00:11 #933 [Verbose] > │ let v2 : bool = v1 < 3 │
00:00:11 #934 [Verbose] > │ v2 │
00:00:11 #935 [Verbose] > │ and method2 (v0 : int32, v1 : Mut1) : bool = │
00:00:11 #936 [Verbose] > │ let v2 : int32 = v1.l0 │
00:00:11 #937 [Verbose] > │ let v3 : bool = v2 < v0 │
00:00:11 #938 [Verbose] > │ v3 │
00:00:11 #939 [Verbose] > │ and method3 (v0 : UH0, v1 : UH0) : UH0 = │
00:00:11 #940 [Verbose] > │ match v0 with │
00:00:11 #941 [Verbose] > │ | UH0_0(v2, v3, v4) -> (* Cons *) │
00:00:11 #942 [Verbose] > │ let v5 : UH0 = UH0_0(v2, v3, v1) │
00:00:11 #943 [Verbose] > │ method3(v4, v5) │
00:00:11 #944 [Verbose] > │ | UH0_1 -> (* Nil *) │
00:00:11 #945 [Verbose] > │ v1 │
00:00:11 #946 [Verbose] > │ and method5 (v0 : UH0, v1 : int32) : int32 = │
00:00:11 #947 [Verbose] > │ match v0 with │
00:00:11 #948 [Verbose] > │ | UH0_0(v2, v3, v4) -> (* Cons *) │
00:00:11 #949 [Verbose] > │ let v5 : int32 = v1 + 1 │
00:00:11 #950 [Verbose] > │ method5(v4, v5) │
00:00:11 #951 [Verbose] > │ | UH0_1 -> (* Nil *) │
00:00:11 #952 [Verbose] > │ v1 │
00:00:11 #953 [Verbose] > │ and method6 (v0 : (struct (int32 * int32) []), v1 : UH0, v2 : int32) : int32 │
00:00:11 #954 [Verbose] > │ = │
00:00:11 #955 [Verbose] > │ match v1 with │
00:00:11 #956 [Verbose] > │ | UH0_0(v3, v4, v5) -> (* Cons *) │
00:00:11 #957 [Verbose] > │ v0.[int v2] <- struct (v3, v4) │
00:00:11 #958 [Verbose] > │ let v6 : int32 = v2 + 1 │
00:00:11 #959 [Verbose] > │ method6(v0, v5, v6) │
00:00:11 #960 [Verbose] > │ | UH0_1 -> (* Nil *) │
00:00:11 #961 [Verbose] > │ v2 │
00:00:11 #962 [Verbose] > │ and method4 (v0 : UH0) : (struct (int32 * int32) []) = │
00:00:11 #963 [Verbose] > │ let v1 : int32 = 0 │
00:00:11 #964 [Verbose] > │ let v2 : int32 = method5(v0, v1) │
00:00:11 #965 [Verbose] > │ let v3 : (struct (int32 * int32) []) = Array.zeroCreate<struct (int32 * │
00:00:11 #966 [Verbose] > │ int32)> (v2) │
00:00:11 #967 [Verbose] > │ let v4 : int32 = 0 │
00:00:11 #968 [Verbose] > │ let v5 : int32 = method6(v3, v0, v4) │
00:00:11 #969 [Verbose] > │ v3 │
00:00:11 #970 [Verbose] > │ and method7 (v0 : (struct (int32 * int32) [])) : (struct (int32 * int32) []) │
00:00:11 #971 [Verbose] > │ = │
00:00:11 #972 [Verbose] > │ v0 │
00:00:11 #973 [Verbose] > │ and method8 (v0 : (struct (int32 * int32) []), v1 : (struct (int32 * int32) │
00:00:11 #974 [Verbose] > │ []), v2 : int32) : bool = │
00:00:11 #975 [Verbose] > │ let v3 : int32 = v0.Length │
00:00:11 #976 [Verbose] > │ let v4 : bool = v2 < v3 │
00:00:11 #977 [Verbose] > │ if v4 then │
00:00:11 #978 [Verbose] > │ let struct (v5 : int32, v6 : int32) = v0.[int v2] │
00:00:11 #979 [Verbose] > │ let struct (v7 : int32, v8 : int32) = v1.[int v2] │
00:00:11 #980 [Verbose] > │ let v9 : bool = v5 = v7 │
00:00:11 #981 [Verbose] > │ let v11 : bool = │
00:00:11 #982 [Verbose] > │ if v9 then │
00:00:11 #983 [Verbose] > │ let v10 : bool = v6 = v8 │
00:00:11 #984 [Verbose] > │ v10 │
00:00:11 #985 [Verbose] > │ else │
00:00:11 #986 [Verbose] > │ false │
00:00:11 #987 [Verbose] > │ if v11 then │
00:00:11 #988 [Verbose] > │ let v12 : int32 = v2 + 1 │
00:00:11 #989 [Verbose] > │ method8(v0, v1, v12) │
00:00:11 #990 [Verbose] > │ else │
00:00:11 #991 [Verbose] > │ false │
00:00:11 #992 [Verbose] > │ else │
00:00:11 #993 [Verbose] > │ true │
00:00:11 #994 [Verbose] > │ and method9 (v0 : bool) : bool = │
00:00:11 #995 [Verbose] > │ v0 │
00:00:11 #996 [Verbose] > │ and method0 () : unit = │
00:00:11 #997 [Verbose] > │ let v0 : (int32 []) = Array.zeroCreate<int32> (3) │
00:00:11 #998 [Verbose] > │ let v1 : Mut0 = {l0 = 0} : Mut0 │
00:00:11 #999 [Verbose] > │ while method1(v1) do │
00:00:11 #1000 [Verbose] > │ let v3 : int32 = v1.l0 │
00:00:11 #1001 [Verbose] > │ let v4 : int32 = 2 * v3 │
00:00:11 #1002 [Verbose] > │ v0.[int v3] <- v4 │
00:00:11 #1003 [Verbose] > │ let v5 : int32 = v3 + 1 │
00:00:11 #1004 [Verbose] > │ v1.l0 <- v5 │
00:00:11 #1005 [Verbose] > │ () │
00:00:11 #1006 [Verbose] > │ let v6 : int32 = v0.Length │
00:00:11 #1007 [Verbose] > │ let v7 : UH0 = UH0_1 │
00:00:11 #1008 [Verbose] > │ let v8 : Mut1 = {l0 = 0; l1 = v7; l2 = 0} : Mut1 │
00:00:11 #1009 [Verbose] > │ while method2(v6, v8) do │
00:00:11 #1010 [Verbose] > │ let v10 : int32 = v8.l0 │
00:00:11 #1011 [Verbose] > │ let struct (v11 : UH0, v12 : int32) = v8.l1, v8.l2 │
00:00:11 #1012 [Verbose] > │ let v13 : int32 = v0.[int v10] │
00:00:11 #1013 [Verbose] > │ let v14 : int32 = v12 + 1 │
00:00:11 #1014 [Verbose] > │ let v15 : int32 = v10 + 1 │
00:00:11 #1015 [Verbose] > │ let v16 : UH0 = UH0_0(v12, v13, v11) │
00:00:11 #1016 [Verbose] > │ v8.l0 <- v15 │
00:00:11 #1017 [Verbose] > │ v8.l1 <- v16 │
00:00:11 #1018 [Verbose] > │ v8.l2 <- v14 │
00:00:11 #1019 [Verbose] > │ () │
00:00:11 #1020 [Verbose] > │ let struct (v17 : UH0, v18 : int32) = v8.l1, v8.l2 │
00:00:11 #1021 [Verbose] > │ let v19 : UH0 = UH0_1 │
00:00:11 #1022 [Verbose] > │ let v20 : UH0 = method3(v17, v19) │
00:00:11 #1023 [Verbose] > │ let v21 : (struct (int32 * int32) []) = method4(v20) │
00:00:11 #1024 [Verbose] > │ let v22 : (struct (int32 * int32) []) = [|struct (0, 0); struct (1, 2); │
00:00:11 #1025 [Verbose] > │ struct (2, 4)|] │
00:00:11 #1026 [Verbose] > │ let v23 : (struct (int32 * int32) []) = method7(v22) │
00:00:11 #1027 [Verbose] > │ let v24 : int32 = v21.Length │
00:00:11 #1028 [Verbose] > │ let v25 : int32 = v23.Length │
00:00:11 #1029 [Verbose] > │ let v26 : bool = v24 = v25 │
00:00:11 #1030 [Verbose] > │ let v27 : bool = v26 <> true │
00:00:11 #1031 [Verbose] > │ let v30 : bool = │
00:00:11 #1032 [Verbose] > │ if v27 then │
00:00:11 #1033 [Verbose] > │ false │
00:00:11 #1034 [Verbose] > │ else │
00:00:11 #1035 [Verbose] > │ let v28 : int32 = 0 │
00:00:11 #1036 [Verbose] > │ method8(v21, v23, v28) │
00:00:11 #1037 [Verbose] > │ let v32 : bool = │
00:00:11 #1038 [Verbose] > │ if v30 then │
00:00:11 #1039 [Verbose] > │ true │
00:00:11 #1040 [Verbose] > │ else │
00:00:11 #1041 [Verbose] > │ method9(v30) │
00:00:11 #1042 [Verbose] > │ let v33 : string = $"__expect / actual: %A{v21} / expected: %A{v23}" │
00:00:11 #1043 [Verbose] > │ let v34 : bool = v32 = false │
00:00:11 #1044 [Verbose] > │ if v34 then │
00:00:11 #1045 [Verbose] > │ failwith<unit> v33 │
00:00:11 #1046 [Verbose] > │ method0() │
00:00:11 #1047 [Verbose] > │ │
00:00:11 #1048 [Verbose] > │ │
00:00:11 #1049 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:11 #1050 [Verbose] >
00:00:11 #1051 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:11 #1052 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:11 #1053 [Verbose] > │ ## from_vec │
00:00:11 #1054 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:11 #1055 [Verbose] >
00:00:11 #1056 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:11 #1057 [Verbose] > inl from_vec forall dim el. (vec : vec el) : a dim el =
00:00:11 #1058 [Verbose] > inl vec = join vec
00:00:11 #1059 [Verbose] > !\($'"fable_library_rust::NativeArray_::array_from(!vec)"')
00:00:11 #1060 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-3520-2070-2675419ade79/main.spi
00:00:11 #1061 [Verbose] >
00:00:11 #1062 [Verbose] > ╭─[ 141.39ms - stdout ]────────────────────────────────────────────────────────╮
00:00:11 #1063 [Verbose] > │ () │
00:00:11 #1064 [Verbose] > │ │
00:00:11 #1065 [Verbose] > │ │
00:00:11 #1066 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:11 #1067 [Verbose] >
00:00:11 #1068 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:11 #1069 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:11 #1070 [Verbose] > │ ## to_vec │
00:00:11 #1071 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:11 #1072 [Verbose] >
00:00:11 #1073 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:11 #1074 [Verbose] > inl to_vec forall t. (ar : array_base t) : vec t =
00:00:11 #1075 [Verbose] > inl ar = join ar
00:00:11 #1076 [Verbose] > !\($'"!ar.to_vec()"')
00:00:11 #1077 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-3534-3454-31e0d21def8e/main.spi
00:00:11 #1078 [Verbose] >
00:00:11 #1079 [Verbose] > ╭─[ 127.79ms - stdout ]────────────────────────────────────────────────────────╮
00:00:11 #1080 [Verbose] > │ () │
00:00:11 #1081 [Verbose] > │ │
00:00:11 #1082 [Verbose] > │ │
00:00:11 #1083 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:11 #1084 [Verbose] >
00:00:11 #1085 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:11 #1086 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:11 #1087 [Verbose] > │ ## map_vec │
00:00:11 #1088 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:11 #1089 [Verbose] >
00:00:11 #1090 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:11 #1091 [Verbose] > inl map_vec forall dim t u. (fn : t -> u) (ar : a dim t) : a dim u =
00:00:11 #1092 [Verbose] > inl fn = join fn
00:00:11 #1093 [Verbose] > inl (a ar) = ar
00:00:11 #1094 [Verbose] > inl ar = ar |> to_vec
00:00:11 #1095 [Verbose] > !\($'"!ar.iter().map(|x| !fn(x.clone())).collect()"')
00:00:11 #1096 [Verbose] > |> from_vec
00:00:11 #1097 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-3547-4752-458995cbff1e/main.spi
00:00:11 #1098 [Verbose] >
00:00:11 #1099 [Verbose] > ╭─[ 134.87ms - stdout ]────────────────────────────────────────────────────────╮
00:00:11 #1100 [Verbose] > │ () │
00:00:11 #1101 [Verbose] > │ │
00:00:11 #1102 [Verbose] > │ │
00:00:11 #1103 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:11 #1104 [Verbose] >
00:00:11 #1105 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:11 #1106 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:11 #1107 [Verbose] > │ ## mapi_vec │
00:00:11 #1108 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:11 #1109 [Verbose] >
00:00:11 #1110 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:11 #1111 [Verbose] > inl mapi_vec forall dim t u. (fn : dim -> t -> u) (ar : a dim t) : a dim u =
00:00:11 #1112 [Verbose] > inl fn = join fn
00:00:11 #1113 [Verbose] > inl (a ar) = ar
00:00:11 #1114 [Verbose] > inl ar = ar |> to_vec
00:00:11 #1115 [Verbose] > !\($'"!ar.iter().enumerate().map(|(i, x)|
00:00:11 #1116 [Verbose] > !fn(i.try_into().unwrap())(x.clone())).collect()"')
00:00:11 #1117 [Verbose] > |> from_vec
00:00:11 #1118 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-3561-6111-69b1588b1e51/main.spi
00:00:11 #1119 [Verbose] >
00:00:11 #1120 [Verbose] > ╭─[ 130.15ms - stdout ]────────────────────────────────────────────────────────╮
00:00:11 #1121 [Verbose] > │ () │
00:00:11 #1122 [Verbose] > │ │
00:00:11 #1123 [Verbose] > │ │
00:00:11 #1124 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:11 #1125 [Verbose] >
00:00:11 #1126 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:11 #1127 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:11 #1128 [Verbose] > │ ## filter_vec │
00:00:11 #1129 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:11 #1130 [Verbose] >
00:00:11 #1131 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:11 #1132 [Verbose] > inl filter_vec forall dim t. (fn : t -> bool) (ar : a dim t) : a dim t =
00:00:11 #1133 [Verbose] > inl fn = join fn
00:00:11 #1134 [Verbose] > inl (a ar) = ar
00:00:11 #1135 [Verbose] > inl ar = ar |> to_vec
00:00:11 #1136 [Verbose] > !\($'"!ar.into_iter().filter(|x| !fn(x.clone().clone())).collect()"')
00:00:11 #1137 [Verbose] > |> from_vec
00:00:11 #1138 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-3574-7418-7f7771f3f5e0/main.spi
00:00:11 #1139 [Verbose] >
00:00:11 #1140 [Verbose] > ╭─[ 126.41ms - stdout ]────────────────────────────────────────────────────────╮
00:00:11 #1141 [Verbose] > │ () │
00:00:11 #1142 [Verbose] > │ │
00:00:11 #1143 [Verbose] > │ │
00:00:11 #1144 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:11 #1145 [Verbose] >
00:00:11 #1146 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:11 #1147 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:11 #1148 [Verbose] > │ ## vec_push │
00:00:11 #1149 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:11 #1150 [Verbose] >
00:00:11 #1151 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:11 #1152 [Verbose] > inl vec_push forall el. (el : el) (vec : vec el) : vec el =
00:00:11 #1153 [Verbose] > inl el = join el
00:00:11 #1154 [Verbose] > inl vec = join vec
00:00:11 #1155 [Verbose] > !\($'"let mut !vec = !vec"')
00:00:11 #1156 [Verbose] > // inl vec = vec |> rust.to_mut
00:00:11 #1157 [Verbose] > !\($'"!vec.push(!el)"')
00:00:11 #1158 [Verbose] > !\($'"!vec"')
00:00:11 #1159 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-3586-8693-8700059037f0/main.spi
00:00:11 #1160 [Verbose] >
00:00:11 #1161 [Verbose] > ╭─[ 132.59ms - stdout ]────────────────────────────────────────────────────────╮
00:00:11 #1162 [Verbose] > │ () │
00:00:11 #1163 [Verbose] > │ │
00:00:11 #1164 [Verbose] > │ │
00:00:11 #1165 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:11 #1166 [Verbose] >
00:00:11 #1167 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:11 #1168 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:11 #1169 [Verbose] > │ ## vec_reverse │
00:00:11 #1170 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:11 #1171 [Verbose] >
00:00:11 #1172 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:11 #1173 [Verbose] > inl vec_reverse forall el. (vec : vec el) : vec el =
00:00:11 #1174 [Verbose] > inl vec = join vec
00:00:11 #1175 [Verbose] > !\($'"let mut !vec = !vec"')
00:00:11 #1176 [Verbose] > !\($'"!vec.reverse()"')
00:00:11 #1177 [Verbose] > !\($'"!vec"')
00:00:11 #1178 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-3600-0029-01f4f32dceee/main.spi
00:00:12 #1179 [Verbose] >
00:00:12 #1180 [Verbose] > ╭─[ 141.07ms - stdout ]────────────────────────────────────────────────────────╮
00:00:12 #1181 [Verbose] > │ () │
00:00:12 #1182 [Verbose] > │ │
00:00:12 #1183 [Verbose] > │ │
00:00:12 #1184 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:12 #1185 [Verbose] >
00:00:12 #1186 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:12 #1187 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:12 #1188 [Verbose] > │ ## vec_retain │
00:00:12 #1189 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:12 #1190 [Verbose] >
00:00:12 #1191 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:12 #1192 [Verbose] > inl vec_retain forall el. (fn : el -> bool) (vec : vec el) : vec el =
00:00:12 #1193 [Verbose] > inl vec = join vec
00:00:12 #1194 [Verbose] > inl fn = join fn
00:00:12 #1195 [Verbose] > !\($'"let mut !vec = !vec"')
00:00:12 #1196 [Verbose] > // inl vec = vec |> rust.to_mut
00:00:12 #1197 [Verbose] > !\($'"!vec.retain(|x| !fn(x.clone()))"')
00:00:12 #1198 [Verbose] > !\($'"!vec"')
00:00:12 #1199 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-3614-1450-10d73c6edb78/main.spi
00:00:12 #1200 [Verbose] >
00:00:12 #1201 [Verbose] > ╭─[ 134.97ms - stdout ]────────────────────────────────────────────────────────╮
00:00:12 #1202 [Verbose] > │ () │
00:00:12 #1203 [Verbose] > │ │
00:00:12 #1204 [Verbose] > │ │
00:00:12 #1205 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:12 #1206 [Verbose] >
00:00:12 #1207 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:12 #1208 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:12 #1209 [Verbose] > │ ## vec_sort_by_key │
00:00:12 #1210 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:12 #1211 [Verbose] >
00:00:12 #1212 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:12 #1213 [Verbose] > inl vec_sort_by_key forall el t. (fn : el -> t) (vec : vec el) : vec el =
00:00:12 #1214 [Verbose] > inl vec = join vec
00:00:12 #1215 [Verbose] > inl fn = join fn
00:00:12 #1216 [Verbose] > !\($'"let mut !vec = !vec"')
00:00:12 #1217 [Verbose] > // inl vec = vec |> rust.to_mut
00:00:12 #1218 [Verbose] > !\($'"!vec.sort_by_key(|x| !fn(x.clone()))"')
00:00:12 #1219 [Verbose] > !\($'"!vec"')
00:00:12 #1220 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-3628-2813-22749d1b5dd5/main.spi
00:00:12 #1221 [Verbose] >
00:00:12 #1222 [Verbose] > ╭─[ 127.26ms - stdout ]────────────────────────────────────────────────────────╮
00:00:12 #1223 [Verbose] > │ () │
00:00:12 #1224 [Verbose] > │ │
00:00:12 #1225 [Verbose] > │ │
00:00:12 #1226 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:12 #1227 [Verbose] >
00:00:12 #1228 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:12 #1229 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:12 #1230 [Verbose] > │ ## vec_extend │
00:00:12 #1231 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:12 #1232 [Verbose] >
00:00:12 #1233 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:12 #1234 [Verbose] > inl vec_extend forall el. (el : vec el) (vec : vec el) : vec el =
00:00:12 #1235 [Verbose] > inl el = join el
00:00:12 #1236 [Verbose] > inl vec = join vec
00:00:12 #1237 [Verbose] > !\($'"let mut !vec = !vec"')
00:00:12 #1238 [Verbose] > // inl vec = vec |> rust.to_mut
00:00:12 #1239 [Verbose] > !\($'"!vec.extend(!el)"')
00:00:12 #1240 [Verbose] > !\($'"!vec"')
00:00:12 #1241 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-3641-4105-4ee415d2eec0/main.spi
00:00:12 #1242 [Verbose] >
00:00:12 #1243 [Verbose] > ╭─[ 130.14ms - stdout ]────────────────────────────────────────────────────────╮
00:00:12 #1244 [Verbose] > │ () │
00:00:12 #1245 [Verbose] > │ │
00:00:12 #1246 [Verbose] > │ │
00:00:12 #1247 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:12 #1248 [Verbose] >
00:00:12 #1249 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:12 #1250 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:12 #1251 [Verbose] > │ ## vec_collect │
00:00:12 #1252 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:12 #1253 [Verbose] >
00:00:12 #1254 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:12 #1255 [Verbose] > inl vec_collect vec =
00:00:12 #1256 [Verbose] > ((;[[]] |> to_vec), (vec |> from_vec : _ i32 _))
00:00:12 #1257 [Verbose] > ||> am.fold fun acc x =>
00:00:12 #1258 [Verbose] > acc |> vec_extend x
00:00:12 #1259 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-3654-5414-5763af7f619a/main.spi
00:00:12 #1260 [Verbose] >
00:00:12 #1261 [Verbose] > ╭─[ 129.59ms - stdout ]────────────────────────────────────────────────────────╮
00:00:12 #1262 [Verbose] > │ () │
00:00:12 #1263 [Verbose] > │ │
00:00:12 #1264 [Verbose] > │ │
00:00:12 #1265 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:12 #1266 [Verbose] >
00:00:12 #1267 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:12 #1268 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:12 #1269 [Verbose] > │ ## vec_collect' │
00:00:12 #1270 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:12 #1271 [Verbose] >
00:00:12 #1272 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:12 #1273 [Verbose] > inl vec_collect' vec =
00:00:12 #1274 [Verbose] > ((;[[]] |> to_vec |> Ok), (vec |> from_vec : _ i32 _))
00:00:12 #1275 [Verbose] > ||> am.fold fun acc x =>
00:00:12 #1276 [Verbose] > x
00:00:12 #1277 [Verbose] > |> resultm.unbox
00:00:12 #1278 [Verbose] > |> fun x =>
00:00:12 #1279 [Verbose] > match acc, x |> resultm.map optionm'.unbox with
00:00:12 #1280 [Verbose] > | Ok acc, Ok (Some x) => acc |> vec_extend x |> Ok
00:00:12 #1281 [Verbose] > | _, Error error => error |> Error
00:00:12 #1282 [Verbose] > | _ => acc
00:00:12 #1283 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-3667-6746-6394cef2defc/main.spi
00:00:12 #1284 [Verbose] >
00:00:12 #1285 [Verbose] > ╭─[ 147.67ms - stdout ]────────────────────────────────────────────────────────╮
00:00:12 #1286 [Verbose] > │ () │
00:00:12 #1287 [Verbose] > │ │
00:00:12 #1288 [Verbose] > │ │
00:00:12 #1289 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:12 #1290 [Verbose] >
00:00:12 #1291 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:12 #1292 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:12 #1293 [Verbose] > │ ## vec_mapi │
00:00:12 #1294 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:12 #1295 [Verbose] >
00:00:12 #1296 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:12 #1297 [Verbose] > inl vec_mapi forall dim t u. (fn : dim -> t -> u) (ar : vec t) : vec u =
00:00:12 #1298 [Verbose] > inl fn = join fn
00:00:12 #1299 [Verbose] > inl ar = join ar
00:00:12 #1300 [Verbose] > !\($'"!ar.iter().enumerate().map(|(i, x)|
00:00:12 #1301 [Verbose] > !fn(i.try_into().unwrap())(x.clone())).collect()"')
00:00:12 #1302 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-3682-8220-8e6ce42b4aeb/main.spi
00:00:12 #1303 [Verbose] >
00:00:12 #1304 [Verbose] > ╭─[ 126.71ms - stdout ]────────────────────────────────────────────────────────╮
00:00:12 #1305 [Verbose] > │ () │
00:00:12 #1306 [Verbose] > │ │
00:00:12 #1307 [Verbose] > │ │
00:00:12 #1308 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:12 #1309 [Verbose] >
00:00:12 #1310 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:12 #1311 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:12 #1312 [Verbose] > │ ## vec_map │
00:00:12 #1313 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:12 #1314 [Verbose] >
00:00:12 #1315 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:12 #1316 [Verbose] > inl vec_map forall t u. (fn : t -> u) (ar : vec t) : vec u =
00:00:12 #1317 [Verbose] > inl fn = join fn
00:00:12 #1318 [Verbose] > inl ar = join ar
00:00:12 #1319 [Verbose] > !\($'"!ar.iter().map(|x| !fn(x.clone())).collect()"')
00:00:12 #1320 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-3694-9497-92d29a50393c/main.spi
00:00:12 #1321 [Verbose] >
00:00:12 #1322 [Verbose] > ╭─[ 128.31ms - stdout ]────────────────────────────────────────────────────────╮
00:00:12 #1323 [Verbose] > │ () │
00:00:12 #1324 [Verbose] > │ │
00:00:12 #1325 [Verbose] > │ │
00:00:12 #1326 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:12 #1327 [Verbose] >
00:00:12 #1328 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:12 #1329 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:12 #1330 [Verbose] > │ ## enumerate │
00:00:12 #1331 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:12 #1332 [Verbose] >
00:00:12 #1333 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:12 #1334 [Verbose] > inl enumerate forall dim {int; number} t. (ar : a dim t) : a dim (unativeint *
00:00:12 #1335 [Verbose] > t) =
00:00:12 #1336 [Verbose] > inl (a ar) = ar
00:00:12 #1337 [Verbose] > inl ar = ar |> to_vec
00:00:12 #1338 [Verbose] > !\($'"!ar.into_iter().enumerate().map(std::rc::Rc::new).collect()"')
00:00:12 #1339 [Verbose] > |> from_vec
00:00:12 #1340 [Verbose] > |> map_vec from_pair
00:00:13 #1341 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-3708-0806-047f595522ec/main.spi
00:00:13 #1342 [Verbose] >
00:00:13 #1343 [Verbose] > ╭─[ 128.92ms - stdout ]────────────────────────────────────────────────────────╮
00:00:13 #1344 [Verbose] > │ () │
00:00:13 #1345 [Verbose] > │ │
00:00:13 #1346 [Verbose] > │ │
00:00:13 #1347 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:13 #1348 [Verbose] >
00:00:13 #1349 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:13 #1350 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:13 #1351 [Verbose] > │ ## slice' │
00:00:13 #1352 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:13 #1353 [Verbose] >
00:00:13 #1354 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:13 #1355 [Verbose] > inl slice' forall dim el. (x : option el) : slice' el dim =
00:00:13 #1356 [Verbose] > match x with
00:00:13 #1357 [Verbose] > | Some x => !\($'"[[!x]]"')
00:00:13 #1358 [Verbose] > | None =>
00:00:13 #1359 [Verbose] > !\($'"[[\\\"\\\".to_string()]]"') : slice' el dim
00:00:13 #1360 [Verbose] > // emit_expr `(()) `(slice' el dim) () ($'"[[@dim]]"' : string) :
00:00:13 #1361 [Verbose] > slice' el 10
00:00:13 #1362 [Verbose] > // !\( : string) : slice' el i32 // !\($'"[[]]"')
00:00:13 #1363 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-3720-2096-2279b18f7d58/main.spi
00:00:13 #1364 [Verbose] >
00:00:13 #1365 [Verbose] > ╭─[ 126.66ms - stdout ]────────────────────────────────────────────────────────╮
00:00:13 #1366 [Verbose] > │ () │
00:00:13 #1367 [Verbose] > │ │
00:00:13 #1368 [Verbose] > │ │
00:00:13 #1369 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:13 #1370 [Verbose] >
00:00:13 #1371 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:13 #1372 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:13 #1373 [Verbose] > │ ## as_slice │
00:00:13 #1374 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:13 #1375 [Verbose] >
00:00:13 #1376 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:13 #1377 [Verbose] > inl as_slice forall t. (x : array_base t) : rust.ref' (slice t) =
00:00:13 #1378 [Verbose] > inl x = x |> to_vec
00:00:13 #1379 [Verbose] > !\($'"!x.as_slice()"')
00:00:13 #1380 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-3733-3375-3a748819d8e7/main.spi
00:00:13 #1381 [Verbose] >
00:00:13 #1382 [Verbose] > ╭─[ 127.72ms - stdout ]────────────────────────────────────────────────────────╮
00:00:13 #1383 [Verbose] > │ () │
00:00:13 #1384 [Verbose] > │ │
00:00:13 #1385 [Verbose] > │ │
00:00:13 #1386 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:14 #1387 [Verbose] > [NbConvertApp] Converting notebook am'.dib.ipynb to html
00:00:14 #1388 [Verbose] > /opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:00:14 #1389 [Verbose] > validate(nb)
00:00:14 #1390 [Verbose] > /opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:00:14 #1391 [Verbose] > return _pygments_highlight(
00:00:14 #1392 [Verbose] > [NbConvertApp] Writing 387695 bytes to am'.dib.html
00:00:15 #1393 [Debug] executeAsync / exitCode: 0 / output.Length: 111104
00:00:15 #1394 [Debug] main / executeCommand / exitCode: 0
00:00:00 #1 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #2 [Debug] executeAsync / options: { Command =
"dotnet "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 --default-int i32 --default-float f64"
WorkingDirectory = None
CancellationToken = Some System.Threading.CancellationToken
OnLine = Some <fun:main@464-1020> }
00:00:00 #3 [Verbose] > pwd: /home/runner/work/polyglot/polyglot/lib/spiral
00:00:00 #4 [Verbose] > dll_path: /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release
00:00:00 #5 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #6 [Verbose] waitForPortAccess / port: 13805 / retry: 0
00:00:00 #7 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #8 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #9 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #10 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #11 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #12 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #13 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #14 [Verbose] > Starting the Spiral Server. It is bound to: http://localhost:13805
00:00:00 #15 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #16 [Debug] sendJson / port: 13805 / json: {"Ping":true} / result.Length:
00:00:00 #17 [Verbose] awaitCompiler / Ping / result: Some(null) / port: 13805 / retry: 0
00:00:00 #18 [Verbose] > Server bound to: http://localhost:13805
00:00:00 #19 [Debug] executeAsync / options: { Command = "pwsh -c "../../scripts/invoke-dib.ps1 \"sm'.dib\"""
WorkingDirectory = None
CancellationToken = Some System.Threading.CancellationToken
OnLine = None }
00:00:02 #20 [Verbose] >
00:00:02 #21 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:02 #22 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:02 #23 [Verbose] > │ # sm' │
00:00:02 #24 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:02 #25 [Verbose] >
00:00:02 #26 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:02 #27 [Verbose] > // // test
00:00:02 #28 [Verbose] >
00:00:02 #29 [Verbose] > open testing
00:00:03 #30 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-4326-2618-2f0815ffb937/main.spi
00:00:05 #31 [Verbose] >
00:00:05 #32 [Verbose] > ╭─[ 3.41s - stdout ]───────────────────────────────────────────────────────────╮
00:00:05 #33 [Verbose] > │ () │
00:00:05 #34 [Verbose] > │ │
00:00:05 #35 [Verbose] > │ │
00:00:05 #36 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:05 #37 [Verbose] >
00:00:05 #38 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:05 #39 [Verbose] > open rust_operators
00:00:05 #40 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-4561-6174-6d4e3d76e5c4/main.spi
00:00:06 #41 [Verbose] >
00:00:06 #42 [Verbose] > ╭─[ 234.88ms - stdout ]────────────────────────────────────────────────────────╮
00:00:06 #43 [Verbose] > │ () │
00:00:06 #44 [Verbose] > │ │
00:00:06 #45 [Verbose] > │ │
00:00:06 #46 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #47 [Verbose] >
00:00:06 #48 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 #49 [Verbose] > inl types () =
00:00:06 #50 [Verbose] > global "[[<Fable.Core.Erase; Fable.Core.Emit(\"str\")>]] type Str = class
00:00:06 #51 [Verbose] > end"
00:00:06 #52 [Verbose] > global "[[<Fable.Core.Erase; Fable.Core.Emit(\"base64::DecodeError\")>]]
00:00:06 #53 [Verbose] > type base64_DecodeError = class end"
00:00:06 #54 [Verbose] > global "[[<Fable.Core.Erase; Fable.Core.Emit(\"borsh::io::Error\")>]] type
00:00:06 #55 [Verbose] > borsh_io_Error = class end"
00:00:06 #56 [Verbose] > global "[[<Fable.Core.Erase; Fable.Core.Emit(\"js_sys::JsString\")>]] type
00:00:06 #57 [Verbose] > js_sys_JsString = class end"
00:00:06 #58 [Verbose] > global "[[<Fable.Core.Erase; Fable.Core.Emit(\"serde_json::Error\")>]] type
00:00:06 #59 [Verbose] > serde_json_Error = class end"
00:00:06 #60 [Verbose] > global "[[<Fable.Core.Erase; Fable.Core.Emit(\"serde_json::Value\")>]] type
00:00:06 #61 [Verbose] > serde_json_Value = class end"
00:00:06 #62 [Verbose] > global "[[<Fable.Core.Erase;
00:00:06 #63 [Verbose] > Fable.Core.Emit(\"serde_wasm_bindgen::Error\")>]] type serde_wasm_bindgen_Error
00:00:06 #64 [Verbose] > = class end"
00:00:06 #65 [Verbose] > global "[[<Fable.Core.Erase; Fable.Core.Emit(\"std::str::Utf8Error\")>]]
00:00:06 #66 [Verbose] > type std_str_Utf8Error = class end"
00:00:06 #67 [Verbose] > global "[[<Fable.Core.Erase; Fable.Core.Emit(\"std::string::String\")>]]
00:00:06 #68 [Verbose] > type std_string_String = class end"
00:00:06 #69 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-4585-8558-81d80818bd6a/main.spi
00:00:06 #70 [Verbose] >
00:00:06 #71 [Verbose] > ╭─[ 177.38ms - stdout ]────────────────────────────────────────────────────────╮
00:00:06 #72 [Verbose] > │ () │
00:00:06 #73 [Verbose] > │ │
00:00:06 #74 [Verbose] > │ │
00:00:06 #75 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #76 [Verbose] >
00:00:06 #77 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 #78 [Verbose] > // // test
00:00:06 #79 [Verbose] >
00:00:06 #80 [Verbose] > inl types () =
00:00:06 #81 [Verbose] > rust.types ()
00:00:06 #82 [Verbose] > types ()
00:00:06 #83 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-4602-0286-082f2325cb21/main.spi
00:00:06 #84 [Verbose] >
00:00:06 #85 [Verbose] > ╭─[ 150.10ms - stdout ]────────────────────────────────────────────────────────╮
00:00:06 #86 [Verbose] > │ () │
00:00:06 #87 [Verbose] > │ │
00:00:06 #88 [Verbose] > │ │
00:00:06 #89 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #90 [Verbose] >
00:00:06 #91 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 #92 [Verbose] > nominal base64_decode_error = $"base64_DecodeError"
00:00:06 #93 [Verbose] > nominal borsh_io_error = $"borsh_io_Error"
00:00:06 #94 [Verbose] > nominal utf8_error = $"std_str_Utf8Error"
00:00:06 #95 [Verbose] > nominal json_value = $"serde_json_Value"
00:00:06 #96 [Verbose] > nominal json_error = $"serde_json_Error"
00:00:06 #97 [Verbose] > nominal serde_wasm_bindgen_error = $"serde_wasm_bindgen_Error"
00:00:06 #98 [Verbose] > nominal std_string = $"std_string_String"
00:00:06 #99 [Verbose] > nominal js_string = $"js_sys_JsString"
00:00:06 #100 [Verbose] > nominal str = $"Str"
00:00:06 #101 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-4617-1796-1ac8fb588295/main.spi
00:00:06 #102 [Verbose] >
00:00:06 #103 [Verbose] > ╭─[ 155.20ms - stdout ]────────────────────────────────────────────────────────╮
00:00:06 #104 [Verbose] > │ () │
00:00:06 #105 [Verbose] > │ │
00:00:06 #106 [Verbose] > │ │
00:00:06 #107 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #108 [Verbose] >
00:00:06 #109 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:06 #110 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:06 #111 [Verbose] > │ ## raw_string_literal │
00:00:06 #112 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #113 [Verbose] >
00:00:06 #114 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 #115 [Verbose] > inl raw_string_literal (s : string) : rust.ref' str =
00:00:06 #116 [Verbose] > !\($"\"r#\\\"\" + !s + \"\\\"#\"")
00:00:06 #117 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-4633-3353-375cf9e07104/main.spi
00:00:06 #118 [Verbose] >
00:00:06 #119 [Verbose] > ╭─[ 143.22ms - stdout ]────────────────────────────────────────────────────────╮
00:00:06 #120 [Verbose] > │ () │
00:00:06 #121 [Verbose] > │ │
00:00:06 #122 [Verbose] > │ │
00:00:06 #123 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #124 [Verbose] >
00:00:06 #125 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:06 #126 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:06 #127 [Verbose] > │ ## raw_string_literal_static │
00:00:06 #128 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #129 [Verbose] >
00:00:06 #130 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 #131 [Verbose] > inl raw_string_literal_static (s : string) : rust.static_ref' str =
00:00:06 #132 [Verbose] > !\($"\"r#\\\"\" + !s + \"\\\"#\"")
00:00:06 #133 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-4647-4793-4ac9cc55f597/main.spi
00:00:06 #134 [Verbose] >
00:00:06 #135 [Verbose] > ╭─[ 150.45ms - stdout ]────────────────────────────────────────────────────────╮
00:00:06 #136 [Verbose] > │ () │
00:00:06 #137 [Verbose] > │ │
00:00:06 #138 [Verbose] > │ │
00:00:06 #139 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #140 [Verbose] >
00:00:06 #141 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:06 #142 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:06 #143 [Verbose] > │ ## include_str │
00:00:06 #144 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #145 [Verbose] >
00:00:06 #146 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 #147 [Verbose] > inl include_str (path : string) : rust.ref' str =
00:00:06 #148 [Verbose] > !\($'"include_str\!(\\\"" + !path + "\\\")"')
00:00:06 #149 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-4663-6306-606f5dad4459/main.spi
00:00:06 #150 [Verbose] >
00:00:06 #151 [Verbose] > ╭─[ 131.97ms - stdout ]────────────────────────────────────────────────────────╮
00:00:06 #152 [Verbose] > │ () │
00:00:06 #153 [Verbose] > │ │
00:00:06 #154 [Verbose] > │ │
00:00:06 #155 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #156 [Verbose] >
00:00:06 #157 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:06 #158 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:06 #159 [Verbose] > │ ## contains │
00:00:06 #160 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #161 [Verbose] >
00:00:06 #162 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 #163 [Verbose] > inl contains (value : string) (input : string) : bool =
00:00:06 #164 [Verbose] > $"!input.Contains !value"
00:00:07 #165 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-4676-7637-7c3de3bfd9d8/main.spi
00:00:07 #166 [Verbose] >
00:00:07 #167 [Verbose] > ╭─[ 136.33ms - stdout ]────────────────────────────────────────────────────────╮
00:00:07 #168 [Verbose] > │ () │
00:00:07 #169 [Verbose] > │ │
00:00:07 #170 [Verbose] > │ │
00:00:07 #171 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #172 [Verbose] >
00:00:07 #173 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:07 #174 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:07 #175 [Verbose] > │ ## substring │
00:00:07 #176 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #177 [Verbose] >
00:00:07 #178 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:07 #179 [Verbose] > inl substring forall t {int}. (start : t) (len : t) (str : string) : string =
00:00:07 #180 [Verbose] > $"!str.Substring (!start, !len)"
00:00:07 #181 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-4690-9026-92f1e0d3e17b/main.spi
00:00:07 #182 [Verbose] >
00:00:07 #183 [Verbose] > ╭─[ 140.00ms - stdout ]────────────────────────────────────────────────────────╮
00:00:07 #184 [Verbose] > │ () │
00:00:07 #185 [Verbose] > │ │
00:00:07 #186 [Verbose] > │ │
00:00:07 #187 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #188 [Verbose] >
00:00:07 #189 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:07 #190 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:07 #191 [Verbose] > │ ## split │
00:00:07 #192 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #193 [Verbose] >
00:00:07 #194 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:07 #195 [Verbose] > inl split (separator : string) (str : string) : array_base string =
00:00:07 #196 [Verbose] > $"!str.Split !separator"
00:00:07 #197 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-4704-0419-0eb77aa9caf9/main.spi
00:00:07 #198 [Verbose] >
00:00:07 #199 [Verbose] > ╭─[ 244.38ms - stdout ]────────────────────────────────────────────────────────╮
00:00:07 #200 [Verbose] > │ () │
00:00:07 #201 [Verbose] > │ │
00:00:07 #202 [Verbose] > │ │
00:00:07 #203 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #204 [Verbose] >
00:00:07 #205 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:07 #206 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:07 #207 [Verbose] > │ ## split_string │
00:00:07 #208 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #209 [Verbose] >
00:00:07 #210 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:07 #211 [Verbose] > inl split_string (separator : array_base string) (str : string) : array_base
00:00:07 #212 [Verbose] > string =
00:00:07 #213 [Verbose] > $"!str.Split (!separator, StringSplitOptions.None)"
00:00:07 #214 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-4728-2886-20fbfe46c07a/main.spi
00:00:07 #215 [Verbose] >
00:00:07 #216 [Verbose] > ╭─[ 132.95ms - stdout ]────────────────────────────────────────────────────────╮
00:00:07 #217 [Verbose] > │ () │
00:00:07 #218 [Verbose] > │ │
00:00:07 #219 [Verbose] > │ │
00:00:07 #220 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #221 [Verbose] >
00:00:07 #222 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:07 #223 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:07 #224 [Verbose] > │ ## as_str │
00:00:07 #225 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #226 [Verbose] >
00:00:07 #227 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:07 #228 [Verbose] > inl as_str (s : string) : rust.ref' str =
00:00:07 #229 [Verbose] > inl s = join s
00:00:07 #230 [Verbose] > !\($'$"fable_library_rust::String_::LrcStr::as_str(&!s)"')
00:00:07 #231 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-4742-4218-485ee09b6b64/main.spi
00:00:07 #232 [Verbose] >
00:00:07 #233 [Verbose] > ╭─[ 123.77ms - stdout ]────────────────────────────────────────────────────────╮
00:00:07 #234 [Verbose] > │ () │
00:00:07 #235 [Verbose] > │ │
00:00:07 #236 [Verbose] > │ │
00:00:07 #237 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #238 [Verbose] >
00:00:07 #239 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:07 #240 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:07 #241 [Verbose] > │ ## from_std_string │
00:00:07 #242 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #243 [Verbose] >
00:00:07 #244 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:07 #245 [Verbose] > inl from_std_string (str : std_string) : string =
00:00:07 #246 [Verbose] > inl str = join str
00:00:07 #247 [Verbose] > !\($'"fable_library_rust::String_::fromString(!str)"')
00:00:07 #248 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-4754-5466-5170c24066dd/main.spi
00:00:07 #249 [Verbose] >
00:00:07 #250 [Verbose] > ╭─[ 130.00ms - stdout ]────────────────────────────────────────────────────────╮
00:00:07 #251 [Verbose] > │ () │
00:00:07 #252 [Verbose] > │ │
00:00:07 #253 [Verbose] > │ │
00:00:07 #254 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #255 [Verbose] >
00:00:07 #256 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:07 #257 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:07 #258 [Verbose] > │ ## ref_to_std_string │
00:00:07 #259 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #260 [Verbose] >
00:00:07 #261 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:07 #262 [Verbose] > inl ref_to_std_string (str : rust.ref' str) : std_string =
00:00:07 #263 [Verbose] > !\($'"String::from(!str)"')
00:00:07 #264 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-4767-6775-64a22dad1261/main.spi
00:00:07 #265 [Verbose] >
00:00:07 #266 [Verbose] > ╭─[ 131.35ms - stdout ]────────────────────────────────────────────────────────╮
00:00:07 #267 [Verbose] > │ () │
00:00:07 #268 [Verbose] > │ │
00:00:07 #269 [Verbose] > │ │
00:00:07 #270 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #271 [Verbose] >
00:00:07 #272 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:07 #273 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:07 #274 [Verbose] > │ ## to_std_string │
00:00:07 #275 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #276 [Verbose] >
00:00:07 #277 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:07 #278 [Verbose] > inl to_std_string (s : string) : std_string =
00:00:07 #279 [Verbose] > inl s = join s
00:00:07 #280 [Verbose] > s |> as_str |> ref_to_std_string
00:00:08 #281 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-4780-8097-83f45c0130dd/main.spi
00:00:08 #282 [Verbose] >
00:00:08 #283 [Verbose] > ╭─[ 132.33ms - stdout ]────────────────────────────────────────────────────────╮
00:00:08 #284 [Verbose] > │ () │
00:00:08 #285 [Verbose] > │ │
00:00:08 #286 [Verbose] > │ │
00:00:08 #287 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #288 [Verbose] >
00:00:08 #289 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:08 #290 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:08 #291 [Verbose] > │ ## as_str_std │
00:00:08 #292 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #293 [Verbose] >
00:00:08 #294 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:08 #295 [Verbose] > inl as_str_std (s : std_string) : rust.ref' str =
00:00:08 #296 [Verbose] > inl s = join s
00:00:08 #297 [Verbose] > !\($'"!s.as_str()"')
00:00:08 #298 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-4794-9437-9511b6fb300a/main.spi
00:00:08 #299 [Verbose] >
00:00:08 #300 [Verbose] > ╭─[ 133.58ms - stdout ]────────────────────────────────────────────────────────╮
00:00:08 #301 [Verbose] > │ () │
00:00:08 #302 [Verbose] > │ │
00:00:08 #303 [Verbose] > │ │
00:00:08 #304 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #305 [Verbose] >
00:00:08 #306 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:08 #307 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:08 #308 [Verbose] > │ ## into_boxed_str │
00:00:08 #309 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #310 [Verbose] >
00:00:08 #311 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:08 #312 [Verbose] > inl into_boxed_str (s : std_string) : rust.box str =
00:00:08 #313 [Verbose] > !\($'"!s.into_boxed_str()"')
00:00:08 #314 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-4807-0785-09672d429015/main.spi
00:00:08 #315 [Verbose] >
00:00:08 #316 [Verbose] > ╭─[ 134.94ms - stdout ]────────────────────────────────────────────────────────╮
00:00:08 #317 [Verbose] > │ () │
00:00:08 #318 [Verbose] > │ │
00:00:08 #319 [Verbose] > │ │
00:00:08 #320 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #321 [Verbose] >
00:00:08 #322 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:08 #323 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:08 #324 [Verbose] > │ ## format' │
00:00:08 #325 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #326 [Verbose] >
00:00:08 #327 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:08 #328 [Verbose] > inl format' x : std_string =
00:00:08 #329 [Verbose] > !\\(x, $'@@$"format\!(""{{}}"", $0)"')
00:00:08 #330 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-4821-2141-28179dd6beb3/main.spi
00:00:08 #331 [Verbose] >
00:00:08 #332 [Verbose] > ╭─[ 122.08ms - stdout ]────────────────────────────────────────────────────────╮
00:00:08 #333 [Verbose] > │ () │
00:00:08 #334 [Verbose] > │ │
00:00:08 #335 [Verbose] > │ │
00:00:08 #336 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #337 [Verbose] >
00:00:08 #338 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:08 #339 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:08 #340 [Verbose] > │ ## format_debug │
00:00:08 #341 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #342 [Verbose] >
00:00:08 #343 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:08 #344 [Verbose] > inl format_debug x : string =
00:00:08 #345 [Verbose] > $"$\"%A{!x}\""
00:00:08 #346 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-4833-3375-36c674d50f71/main.spi
00:00:08 #347 [Verbose] >
00:00:08 #348 [Verbose] > ╭─[ 128.10ms - stdout ]────────────────────────────────────────────────────────╮
00:00:08 #349 [Verbose] > │ () │
00:00:08 #350 [Verbose] > │ │
00:00:08 #351 [Verbose] > │ │
00:00:08 #352 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #353 [Verbose] >
00:00:08 #354 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:08 #355 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:08 #356 [Verbose] > │ ## format_debug' │
00:00:08 #357 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #358 [Verbose] >
00:00:08 #359 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:08 #360 [Verbose] > inl format_debug' x : std_string =
00:00:08 #361 [Verbose] > !\\(x, $'@@$"format\!(""{{:?}}"", $0)"')
00:00:08 #362 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-4846-4672-4ce1f2ff8313/main.spi
00:00:08 #363 [Verbose] >
00:00:08 #364 [Verbose] > ╭─[ 133.89ms - stdout ]────────────────────────────────────────────────────────╮
00:00:08 #365 [Verbose] > │ () │
00:00:08 #366 [Verbose] > │ │
00:00:08 #367 [Verbose] > │ │
00:00:08 #368 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #369 [Verbose] >
00:00:08 #370 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:08 #371 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:08 #372 [Verbose] > │ ## format_pretty' │
00:00:08 #373 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #374 [Verbose] >
00:00:08 #375 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:08 #376 [Verbose] > inl format_pretty' x : std_string =
00:00:08 #377 [Verbose] > !\\(x, $'@@$"format\!(""{{:#?}}"", $0)"')
00:00:08 #378 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-4860-6017-6ffb0057c87c/main.spi
00:00:08 #379 [Verbose] >
00:00:08 #380 [Verbose] > ╭─[ 127.34ms - stdout ]────────────────────────────────────────────────────────╮
00:00:08 #381 [Verbose] > │ () │
00:00:08 #382 [Verbose] > │ │
00:00:08 #383 [Verbose] > │ │
00:00:08 #384 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #385 [Verbose] >
00:00:08 #386 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:08 #387 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:08 #388 [Verbose] > │ ## obj_to_string │
00:00:08 #389 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #390 [Verbose] >
00:00:08 #391 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:08 #392 [Verbose] > inl obj_to_string x : string =
00:00:08 #393 [Verbose] > $"!x.ToString ()"
00:00:08 #394 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-4872-7299-78f64d717a58/main.spi
00:00:09 #395 [Verbose] >
00:00:09 #396 [Verbose] > ╭─[ 126.52ms - stdout ]────────────────────────────────────────────────────────╮
00:00:09 #397 [Verbose] > │ () │
00:00:09 #398 [Verbose] > │ │
00:00:09 #399 [Verbose] > │ │
00:00:09 #400 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #401 [Verbose] >
00:00:09 #402 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:09 #403 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:09 #404 [Verbose] > │ ## to_string any │
00:00:09 #405 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #406 [Verbose] >
00:00:09 #407 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:09 #408 [Verbose] > instance to_string any =
00:00:09 #409 [Verbose] > obj_to_string
00:00:09 #410 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-4885-8576-8e8637cd8281/main.spi
00:00:09 #411 [Verbose] >
00:00:09 #412 [Verbose] > ╭─[ 159.58ms - stdout ]────────────────────────────────────────────────────────╮
00:00:09 #413 [Verbose] > │ () │
00:00:09 #414 [Verbose] > │ │
00:00:09 #415 [Verbose] > │ │
00:00:09 #416 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #417 [Verbose] >
00:00:09 #418 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:09 #419 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:09 #420 [Verbose] > │ ## to_string result t u │
00:00:09 #421 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #422 [Verbose] >
00:00:09 #423 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:09 #424 [Verbose] > instance to_string result t u = fun x =>
00:00:09 #425 [Verbose] > real
00:00:09 #426 [Verbose] > open rust
00:00:09 #427 [Verbose] > typecase (t * u) with
00:00:09 #428 [Verbose] > | string * string =>
00:00:09 #429 [Verbose] > match x with
00:00:09 #430 [Verbose] > | Ok x => x
00:00:09 #431 [Verbose] > | Error x => $'"Error: " + !x + ""' : string
00:00:09 #432 [Verbose] > | std_string * std_string =>
00:00:09 #433 [Verbose] > match x with
00:00:09 #434 [Verbose] > | Ok x => from_std_string x
00:00:09 #435 [Verbose] > | Error x => $'"Error: " + string !x + ""' : string
00:00:09 #436 [Verbose] > | _ => obj_to_string `u x
00:00:09 #437 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-4901-0182-01182caa6c2b/main.spi
00:00:09 #438 [Verbose] >
00:00:09 #439 [Verbose] > ╭─[ 134.80ms - stdout ]────────────────────────────────────────────────────────╮
00:00:09 #440 [Verbose] > │ () │
00:00:09 #441 [Verbose] > │ │
00:00:09 #442 [Verbose] > │ │
00:00:09 #443 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #444 [Verbose] >
00:00:09 #445 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:09 #446 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:09 #447 [Verbose] > │ ## serialize │
00:00:09 #448 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #449 [Verbose] >
00:00:09 #450 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:09 #451 [Verbose] > inl serialize forall t. (x : t) : resultm.result' std_string json_error =
00:00:09 #452 [Verbose] > !\($'"serde_json::to_string(&!x)"')
00:00:09 #453 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-4915-1537-15d7047f7474/main.spi
00:00:09 #454 [Verbose] >
00:00:09 #455 [Verbose] > ╭─[ 126.71ms - stdout ]────────────────────────────────────────────────────────╮
00:00:09 #456 [Verbose] > │ () │
00:00:09 #457 [Verbose] > │ │
00:00:09 #458 [Verbose] > │ │
00:00:09 #459 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #460 [Verbose] >
00:00:09 #461 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:09 #462 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:09 #463 [Verbose] > │ ## deserialize │
00:00:09 #464 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #465 [Verbose] >
00:00:09 #466 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:09 #467 [Verbose] > inl deserialize forall t. (json : string) : resultm.result' t std_string =
00:00:09 #468 [Verbose] > inl json = json |> as_str
00:00:09 #469 [Verbose] > !\($'"serde_json::from_str(&!json)"')
00:00:09 #470 [Verbose] > |> resultm.map_error' fun (x : json_error) => x |> format'
00:00:09 #471 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-4928-2815-241e3b4b9c59/main.spi
00:00:09 #472 [Verbose] >
00:00:09 #473 [Verbose] > ╭─[ 127.19ms - stdout ]────────────────────────────────────────────────────────╮
00:00:09 #474 [Verbose] > │ () │
00:00:09 #475 [Verbose] > │ │
00:00:09 #476 [Verbose] > │ │
00:00:09 #477 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #478 [Verbose] >
00:00:09 #479 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:09 #480 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:09 #481 [Verbose] > │ ## borsh_deserialize │
00:00:09 #482 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #483 [Verbose] >
00:00:09 #484 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:09 #485 [Verbose] > inl borsh_deserialize forall t. (data : array_base u8) : resultm.result' t
00:00:09 #486 [Verbose] > std_string =
00:00:09 #487 [Verbose] > inl data = data |> am'.as_slice
00:00:09 #488 [Verbose] > !\($'"let mut !data = !data"')
00:00:09 #489 [Verbose] > inl result = !\($'"borsh::BorshDeserialize::deserialize(&mut !data)"')
00:00:09 #490 [Verbose] > result
00:00:09 #491 [Verbose] > |> resultm.map_error' fun (x : borsh_io_error) => x |> format'
00:00:09 #492 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-4941-4101-48eb5697fd53/main.spi
00:00:09 #493 [Verbose] >
00:00:09 #494 [Verbose] > ╭─[ 124.05ms - stdout ]────────────────────────────────────────────────────────╮
00:00:09 #495 [Verbose] > │ () │
00:00:09 #496 [Verbose] > │ │
00:00:09 #497 [Verbose] > │ │
00:00:09 #498 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #499 [Verbose] >
00:00:09 #500 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:09 #501 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:09 #502 [Verbose] > │ ## deserialize_vec │
00:00:09 #503 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #504 [Verbose] >
00:00:09 #505 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:09 #506 [Verbose] > inl deserialize_vec (value : json_value) : resultm.result' (am'.vec u8)
00:00:09 #507 [Verbose] > std_string =
00:00:09 #508 [Verbose] > inl value = join value
00:00:09 #509 [Verbose] > !\($'"serde_json::from_value(!value)"')
00:00:09 #510 [Verbose] > |> resultm.map_error' fun (x : json_error) => x |> format'
00:00:09 #511 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-4953-5359-5345ae5dd71b/main.spi
00:00:09 #512 [Verbose] >
00:00:09 #513 [Verbose] > ╭─[ 125.13ms - stdout ]────────────────────────────────────────────────────────╮
00:00:09 #514 [Verbose] > │ () │
00:00:09 #515 [Verbose] > │ │
00:00:09 #516 [Verbose] > │ │
00:00:09 #517 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #518 [Verbose] >
00:00:09 #519 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:09 #520 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:09 #521 [Verbose] > │ ## encode_uri_component │
00:00:09 #522 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #523 [Verbose] >
00:00:09 #524 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:09 #525 [Verbose] > inl encode_uri_component (s : std_string) : js_string =
00:00:09 #526 [Verbose] > !\($'"js_sys::encode_uri_component(&!s)"')
00:00:09 #527 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-4966-6615-6c7ccc2e6f26/main.spi
00:00:09 #528 [Verbose] >
00:00:09 #529 [Verbose] > ╭─[ 123.01ms - stdout ]────────────────────────────────────────────────────────╮
00:00:09 #530 [Verbose] > │ () │
00:00:09 #531 [Verbose] > │ │
00:00:09 #532 [Verbose] > │ │
00:00:09 #533 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #534 [Verbose] >
00:00:09 #535 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:09 #536 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:09 #537 [Verbose] > │ ## strip_prefix │
00:00:09 #538 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #539 [Verbose] >
00:00:09 #540 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:09 #541 [Verbose] > inl strip_prefix (prefix : char) (s : std_string) : optionm'.option' (rust.ref'
00:00:09 #542 [Verbose] > str) =
00:00:09 #543 [Verbose] > inl s = join s
00:00:09 #544 [Verbose] > !\($'"!s.strip_prefix(!prefix)"')
00:00:10 #545 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-4978-7855-718f976d52ec/main.spi
00:00:10 #546 [Verbose] >
00:00:10 #547 [Verbose] > ╭─[ 127.71ms - stdout ]────────────────────────────────────────────────────────╮
00:00:10 #548 [Verbose] > │ () │
00:00:10 #549 [Verbose] > │ │
00:00:10 #550 [Verbose] > │ │
00:00:10 #551 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:10 #552 [Verbose] >
00:00:10 #553 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:10 #554 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:10 #555 [Verbose] > │ ## starts_with │
00:00:10 #556 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:10 #557 [Verbose] >
00:00:10 #558 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:10 #559 [Verbose] > inl starts_with (value : std_string) (s : std_string) : bool =
00:00:10 #560 [Verbose] > inl s = join s
00:00:10 #561 [Verbose] > !\($'"!s.starts_with(&!value)"')
00:00:10 #562 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-4991-9140-9fca1e1fdf3f/main.spi
00:00:10 #563 [Verbose] >
00:00:10 #564 [Verbose] > ╭─[ 122.53ms - stdout ]────────────────────────────────────────────────────────╮
00:00:10 #565 [Verbose] > │ () │
00:00:10 #566 [Verbose] > │ │
00:00:10 #567 [Verbose] > │ │
00:00:10 #568 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:10 #569 [Verbose] >
00:00:10 #570 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:10 #571 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:10 #572 [Verbose] > │ ## base64_decode │
00:00:10 #573 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:10 #574 [Verbose] >
00:00:10 #575 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:10 #576 [Verbose] > inl base64_decode (s : std_string) : result std_string std_string =
00:00:10 #577 [Verbose] > fun () =>
00:00:10 #578 [Verbose] > inl s = join s
00:00:10 #579 [Verbose] > inl bytes : resultm.result' (am'.vec u8) base64_decode_error =
00:00:10 #580 [Verbose] >
00:00:10 #581 [Verbose] > !\($'"base64::Engine::decode(&base64::engine::general_purpose::STANDARD, !s)"')
00:00:10 #582 [Verbose] > inl bytes =
00:00:10 #583 [Verbose] > bytes
00:00:10 #584 [Verbose] > |> resultm.map_error' format'
00:00:10 #585 [Verbose] > |> resultm.try'
00:00:10 #586 [Verbose] > inl result : resultm.result' std_string utf8_error =
00:00:10 #587 [Verbose] > !\($'"std::str::from_utf8(&!bytes).map(String::from)"')
00:00:10 #588 [Verbose] > result
00:00:10 #589 [Verbose] > |> resultm.map_error' format'
00:00:10 #590 [Verbose] > |> fun x =>
00:00:10 #591 [Verbose] > join x ()
00:00:10 #592 [Verbose] > |> resultm.unbox
00:00:10 #593 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-5003-0389-070a7c3d92a0/main.spi
00:00:10 #594 [Verbose] >
00:00:10 #595 [Verbose] > ╭─[ 487.71ms - stdout ]────────────────────────────────────────────────────────╮
00:00:10 #596 [Verbose] > │ () │
00:00:10 #597 [Verbose] > │ │
00:00:10 #598 [Verbose] > │ │
00:00:10 #599 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:10 #600 [Verbose] >
00:00:10 #601 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:10 #602 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:10 #603 [Verbose] > │ ## concat_array_trailing │
00:00:10 #604 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:10 #605 [Verbose] >
00:00:10 #606 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:10 #607 [Verbose] > inl concat_array_trailing separator input =
00:00:10 #608 [Verbose] > ("", input)
00:00:10 #609 [Verbose] > ||> am.fold fun acc (x : string) =>
00:00:10 #610 [Verbose] > $'!acc + !x + !separator + ""'
00:00:10 #611 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-5052-5267-5658f60c8802/main.spi
00:00:10 #612 [Verbose] >
00:00:10 #613 [Verbose] > ╭─[ 126.35ms - stdout ]────────────────────────────────────────────────────────╮
00:00:10 #614 [Verbose] > │ () │
00:00:10 #615 [Verbose] > │ │
00:00:10 #616 [Verbose] > │ │
00:00:10 #617 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:10 #618 [Verbose] >
00:00:10 #619 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:10 #620 [Verbose] > // // test
00:00:10 #621 [Verbose] > // // rust=
00:00:10 #622 [Verbose] >
00:00:10 #623 [Verbose] > ;[[
00:00:10 #624 [Verbose] > "1"
00:00:10 #625 [Verbose] > "2"
00:00:10 #626 [Verbose] > "3"
00:00:10 #627 [Verbose] > ]]
00:00:10 #628 [Verbose] > |> fun x =>
00:00:10 #629 [Verbose] > inl code = (a x : _ i32 _) |> concat_array_trailing "\n"
00:00:10 #630 [Verbose] > code
00:00:10 #631 [Verbose] > |> _assert_eq "1\n2\n3\n"
00:00:10 #632 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-5065-6540-60344da5eaa1/main.spi
00:00:13 #633 [Verbose] >
00:00:13 #634 [Verbose] > ╭─[ 3.09s - return value ]─────────────────────────────────────────────────────╮
00:00:13 #635 [Verbose] > │ .rs output: │
00:00:13 #636 [Verbose] > │ │
00:00:13 #637 [Verbose] > │ │
00:00:13 #638 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:13 #639 [Verbose] >
00:00:13 #640 [Verbose] > ╭─[ 3.10s - stdout ]───────────────────────────────────────────────────────────╮
00:00:13 #641 [Verbose] > │ │
00:00:13 #642 [Verbose] > │ .fsx: │
00:00:13 #643 [Verbose] > │ type Mut0 = {mutable l0 : int32; mutable l1 : string} │
00:00:13 #644 [Verbose] > │ let rec method1 (v0 : (string [])) : (string []) = │
00:00:13 #645 [Verbose] > │ v0 │
00:00:13 #646 [Verbose] > │ and method2 (v0 : int32, v1 : Mut0) : bool = │
00:00:13 #647 [Verbose] > │ let v2 : int32 = v1.l0 │
00:00:13 #648 [Verbose] > │ let v3 : bool = v2 < v0 │
00:00:13 #649 [Verbose] > │ v3 │
00:00:13 #650 [Verbose] > │ and method3 (v0 : bool) : bool = │
00:00:13 #651 [Verbose] > │ v0 │
00:00:13 #652 [Verbose] > │ and method0 () : unit = │
00:00:13 #653 [Verbose] > │ let v0 : string = "1" │
00:00:13 #654 [Verbose] > │ let v1 : string = "2" │
00:00:13 #655 [Verbose] > │ let v2 : string = "3" │
00:00:13 #656 [Verbose] > │ let v3 : (string []) = [|v0; v1; v2|] │
00:00:13 #657 [Verbose] > │ let v4 : (string []) = method1(v3) │
00:00:13 #658 [Verbose] > │ let v5 : int32 = v4.Length │
00:00:13 #659 [Verbose] > │ let v6 : string = "" │
00:00:13 #660 [Verbose] > │ let v7 : Mut0 = {l0 = 0; l1 = v6} : Mut0 │
00:00:13 #661 [Verbose] > │ while method2(v5, v7) do │
00:00:13 #662 [Verbose] > │ let v9 : int32 = v7.l0 │
00:00:13 #663 [Verbose] > │ let v10 : string = v7.l1 │
00:00:13 #664 [Verbose] > │ let v11 : string = v4.[int v9] │
00:00:13 #665 [Verbose] > │ let v12 : string = "\n" │
00:00:13 #666 [Verbose] > │ let v13 : string = v10 + v11 + v12 + "" │
00:00:13 #667 [Verbose] > │ let v14 : int32 = v9 + 1 │
00:00:13 #668 [Verbose] > │ v7.l0 <- v14 │
00:00:13 #669 [Verbose] > │ v7.l1 <- v13 │
00:00:13 #670 [Verbose] > │ () │
00:00:13 #671 [Verbose] > │ let v15 : string = v7.l1 │
00:00:13 #672 [Verbose] > │ let v17 : bool = v15 = "1\n2\n3\n" │
00:00:13 #673 [Verbose] > │ let v19 : bool = │
00:00:13 #674 [Verbose] > │ if v17 then │
00:00:13 #675 [Verbose] > │ true │
00:00:13 #676 [Verbose] > │ else │
00:00:13 #677 [Verbose] > │ method3(v17) │
00:00:13 #678 [Verbose] > │ let v20 : string = "1\n2\n3\n" │
00:00:13 #679 [Verbose] > │ let v21 : string = $"__expect / actual: %A{v15} / expected: %A{v20}" │
00:00:13 #680 [Verbose] > │ let v22 : bool = v19 = false │
00:00:13 #681 [Verbose] > │ if v22 then │
00:00:13 #682 [Verbose] > │ failwith<unit> v21 │
00:00:13 #683 [Verbose] > │ method0() │
00:00:13 #684 [Verbose] > │ │
00:00:13 #685 [Verbose] > │ .rs: │
00:00:13 #686 [Verbose] > │ #![allow(dead_code,)] │
00:00:13 #687 [Verbose] > │ #![allow(non_camel_case_types,)] │
00:00:13 #688 [Verbose] > │ #![allow(non_snake_case,)] │
00:00:13 #689 [Verbose] > │ #![allow(non_upper_case_globals,)] │
00:00:13 #690 [Verbose] > │ #![allow(unreachable_code,)] │
00:00:13 #691 [Verbose] > │ #![allow(unused_attributes,)] │
00:00:13 #692 [Verbose] > │ #![allow(unused_imports,)] │
00:00:13 #693 [Verbose] > │ #![allow(unused_macros,)] │
00:00:13 #694 [Verbose] > │ #![allow(unused_parens,)] │
00:00:13 #695 [Verbose] > │ #![allow(unused_variables,)] │
00:00:13 #696 [Verbose] > │ mod module_ccfa04bf { │
00:00:13 #697 [Verbose] > │ pub mod Spiral_eval { │
00:00:13 #698 [Verbose] > │ use super::*; │
00:00:13 #699 [Verbose] > │ use fable_library_rust::Native_::LrcPtr; │
00:00:13 #700 [Verbose] > │ use fable_library_rust::Native_::MutCell; │
00:00:13 #701 [Verbose] > │ use fable_library_rust::Native_::on_startup; │
00:00:13 #702 [Verbose] > │ use fable_library_rust::NativeArray_::Array; │
00:00:13 #703 [Verbose] > │ use fable_library_rust::NativeArray_::count; │
00:00:13 #704 [Verbose] > │ use fable_library_rust::NativeArray_::new_array; │
00:00:13 #705 [Verbose] > │ use fable_library_rust::String_::append; │
00:00:13 #706 [Verbose] > │ use fable_library_rust::String_::sprintf; │
00:00:13 #707 [Verbose] > │ use fable_library_rust::String_::string; │
00:00:13 #708 [Verbose] > │ #[derive(Clone, Debug, Default, PartialEq, PartialOrd, Hash, Eq,)] │
00:00:13 #709 [Verbose] > │ pub struct Mut0 { │
00:00:13 #710 [Verbose] > │ pub l0: MutCell<i32>, │
00:00:13 #711 [Verbose] > │ pub l1: MutCell<string>, │
00:00:13 #712 [Verbose] > │ } │
00:00:13 #713 [Verbose] > │ impl core::fmt::Display for Spiral_eval::Mut0 { │
00:00:13 #714 [Verbose] > │ fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result │
00:00:13 #715 [Verbose] > │ { │
00:00:13 #716 [Verbose] > │ write!(f, "{}", core::any::type_name::<Self>()) │
00:00:13 #717 [Verbose] > │ } │
00:00:13 #718 [Verbose] > │ } │
00:00:13 #719 [Verbose] > │ pub fn method1(v0: Array<string>) -> Array<string> { v0 } │
00:00:13 #720 [Verbose] > │ pub fn method2(v0: i32, v1: LrcPtr<Spiral_eval::Mut0>) -> bool { │
00:00:13 #721 [Verbose] > │ v1.l0.get().clone() < v0 │
00:00:13 #722 [Verbose] > │ } │
00:00:13 #723 [Verbose] > │ pub fn method3(v0: bool) -> bool { v0 } │
00:00:13 #724 [Verbose] > │ pub fn method0() { │
00:00:13 #725 [Verbose] > │ let v4: Array<string> = │
00:00:13 #726 [Verbose] > │ Spiral_eval::method1(new_array(&[string("1"), string("2"), │
00:00:13 #727 [Verbose] > │ string("3")])); │
00:00:13 #728 [Verbose] > │ let v5: i32 = count(v4.clone()); │
00:00:13 #729 [Verbose] > │ let v7: LrcPtr<Spiral_eval::Mut0> = │
00:00:13 #730 [Verbose] > │ LrcPtr::new(Spiral_eval::Mut0{l0: MutCell::new(0_i32), │
00:00:13 #731 [Verbose] > │ l1: │
00:00:13 #732 [Verbose] > │ MutCell::new(string("")),}); │
00:00:13 #733 [Verbose] > │ while Spiral_eval::method2(v5, v7.clone()) { │
00:00:13 #734 [Verbose] > │ let v9: i32 = v7.l0.get().clone(); │
00:00:13 #735 [Verbose] > │ let v13: string = │
00:00:13 #736 [Verbose] > │ append(append(append(v7.l1.get().clone(), v4[ │
00:00:13 #737 [Verbose] > │ v9].clone()), │
00:00:13 #738 [Verbose] > │ string("\n")), string("")); │
00:00:13 #739 [Verbose] > │ let v14: i32 = v9 + 1_i32; │
00:00:13 #740 [Verbose] > │ v7.l0.set(v14); │
00:00:13 #741 [Verbose] > │ v7.l1.set(v13); │
00:00:13 #742 [Verbose] > │ () │
00:00:13 #743 [Verbose] > │ } │
00:00:13 #744 [Verbose] > │ { │
00:00:13 #745 [Verbose] > │ let v15: string = v7.l1.get().clone(); │
00:00:13 #746 [Verbose] > │ let v17: bool = v15.clone() == string("1\n2\n3\n"); │
00:00:13 #747 [Verbose] > │ if (if v17 { true } else { Spiral_eval::method3(v17) }) == │
00:00:13 #748 [Verbose] > │ false { │
00:00:13 #749 [Verbose] > │ panic!("{}", │
00:00:13 #750 [Verbose] > │ sprintf!("__expect / actual: {:?} / expected: │
00:00:13 #751 [Verbose] > │ {:?}", v15, string("1\n2\n3\n"))); │
00:00:13 #752 [Verbose] > │ } │
00:00:13 #753 [Verbose] > │ } │
00:00:13 #754 [Verbose] > │ } │
00:00:13 #755 [Verbose] > │ on_startup!(Spiral_eval::method0()); │
00:00:13 #756 [Verbose] > │ } │
00:00:13 #757 [Verbose] > │ } │
00:00:13 #758 [Verbose] > │ pub use module_ccfa04bf::*; │
00:00:13 #759 [Verbose] > │ │
00:00:13 #760 [Verbose] > │ │
00:00:13 #761 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:13 #762 [Verbose] >
00:00:13 #763 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:13 #764 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:13 #765 [Verbose] > │ ## concat_list_trailing │
00:00:13 #766 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:13 #767 [Verbose] >
00:00:13 #768 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:13 #769 [Verbose] > inl concat_list_trailing separator input =
00:00:13 #770 [Verbose] > ("", input)
00:00:13 #771 [Verbose] > ||> listm.fold fun acc (x : string) =>
00:00:13 #772 [Verbose] > $'!acc + !x + !separator + ""'
00:00:14 #773 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-5376-7652-798c02db22e7/main.spi
00:00:14 #774 [Verbose] >
00:00:14 #775 [Verbose] > ╭─[ 139.91ms - stdout ]────────────────────────────────────────────────────────╮
00:00:14 #776 [Verbose] > │ () │
00:00:14 #777 [Verbose] > │ │
00:00:14 #778 [Verbose] > │ │
00:00:14 #779 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:14 #780 [Verbose] >
00:00:14 #781 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:14 #782 [Verbose] > // // test
00:00:14 #783 [Verbose] > // // rust=
00:00:14 #784 [Verbose] >
00:00:14 #785 [Verbose] > [[
00:00:14 #786 [Verbose] > "1"
00:00:14 #787 [Verbose] > "2"
00:00:14 #788 [Verbose] > "3"
00:00:14 #789 [Verbose] > ]]
00:00:14 #790 [Verbose] > |> fun x =>
00:00:14 #791 [Verbose] > inl code = (x : _) |> sm'.concat_list_trailing "\n"
00:00:14 #792 [Verbose] > code
00:00:14 #793 [Verbose] > |> _assert_eq "1\n2\n3\n"
00:00:14 #794 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-5390-9055-90ba4badbffe/main.spi
00:00:16 #795 [Verbose] >
00:00:16 #796 [Verbose] > ╭─[ 2.54s - return value ]─────────────────────────────────────────────────────╮
00:00:16 #797 [Verbose] > │ .rs output: │
00:00:16 #798 [Verbose] > │ │
00:00:16 #799 [Verbose] > │ │
00:00:16 #800 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:16 #801 [Verbose] >
00:00:16 #802 [Verbose] > ╭─[ 2.54s - stdout ]───────────────────────────────────────────────────────────╮
00:00:16 #803 [Verbose] > │ │
00:00:16 #804 [Verbose] > │ .fsx: │
00:00:16 #805 [Verbose] > │ let rec method1 (v0 : bool) : bool = │
00:00:16 #806 [Verbose] > │ v0 │
00:00:16 #807 [Verbose] > │ and method0 () : unit = │
00:00:16 #808 [Verbose] > │ let v0 : string = "" │
00:00:16 #809 [Verbose] > │ let v1 : string = "1" │
00:00:16 #810 [Verbose] > │ let v2 : string = "\n" │
00:00:16 #811 [Verbose] > │ let v3 : string = v0 + v1 + v2 + "" │
00:00:16 #812 [Verbose] > │ let v4 : string = "2" │
00:00:16 #813 [Verbose] > │ let v5 : string = v3 + v4 + v2 + "" │
00:00:16 #814 [Verbose] > │ let v6 : string = "3" │
00:00:16 #815 [Verbose] > │ let v7 : string = v5 + v6 + v2 + "" │
00:00:16 #816 [Verbose] > │ let v9 : bool = v7 = "1\n2\n3\n" │
00:00:16 #817 [Verbose] > │ let v11 : bool = │
00:00:16 #818 [Verbose] > │ if v9 then │
00:00:16 #819 [Verbose] > │ true │
00:00:16 #820 [Verbose] > │ else │
00:00:16 #821 [Verbose] > │ method1(v9) │
00:00:16 #822 [Verbose] > │ let v12 : string = "1\n2\n3\n" │
00:00:16 #823 [Verbose] > │ let v13 : string = $"__expect / actual: %A{v7} / expected: %A{v12}" │
00:00:16 #824 [Verbose] > │ let v14 : bool = v11 = false │
00:00:16 #825 [Verbose] > │ if v14 then │
00:00:16 #826 [Verbose] > │ failwith<unit> v13 │
00:00:16 #827 [Verbose] > │ method0() │
00:00:16 #828 [Verbose] > │ │
00:00:16 #829 [Verbose] > │ .rs: │
00:00:16 #830 [Verbose] > │ #![allow(dead_code,)] │
00:00:16 #831 [Verbose] > │ #![allow(non_camel_case_types,)] │
00:00:16 #832 [Verbose] > │ #![allow(non_snake_case,)] │
00:00:16 #833 [Verbose] > │ #![allow(non_upper_case_globals,)] │
00:00:16 #834 [Verbose] > │ #![allow(unreachable_code,)] │
00:00:16 #835 [Verbose] > │ #![allow(unused_attributes,)] │
00:00:16 #836 [Verbose] > │ #![allow(unused_imports,)] │
00:00:16 #837 [Verbose] > │ #![allow(unused_macros,)] │
00:00:16 #838 [Verbose] > │ #![allow(unused_parens,)] │
00:00:16 #839 [Verbose] > │ #![allow(unused_variables,)] │
00:00:16 #840 [Verbose] > │ mod module_ccfa04bf { │
00:00:16 #841 [Verbose] > │ pub mod Spiral_eval { │
00:00:16 #842 [Verbose] > │ use super::*; │
00:00:16 #843 [Verbose] > │ use fable_library_rust::Native_::on_startup; │
00:00:16 #844 [Verbose] > │ use fable_library_rust::String_::sprintf; │
00:00:16 #845 [Verbose] > │ use fable_library_rust::String_::string; │
00:00:16 #846 [Verbose] > │ pub fn method1(v0: bool) -> bool { v0 } │
00:00:16 #847 [Verbose] > │ pub fn method0() { │
00:00:16 #848 [Verbose] > │ let v7: string = string("1\n2\n3\n"); │
00:00:16 #849 [Verbose] > │ let v9: bool = v7.clone() == string("1\n2\n3\n"); │
00:00:16 #850 [Verbose] > │ if (if v9 { true } else { Spiral_eval::method1(v9) }) == false { │
00:00:16 #851 [Verbose] > │ panic!("{}", │
00:00:16 #852 [Verbose] > │ sprintf!("__expect / actual: {:?} / expected: {:?}", │
00:00:16 #853 [Verbose] > │ v7, string("1\n2\n3\n"))); │
00:00:16 #854 [Verbose] > │ } │
00:00:16 #855 [Verbose] > │ } │
00:00:16 #856 [Verbose] > │ on_startup!(Spiral_eval::method0()); │
00:00:16 #857 [Verbose] > │ } │
00:00:16 #858 [Verbose] > │ } │
00:00:16 #859 [Verbose] > │ pub use module_ccfa04bf::*; │
00:00:16 #860 [Verbose] > │ │
00:00:16 #861 [Verbose] > │ │
00:00:16 #862 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:16 #863 [Verbose] >
00:00:16 #864 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:16 #865 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:16 #866 [Verbose] > │ ## concat_list_heap_trailing │
00:00:16 #867 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:16 #868 [Verbose] >
00:00:16 #869 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:16 #870 [Verbose] > inl concat_list_heap_trailing separator input =
00:00:16 #871 [Verbose] > ("", input)
00:00:16 #872 [Verbose] > ||> listm.fold fun acc (x : string) =>
00:00:16 #873 [Verbose] > inl acc = acc |> to_std_string
00:00:16 #874 [Verbose] > inl x = x |> as_str
00:00:16 #875 [Verbose] > inl separator = separator |> as_str
00:00:16 #876 [Verbose] > !\($'"!acc + !x + !separator"')
00:00:16 #877 [Verbose] > |> from_std_string
00:00:16 #878 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-5645-4503-49828563186a/main.spi
00:00:16 #879 [Verbose] >
00:00:16 #880 [Verbose] > ╭─[ 122.75ms - stdout ]────────────────────────────────────────────────────────╮
00:00:16 #881 [Verbose] > │ () │
00:00:16 #882 [Verbose] > │ │
00:00:16 #883 [Verbose] > │ │
00:00:16 #884 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:16 #885 [Verbose] >
00:00:16 #886 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:16 #887 [Verbose] > // // test
00:00:16 #888 [Verbose] > // // rust=
00:00:16 #889 [Verbose] >
00:00:16 #890 [Verbose] > types ()
00:00:16 #891 [Verbose] >
00:00:16 #892 [Verbose] > [[
00:00:16 #893 [Verbose] > "1"
00:00:16 #894 [Verbose] > "2"
00:00:16 #895 [Verbose] > "3"
00:00:16 #896 [Verbose] > ]]
00:00:16 #897 [Verbose] > |> fun x =>
00:00:16 #898 [Verbose] > inl code = (x : _) |> sm'.concat_list_heap_trailing "\n"
00:00:16 #899 [Verbose] > code
00:00:16 #900 [Verbose] > |> _assert_eq "1\n2\n3\n"
00:00:16 #901 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-5657-5731-566959781971/main.spi
00:00:19 #902 [Verbose] >
00:00:19 #903 [Verbose] > ╭─[ 2.91s - return value ]─────────────────────────────────────────────────────╮
00:00:19 #904 [Verbose] > │ .rs output: │
00:00:19 #905 [Verbose] > │ │
00:00:19 #906 [Verbose] > │ │
00:00:19 #907 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:19 #908 [Verbose] >
00:00:19 #909 [Verbose] > ╭─[ 2.91s - stdout ]───────────────────────────────────────────────────────────╮
00:00:19 #910 [Verbose] > │ │
00:00:19 #911 [Verbose] > │ .fsx: │
00:00:19 #912 [Verbose] > │ [<Fable.Core.Erase; Fable.Core.Emit("Func0<$0>")>] type Func0<'T> = class │
00:00:19 #913 [Verbose] > │ end │
00:00:19 #914 [Verbose] > │ [<Fable.Core.Erase; Fable.Core.Emit("Func1<$0, $1>")>] type Func0<'T, 'U> = │
00:00:19 #915 [Verbose] > │ class end │
00:00:19 #916 [Verbose] > │ [<Fable.Core.Erase; Fable.Core.Emit("Box<$0>")>] type Box<'T> = class end │
00:00:19 #917 [Verbose] > │ [<Fable.Core.Erase; Fable.Core.Emit("dyn $0")>] type Dyn<'T> = class end │
00:00:19 #918 [Verbose] > │ [<Fable.Core.Erase; Fable.Core.Emit("Fn() -> $0")>] type Fn<'T> = class end │
00:00:19 #919 [Verbose] > │ [<Fable.Core.Erase; Fable.Core.Emit("Fn()")>] type FnUnit = class end │
00:00:19 #920 [Verbose] > │ [<Fable.Core.Erase; Fable.Core.Emit("FnOnce() -> $0")>] type FnOnce<'T> = │
00:00:19 #921 [Verbose] > │ class end │
00:00:19 #922 [Verbose] > │ [<Fable.Core.Erase; Fable.Core.Emit("Fn($0, $1)")>] type ActionFn2<'T, 'U> = │
00:00:19 #923 [Verbose] > │ class end │
00:00:19 #924 [Verbose] > │ [<Fable.Core.Erase; Fable.Core.Emit("impl $0")>] type Impl<'T> = class end │
00:00:19 #925 [Verbose] > │ [<Fable.Core.Erase; Fable.Core.Emit("mut $0")>] type Mut<'T> = class end │
00:00:19 #926 [Verbose] > │ [<Fable.Core.Erase; Fable.Core.Emit("&$0")>] type Ref<'T> = class end │
00:00:19 #927 [Verbose] > │ [<Fable.Core.Erase; Fable.Core.Emit("&'static $0")>] type StaticRef<'T> = │
00:00:19 #928 [Verbose] > │ class end │
00:00:19 #929 [Verbose] > │ [<Fable.Core.Erase; Fable.Core.Emit("MutCell<$0>")>] type MutCell<'T> = │
00:00:19 #930 [Verbose] > │ class end │
00:00:19 #931 [Verbose] > │ [<Fable.Core.Erase; Fable.Core.Emit("std::any::Any")>] type std_any_Any = │
00:00:19 #932 [Verbose] > │ class end │
00:00:19 #933 [Verbose] > │ [<Fable.Core.Erase; Fable.Core.Emit("std::cell::RefCell<$0>")>] type │
00:00:19 #934 [Verbose] > │ std_cell_RefCell<'T> = class end │
00:00:19 #935 [Verbose] > │ [<Fable.Core.Erase; Fable.Core.Emit("std::pin::Pin<$0>")>] type │
00:00:19 #936 [Verbose] > │ std_pin_Pin<'T> = class end │
00:00:19 #937 [Verbose] > │ [<Fable.Core.Erase; Fable.Core.Emit("std::rc::Rc<$0>")>] type std_rc_Rc<'T> │
00:00:19 #938 [Verbose] > │ = class end │
00:00:19 #939 [Verbose] > │ [<Fable.Core.Erase; Fable.Core.Emit("std::rc::Weak<$0>")>] type │
00:00:19 #940 [Verbose] > │ std_rc_Weak<'T> = class end │
00:00:19 #941 [Verbose] > │ [<Fable.Core.Erase; Fable.Core.Emit("std::sync::Arc<$0>")>] type │
00:00:19 #942 [Verbose] > │ std_sync_Arc<'T> = class end │
00:00:19 #943 [Verbose] > │ [<Fable.Core.Erase; Fable.Core.Emit("str")>] type Str = class end │
00:00:19 #944 [Verbose] > │ [<Fable.Core.Erase; Fable.Core.Emit("base64::DecodeError")>] type │
00:00:19 #945 [Verbose] > │ base64_DecodeError = class end │
00:00:19 #946 [Verbose] > │ [<Fable.Core.Erase; Fable.Core.Emit("borsh::io::Error")>] type │
00:00:19 #947 [Verbose] > │ borsh_io_Error = class end │
00:00:19 #948 [Verbose] > │ [<Fable.Core.Erase; Fable.Core.Emit("js_sys::JsString")>] type │
00:00:19 #949 [Verbose] > │ js_sys_JsString = class end │
00:00:19 #950 [Verbose] > │ [<Fable.Core.Erase; Fable.Core.Emit("serde_json::Error")>] type │
00:00:19 #951 [Verbose] > │ serde_json_Error = class end │
00:00:19 #952 [Verbose] > │ [<Fable.Core.Erase; Fable.Core.Emit("serde_json::Value")>] type │
00:00:19 #953 [Verbose] > │ serde_json_Value = class end │
00:00:19 #954 [Verbose] > │ [<Fable.Core.Erase; Fable.Core.Emit("serde_wasm_bindgen::Error")>] type │
00:00:19 #955 [Verbose] > │ serde_wasm_bindgen_Error = class end │
00:00:19 #956 [Verbose] > │ [<Fable.Core.Erase; Fable.Core.Emit("std::str::Utf8Error")>] type │
00:00:19 #957 [Verbose] > │ std_str_Utf8Error = class end │
00:00:19 #958 [Verbose] > │ [<Fable.Core.Erase; Fable.Core.Emit("std::string::String")>] type │
00:00:19 #959 [Verbose] > │ std_string_String = class end │
00:00:19 #960 [Verbose] > │ let rec method1 () : string = │
00:00:19 #961 [Verbose] > │ let v0 : string = "" │
00:00:19 #962 [Verbose] > │ v0 │
00:00:19 #963 [Verbose] > │ and method2 (v0 : string) : string = │
00:00:19 #964 [Verbose] > │ v0 │
00:00:19 #965 [Verbose] > │ and method3 () : string = │
00:00:19 #966 [Verbose] > │ let v0 : string = "1" │
00:00:19 #967 [Verbose] > │ v0 │
00:00:19 #968 [Verbose] > │ and method4 () : string = │
00:00:19 #969 [Verbose] > │ let v0 : string = "\n" │
00:00:19 #970 [Verbose] > │ v0 │
00:00:19 #971 [Verbose] > │ and method5 (v0 : std_string_String) : std_string_String = │
00:00:19 #972 [Verbose] > │ v0 │
00:00:19 #973 [Verbose] > │ and method6 (v0 : string) : string = │
00:00:19 #974 [Verbose] > │ v0 │
00:00:19 #975 [Verbose] > │ and method7 () : string = │
00:00:19 #976 [Verbose] > │ let v0 : string = "2" │
00:00:19 #977 [Verbose] > │ v0 │
00:00:19 #978 [Verbose] > │ and method8 () : string = │
00:00:19 #979 [Verbose] > │ let v0 : string = "3" │
00:00:19 #980 [Verbose] > │ v0 │
00:00:19 #981 [Verbose] > │ and method9 (v0 : bool) : bool = │
00:00:19 #982 [Verbose] > │ v0 │
00:00:19 #983 [Verbose] > │ and method0 () : unit = │
00:00:19 #984 [Verbose] > │ let v0 : string = method1() │
00:00:19 #985 [Verbose] > │ let v1 : string = method2(v0) │
00:00:19 #986 [Verbose] > │ let v2 : string = $"fable_library_rust::String_::LrcStr::as_str(&v1)" │
00:00:19 #987 [Verbose] > │ let v3 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v2 │
00:00:19 #988 [Verbose] > │ let v4 : string = "String::from(v3)" │
00:00:19 #989 [Verbose] > │ let v5 : std_string_String = Fable.Core.RustInterop.emitRustExpr () v4 │
00:00:19 #990 [Verbose] > │ let v6 : string = method3() │
00:00:19 #991 [Verbose] > │ let v7 : string = $"fable_library_rust::String_::LrcStr::as_str(&v6)" │
00:00:19 #992 [Verbose] > │ let v8 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v7 │
00:00:19 #993 [Verbose] > │ let v9 : string = method4() │
00:00:19 #994 [Verbose] > │ let v10 : string = $"fable_library_rust::String_::LrcStr::as_str(&v9)" │
00:00:19 #995 [Verbose] > │ let v11 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v10 │
00:00:19 #996 [Verbose] > │ let v12 : string = "v5 + v8 + v11" │
00:00:19 #997 [Verbose] > │ let v13 : std_string_String = Fable.Core.RustInterop.emitRustExpr () v12 │
00:00:19 #998 [Verbose] > │ let v14 : std_string_String = method5(v13) │
00:00:19 #999 [Verbose] > │ let v15 : string = "fable_library_rust::String_::fromString(v14)" │
00:00:19 #1000 [Verbose] > │ let v16 : string = Fable.Core.RustInterop.emitRustExpr () v15 │
00:00:19 #1001 [Verbose] > │ let v17 : string = method6(v16) │
00:00:19 #1002 [Verbose] > │ let v18 : string = method2(v17) │
00:00:19 #1003 [Verbose] > │ let v19 : string = $"fable_library_rust::String_::LrcStr::as_str(&v18)" │
00:00:19 #1004 [Verbose] > │ let v20 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v19 │
00:00:19 #1005 [Verbose] > │ let v21 : string = "String::from(v20)" │
00:00:19 #1006 [Verbose] > │ let v22 : std_string_String = Fable.Core.RustInterop.emitRustExpr () v21 │
00:00:19 #1007 [Verbose] > │ let v23 : string = method7() │
00:00:19 #1008 [Verbose] > │ let v24 : string = $"fable_library_rust::String_::LrcStr::as_str(&v23)" │
00:00:19 #1009 [Verbose] > │ let v25 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v24 │
00:00:19 #1010 [Verbose] > │ let v26 : string = method4() │
00:00:19 #1011 [Verbose] > │ let v27 : string = $"fable_library_rust::String_::LrcStr::as_str(&v26)" │
00:00:19 #1012 [Verbose] > │ let v28 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v27 │
00:00:19 #1013 [Verbose] > │ let v29 : string = "v22 + v25 + v28" │
00:00:19 #1014 [Verbose] > │ let v30 : std_string_String = Fable.Core.RustInterop.emitRustExpr () v29 │
00:00:19 #1015 [Verbose] > │ let v31 : std_string_String = method5(v30) │
00:00:19 #1016 [Verbose] > │ let v32 : string = "fable_library_rust::String_::fromString(v31)" │
00:00:19 #1017 [Verbose] > │ let v33 : string = Fable.Core.RustInterop.emitRustExpr () v32 │
00:00:19 #1018 [Verbose] > │ let v34 : string = method6(v33) │
00:00:19 #1019 [Verbose] > │ let v35 : string = method2(v34) │
00:00:19 #1020 [Verbose] > │ let v36 : string = $"fable_library_rust::String_::LrcStr::as_str(&v35)" │
00:00:19 #1021 [Verbose] > │ let v37 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v36 │
00:00:19 #1022 [Verbose] > │ let v38 : string = "String::from(v37)" │
00:00:19 #1023 [Verbose] > │ let v39 : std_string_String = Fable.Core.RustInterop.emitRustExpr () v38 │
00:00:19 #1024 [Verbose] > │ let v40 : string = method8() │
00:00:19 #1025 [Verbose] > │ let v41 : string = $"fable_library_rust::String_::LrcStr::as_str(&v40)" │
00:00:19 #1026 [Verbose] > │ let v42 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v41 │
00:00:19 #1027 [Verbose] > │ let v43 : string = method4() │
00:00:19 #1028 [Verbose] > │ let v44 : string = $"fable_library_rust::String_::LrcStr::as_str(&v43)" │
00:00:19 #1029 [Verbose] > │ let v45 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v44 │
00:00:19 #1030 [Verbose] > │ let v46 : string = "v39 + v42 + v45" │
00:00:19 #1031 [Verbose] > │ let v47 : std_string_String = Fable.Core.RustInterop.emitRustExpr () v46 │
00:00:19 #1032 [Verbose] > │ let v48 : std_string_String = method5(v47) │
00:00:19 #1033 [Verbose] > │ let v49 : string = "fable_library_rust::String_::fromString(v48)" │
00:00:19 #1034 [Verbose] > │ let v50 : string = Fable.Core.RustInterop.emitRustExpr () v49 │
00:00:19 #1035 [Verbose] > │ let v52 : bool = v50 = "1\n2\n3\n" │
00:00:19 #1036 [Verbose] > │ let v54 : bool = │
00:00:19 #1037 [Verbose] > │ if v52 then │
00:00:19 #1038 [Verbose] > │ true │
00:00:19 #1039 [Verbose] > │ else │
00:00:19 #1040 [Verbose] > │ method9(v52) │
00:00:19 #1041 [Verbose] > │ let v55 : string = "1\n2\n3\n" │
00:00:19 #1042 [Verbose] > │ let v56 : string = $"__expect / actual: %A{v50} / expected: %A{v55}" │
00:00:19 #1043 [Verbose] > │ let v57 : bool = v54 = false │
00:00:19 #1044 [Verbose] > │ if v57 then │
00:00:19 #1045 [Verbose] > │ failwith<unit> v56 │
00:00:19 #1046 [Verbose] > │ method0() │
00:00:19 #1047 [Verbose] > │ │
00:00:19 #1048 [Verbose] > │ .rs: │
00:00:19 #1049 [Verbose] > │ #![allow(dead_code,)] │
00:00:19 #1050 [Verbose] > │ #![allow(non_camel_case_types,)] │
00:00:19 #1051 [Verbose] > │ #![allow(non_snake_case,)] │
00:00:19 #1052 [Verbose] > │ #![allow(non_upper_case_globals,)] │
00:00:19 #1053 [Verbose] > │ #![allow(unreachable_code,)] │
00:00:19 #1054 [Verbose] > │ #![allow(unused_attributes,)] │
00:00:19 #1055 [Verbose] > │ #![allow(unused_imports,)] │
00:00:19 #1056 [Verbose] > │ #![allow(unused_macros,)] │
00:00:19 #1057 [Verbose] > │ #![allow(unused_parens,)] │
00:00:19 #1058 [Verbose] > │ #![allow(unused_variables,)] │
00:00:19 #1059 [Verbose] > │ mod module_ccfa04bf { │
00:00:19 #1060 [Verbose] > │ pub mod Spiral_eval { │
00:00:19 #1061 [Verbose] > │ use super::*; │
00:00:19 #1062 [Verbose] > │ use fable_library_rust::Native_::on_startup; │
00:00:19 #1063 [Verbose] > │ use fable_library_rust::String_::sprintf; │
00:00:19 #1064 [Verbose] > │ use fable_library_rust::String_::string; │
00:00:19 #1065 [Verbose] > │ pub fn method1() -> string { string("") } │
00:00:19 #1066 [Verbose] > │ pub fn method2(v0: string) -> string { v0 } │
00:00:19 #1067 [Verbose] > │ pub fn method3() -> string { string("1") } │
00:00:19 #1068 [Verbose] > │ pub fn method4() -> string { string("\n") } │
00:00:19 #1069 [Verbose] > │ pub fn method5(v0: std::string::String) -> std::string::String { v0 │
00:00:19 #1070 [Verbose] > │ } │
00:00:19 #1071 [Verbose] > │ pub fn method6(v0: string) -> string { v0 } │
00:00:19 #1072 [Verbose] > │ pub fn method7() -> string { string("2") } │
00:00:19 #1073 [Verbose] > │ pub fn method8() -> string { string("3") } │
00:00:19 #1074 [Verbose] > │ pub fn method9(v0: bool) -> bool { v0 } │
00:00:19 #1075 [Verbose] > │ pub fn method0() { │
00:00:19 #1076 [Verbose] > │ let v1: string = Spiral_eval::method2(Spiral_eval::method1()); │
00:00:19 #1077 [Verbose] > │ let v3: &str = fable_library_rust::String_::LrcStr::as_str(&v1); │
00:00:19 #1078 [Verbose] > │ let v5: std::string::String = String::from(v3); │
00:00:19 #1079 [Verbose] > │ let v6: string = Spiral_eval::method3(); │
00:00:19 #1080 [Verbose] > │ let v8: &str = fable_library_rust::String_::LrcStr::as_str(&v6); │
00:00:19 #1081 [Verbose] > │ let v9: string = Spiral_eval::method4(); │
00:00:19 #1082 [Verbose] > │ let v11: &str = │
00:00:19 #1083 [Verbose] > │ fable_library_rust::String_::LrcStr::as_str(&v9); │
00:00:19 #1084 [Verbose] > │ let v14: std::string::String = │
00:00:19 #1085 [Verbose] > │ Spiral_eval::method5(v5 + v8 + v11); │
00:00:19 #1086 [Verbose] > │ let v18: string = │
00:00:19 #1087 [Verbose] > │ │
00:00:19 #1088 [Verbose] > │ Spiral_eval::method2(Spiral_eval::method6(fable_library_rust::String_::fromS │
00:00:19 #1089 [Verbose] > │ tring(v14))); │
00:00:19 #1090 [Verbose] > │ let v20: &str = │
00:00:19 #1091 [Verbose] > │ fable_library_rust::String_::LrcStr::as_str(&v18); │
00:00:19 #1092 [Verbose] > │ let v22: std::string::String = String::from(v20); │
00:00:19 #1093 [Verbose] > │ let v23: string = Spiral_eval::method7(); │
00:00:19 #1094 [Verbose] > │ let v25: &str = │
00:00:19 #1095 [Verbose] > │ fable_library_rust::String_::LrcStr::as_str(&v23); │
00:00:19 #1096 [Verbose] > │ let v26: string = Spiral_eval::method4(); │
00:00:19 #1097 [Verbose] > │ let v28: &str = │
00:00:19 #1098 [Verbose] > │ fable_library_rust::String_::LrcStr::as_str(&v26); │
00:00:19 #1099 [Verbose] > │ let v31: std::string::String = │
00:00:19 #1100 [Verbose] > │ Spiral_eval::method5(v22 + v25 + v28); │
00:00:19 #1101 [Verbose] > │ let v35: string = │
00:00:19 #1102 [Verbose] > │ │
00:00:19 #1103 [Verbose] > │ Spiral_eval::method2(Spiral_eval::method6(fable_library_rust::String_::fromS │
00:00:19 #1104 [Verbose] > │ tring(v31))); │
00:00:19 #1105 [Verbose] > │ let v37: &str = │
00:00:19 #1106 [Verbose] > │ fable_library_rust::String_::LrcStr::as_str(&v35); │
00:00:19 #1107 [Verbose] > │ let v39: std::string::String = String::from(v37); │
00:00:19 #1108 [Verbose] > │ let v40: string = Spiral_eval::method8(); │
00:00:19 #1109 [Verbose] > │ let v42: &str = │
00:00:19 #1110 [Verbose] > │ fable_library_rust::String_::LrcStr::as_str(&v40); │
00:00:19 #1111 [Verbose] > │ let v43: string = Spiral_eval::method4(); │
00:00:19 #1112 [Verbose] > │ let v45: &str = │
00:00:19 #1113 [Verbose] > │ fable_library_rust::String_::LrcStr::as_str(&v43); │
00:00:19 #1114 [Verbose] > │ let v48: std::string::String = │
00:00:19 #1115 [Verbose] > │ Spiral_eval::method5(v39 + v42 + v45); │
00:00:19 #1116 [Verbose] > │ let v50: string = fable_library_rust::String_::fromString(v48); │
00:00:19 #1117 [Verbose] > │ let v52: bool = v50.clone() == string("1\n2\n3\n"); │
00:00:19 #1118 [Verbose] > │ if (if v52 { true } else { Spiral_eval::method9(v52) }) == false │
00:00:19 #1119 [Verbose] > │ { │
00:00:19 #1120 [Verbose] > │ panic!("{}", │
00:00:19 #1121 [Verbose] > │ sprintf!("__expect / actual: {:?} / expected: {:?}", │
00:00:19 #1122 [Verbose] > │ v50, string("1\n2\n3\n"))); │
00:00:19 #1123 [Verbose] > │ } │
00:00:19 #1124 [Verbose] > │ } │
00:00:19 #1125 [Verbose] > │ on_startup!(Spiral_eval::method0()); │
00:00:19 #1126 [Verbose] > │ } │
00:00:19 #1127 [Verbose] > │ } │
00:00:19 #1128 [Verbose] > │ pub use module_ccfa04bf::*; │
00:00:19 #1129 [Verbose] > │ │
00:00:19 #1130 [Verbose] > │ │
00:00:19 #1131 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:19 #1132 [Verbose] >
00:00:19 #1133 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:19 #1134 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:19 #1135 [Verbose] > │ ## concat │
00:00:19 #1136 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:19 #1137 [Verbose] >
00:00:19 #1138 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:19 #1139 [Verbose] > inl concat (a : string) (b : a _ _) : string =
00:00:19 #1140 [Verbose] > $"!b |> String.concat !a"
00:00:19 #1141 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-5949-4908-4b99a7f1ab71/main.spi
00:00:19 #1142 [Verbose] >
00:00:19 #1143 [Verbose] > ╭─[ 141.76ms - stdout ]────────────────────────────────────────────────────────╮
00:00:19 #1144 [Verbose] > │ () │
00:00:19 #1145 [Verbose] > │ │
00:00:19 #1146 [Verbose] > │ │
00:00:19 #1147 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:19 #1148 [Verbose] >
00:00:19 #1149 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:19 #1150 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:19 #1151 [Verbose] > │ ## join' │
00:00:19 #1152 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:19 #1153 [Verbose] >
00:00:19 #1154 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:19 #1155 [Verbose] > inl join' (concat : string) (s : a _ string) : string =
00:00:19 #1156 [Verbose] > $"System.String.Join (!concat, !s)"
00:00:19 #1157 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-5963-6337-6e779683bce0/main.spi
00:00:19 #1158 [Verbose] >
00:00:19 #1159 [Verbose] > ╭─[ 122.15ms - stdout ]────────────────────────────────────────────────────────╮
00:00:19 #1160 [Verbose] > │ () │
00:00:19 #1161 [Verbose] > │ │
00:00:19 #1162 [Verbose] > │ │
00:00:19 #1163 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:19 #1164 [Verbose] >
00:00:19 #1165 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:19 #1166 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:19 #1167 [Verbose] > │ ## pad_right │
00:00:19 #1168 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:19 #1169 [Verbose] >
00:00:19 #1170 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:19 #1171 [Verbose] > inl pad_right (pad : i32) (s : string) : string =
00:00:19 #1172 [Verbose] > $"!s.PadRight !pad"
00:00:20 #1173 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-5975-7565-7e8aa49d7439/main.spi
00:00:20 #1174 [Verbose] >
00:00:20 #1175 [Verbose] > ╭─[ 120.14ms - stdout ]────────────────────────────────────────────────────────╮
00:00:20 #1176 [Verbose] > │ () │
00:00:20 #1177 [Verbose] > │ │
00:00:20 #1178 [Verbose] > │ │
00:00:20 #1179 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:20 #1180 [Verbose] >
00:00:20 #1181 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:20 #1182 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:20 #1183 [Verbose] > │ ## replace │
00:00:20 #1184 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:20 #1185 [Verbose] >
00:00:20 #1186 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:20 #1187 [Verbose] > inl replace (old_value : string) (new_value : string) (input : string) : string
00:00:20 #1188 [Verbose] > =
00:00:20 #1189 [Verbose] > $"!input.Replace (!old_value, !new_value)"
00:00:20 #1190 [Verbose] > Building /tmp/!dotnet-repl/20240320-1227-5987-8772-8103a6987e68/main.spi
00:00:20 #1191 [Verbose] >
00:00:20 #1192 [Verbose] > ╭─[ 139.91ms - stdout ]────────────────────────────────────────────────────────╮
00:00:20 #1193 [Verbose] > │ () │
00:00:20 #1194 [Verbose] > │ │
00:00:20 #1195 [Verbose] > │ │
00:00:20 #1196 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:20 #1197 [Verbose] >
00:00:20 #1198 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:20 #1199 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:20 #1200 [Verbose] > │ ## ellipsis │
00:00:20 #1201 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:20 #1202 [Verbose] >
00:00:20 #1203 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:20 #1204 [Verbose] > inl ellipsis forall t {int; number}. (max : t) (s : string) =
00:00:20 #1205 [Verbose] > if sm.length s <= max
00:00:20 #1206 [Verbose] > then s
00:00:20 #1207 [Verbose] > else s |> substring 0 max |> fun x => $'!x + "..."'
00:00:20 #1208 [Verbose] > Building /tmp/!dotnet-repl/20240320-1228-0001-0182-0956a89926ec/main.spi
00:00:20 #1209 [Verbose] >
00:00:20 #1210 [Verbose] > ╭─[ 117.94ms - stdout ]────────────────────────────────────────────────────────╮
00:00:20 #1211 [Verbose] > │ () │
00:00:20 #1212 [Verbose] > │ │
00:00:20 #1213 [Verbose] > │ │
00:00:20 #1214 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:20 #1215 [Verbose] >
00:00:20 #1216 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:20 #1217 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:20 #1218 [Verbose] > │ ## to_string std_string │
00:00:20 #1219 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:20 #1220 [Verbose] >
00:00:20 #1221 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:20 #1222 [Verbose] > open rust
00:00:20 #1223 [Verbose] > instance to_string std_string = from_std_string
00:00:20 #1224 [Verbose] > Building /tmp/!dotnet-repl/20240320-1228-0013-1368-197e3b7a9f3b/main.spi
00:00:20 #1225 [Verbose] >
00:00:20 #1226 [Verbose] > ╭─[ 123.35ms - stdout ]────────────────────────────────────────────────────────╮
00:00:20 #1227 [Verbose] > │ () │
00:00:20 #1228 [Verbose] > │ │
00:00:20 #1229 [Verbose] > │ │
00:00:20 #1230 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:21 #1231 [Verbose] > [NbConvertApp] Converting notebook sm'.dib.ipynb to html
00:00:21 #1232 [Verbose] > /opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:00:21 #1233 [Verbose] > validate(nb)
00:00:21 #1234 [Verbose] > /opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:00:21 #1235 [Verbose] > return _pygments_highlight(
00:00:22 #1236 [Verbose] > [NbConvertApp] Writing 380843 bytes to sm'.dib.html
00:00:22 #1237 [Debug] executeAsync / exitCode: 0 / output.Length: 93811
00:00:22 #1238 [Debug] main / executeCommand / exitCode: 0
00:00:00 #1 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #2 [Debug] executeAsync / options: { Command =
"dotnet "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 --default-int i32 --default-float f64"
WorkingDirectory = None
CancellationToken = Some System.Threading.CancellationToken
OnLine = Some <fun:main@464-1020> }
00:00:00 #3 [Verbose] > pwd: /home/runner/work/polyglot/polyglot/lib/spiral
00:00:00 #4 [Verbose] > dll_path: /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release
00:00:00 #5 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #6 [Verbose] waitForPortAccess / port: 13805 / retry: 0
00:00:00 #7 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #8 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #9 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #10 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #11 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #12 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #13 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #14 [Verbose] > Starting the Spiral Server. It is bound to: http://localhost:13805
00:00:00 #15 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #16 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #17 [Debug] sendJson / port: 13805 / json: {"Ping":true} / result.Length:
00:00:00 #18 [Verbose] awaitCompiler / Ping / result: Some(null) / port: 13805 / retry: 0
00:00:00 #19 [Verbose] > Server bound to: http://localhost:13805
00:00:00 #20 [Debug] executeAsync / options: { Command = "pwsh -c "../../scripts/invoke-dib.ps1 \"listm'.dib\"""
WorkingDirectory = None
CancellationToken = Some System.Threading.CancellationToken
OnLine = None }
00:00:02 #21 [Verbose] >
00:00:02 #22 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:02 #23 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:02 #24 [Verbose] > │ # listm │
00:00:02 #25 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:02 #26 [Verbose] >
00:00:02 #27 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:02 #28 [Verbose] > // // test
00:00:02 #29 [Verbose] >
00:00:02 #30 [Verbose] > open testing
00:00:02 #31 [Verbose] >
00:00:02 #32 [Verbose] > prototype append t : t -> t -> t
00:00:04 #33 [Verbose] > Building /tmp/!dotnet-repl/20240320-1228-0621-2183-2a2e7ceaa7b4/main.spi
00:00:06 #34 [Verbose] >
00:00:06 #35 [Verbose] > ╭─[ 3.69s - stdout ]───────────────────────────────────────────────────────────╮
00:00:06 #36 [Verbose] > │ () │
00:00:06 #37 [Verbose] > │ │
00:00:06 #38 [Verbose] > │ │
00:00:06 #39 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #40 [Verbose] >
00:00:06 #41 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:06 #42 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:06 #43 [Verbose] > │ ## append │
00:00:06 #44 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #45 [Verbose] >
00:00:06 #46 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 #47 [Verbose] > instance append list t =
00:00:06 #48 [Verbose] > listm.append
00:00:06 #49 [Verbose] > Building /tmp/!dotnet-repl/20240320-1228-0855-5539-5d6bcce0a0e6/main.spi
00:00:06 #50 [Verbose] >
00:00:06 #51 [Verbose] > ╭─[ 161.90ms - stdout ]────────────────────────────────────────────────────────╮
00:00:06 #52 [Verbose] > │ () │
00:00:06 #53 [Verbose] > │ │
00:00:06 #54 [Verbose] > │ │
00:00:06 #55 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #56 [Verbose] >
00:00:06 #57 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:06 #58 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:06 #59 [Verbose] > │ ## /@ │
00:00:06 #60 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #61 [Verbose] >
00:00:06 #62 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 #63 [Verbose] > inl (/@) a b =
00:00:06 #64 [Verbose] > b |> append a
00:00:06 #65 [Verbose] > Building /tmp/!dotnet-repl/20240320-1228-0871-7186-75ddcda1e5f4/main.spi
00:00:06 #66 [Verbose] >
00:00:06 #67 [Verbose] > ╭─[ 168.20ms - stdout ]────────────────────────────────────────────────────────╮
00:00:06 #68 [Verbose] > │ () │
00:00:06 #69 [Verbose] > │ │
00:00:06 #70 [Verbose] > │ │
00:00:06 #71 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #72 [Verbose] >
00:00:06 #73 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 #74 [Verbose] > // // test
00:00:06 #75 [Verbose] >
00:00:06 #76 [Verbose] > [[ "a"; "b" ]] /@ [[ "c"; "d" ]]
00:00:06 #77 [Verbose] > |> _assert_eq [[ "a"; "b"; "c"; "d" ]]
00:00:06 #78 [Verbose] > Building /tmp/!dotnet-repl/20240320-1228-0888-8853-80af35a6a2a4/main.spi
00:00:07 #79 [Verbose] >
00:00:07 #80 [Verbose] > ╭─[ 870.07ms - stdout ]────────────────────────────────────────────────────────╮
00:00:07 #81 [Verbose] > │ type UH0 = │
00:00:07 #82 [Verbose] > │ | UH0_0 of string * UH0 │
00:00:07 #83 [Verbose] > │ | UH0_1 │
00:00:07 #84 [Verbose] > │ let rec method0 () : unit = │
00:00:07 #85 [Verbose] > │ let v43 : string = "a" │
00:00:07 #86 [Verbose] > │ let v44 : string = "b" │
00:00:07 #87 [Verbose] > │ let v45 : string = "c" │
00:00:07 #88 [Verbose] > │ let v46 : string = "d" │
00:00:07 #89 [Verbose] > │ let v47 : UH0 = UH0_1 │
00:00:07 #90 [Verbose] > │ let v48 : UH0 = UH0_0(v46, v47) │
00:00:07 #91 [Verbose] > │ let v49 : UH0 = UH0_0(v45, v48) │
00:00:07 #92 [Verbose] > │ let v50 : UH0 = UH0_0(v44, v49) │
00:00:07 #93 [Verbose] > │ let v51 : UH0 = UH0_0(v43, v50) │
00:00:07 #94 [Verbose] > │ let v52 : UH0 = UH0_1 │
00:00:07 #95 [Verbose] > │ let v53 : UH0 = UH0_0(v46, v52) │
00:00:07 #96 [Verbose] > │ let v54 : UH0 = UH0_0(v45, v53) │
00:00:07 #97 [Verbose] > │ let v55 : UH0 = UH0_0(v44, v54) │
00:00:07 #98 [Verbose] > │ let v56 : UH0 = UH0_0(v43, v55) │
00:00:07 #99 [Verbose] > │ let v57 : string = $"__expect / actual: %A{v51} / expected: %A{v56}" │
00:00:07 #100 [Verbose] > │ () │
00:00:07 #101 [Verbose] > │ method0() │
00:00:07 #102 [Verbose] > │ │
00:00:07 #103 [Verbose] > │ │
00:00:07 #104 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #105 [Verbose] >
00:00:07 #106 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:07 #107 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:07 #108 [Verbose] > │ ## init_series │
00:00:07 #109 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #110 [Verbose] >
00:00:07 #111 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:07 #112 [Verbose] > inl init_series start end inc =
00:00:07 #113 [Verbose] > inl total : f64 = conv ((end - start) / inc) + 1
00:00:07 #114 [Verbose] > listm.init total (conv >> (*) inc >> (+) start)
00:00:07 #115 [Verbose] > Building /tmp/!dotnet-repl/20240320-1228-0975-7570-7b369251fabb/main.spi
00:00:07 #116 [Verbose] >
00:00:07 #117 [Verbose] > ╭─[ 132.78ms - stdout ]────────────────────────────────────────────────────────╮
00:00:07 #118 [Verbose] > │ () │
00:00:07 #119 [Verbose] > │ │
00:00:07 #120 [Verbose] > │ │
00:00:07 #121 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #122 [Verbose] >
00:00:07 #123 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:07 #124 [Verbose] > // // test
00:00:07 #125 [Verbose] >
00:00:07 #126 [Verbose] > init_series 0 1 0.5
00:00:07 #127 [Verbose] > |> _assert_eq [[ 0f64; 0.5; 1 ]]
00:00:07 #128 [Verbose] > Building /tmp/!dotnet-repl/20240320-1228-0988-8896-8d72d4f6aaa3/main.spi
00:00:07 #129 [Verbose] >
00:00:07 #130 [Verbose] > ╭─[ 169.36ms - stdout ]────────────────────────────────────────────────────────╮
00:00:07 #131 [Verbose] > │ type UH0 = │
00:00:07 #132 [Verbose] > │ | UH0_0 of float * UH0 │
00:00:07 #133 [Verbose] > │ | UH0_1 │
00:00:07 #134 [Verbose] > │ let rec method0 () : unit = │
00:00:07 #135 [Verbose] > │ let v18 : UH0 = UH0_1 │
00:00:07 #136 [Verbose] > │ let v19 : UH0 = UH0_0(1.0, v18) │
00:00:07 #137 [Verbose] > │ let v20 : UH0 = UH0_0(0.5, v19) │
00:00:07 #138 [Verbose] > │ let v21 : UH0 = UH0_0(0.0, v20) │
00:00:07 #139 [Verbose] > │ let v22 : UH0 = UH0_1 │
00:00:07 #140 [Verbose] > │ let v23 : UH0 = UH0_0(1.0, v22) │
00:00:07 #141 [Verbose] > │ let v24 : UH0 = UH0_0(0.5, v23) │
00:00:07 #142 [Verbose] > │ let v25 : UH0 = UH0_0(0.0, v24) │
00:00:07 #143 [Verbose] > │ let v26 : string = $"__expect / actual: %A{v21} / expected: %A{v25}" │
00:00:07 #144 [Verbose] > │ () │
00:00:07 #145 [Verbose] > │ method0() │
00:00:07 #146 [Verbose] > │ │
00:00:07 #147 [Verbose] > │ │
00:00:07 #148 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #149 [Verbose] >
00:00:07 #150 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:07 #151 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:07 #152 [Verbose] > │ ## try_item │
00:00:07 #153 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #154 [Verbose] >
00:00:07 #155 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:07 #156 [Verbose] > inl rec try_item i = function
00:00:07 #157 [Verbose] > | Cons (x, _) when i = 0 => Some x
00:00:07 #158 [Verbose] > | Cons (_, xs) => try_item (i - 1) xs
00:00:07 #159 [Verbose] > | Nil => None
00:00:07 #160 [Verbose] > Building /tmp/!dotnet-repl/20240320-1228-1006-0612-00d8a52011c4/main.spi
00:00:07 #161 [Verbose] >
00:00:07 #162 [Verbose] > ╭─[ 132.89ms - stdout ]────────────────────────────────────────────────────────╮
00:00:07 #163 [Verbose] > │ () │
00:00:07 #164 [Verbose] > │ │
00:00:07 #165 [Verbose] > │ │
00:00:07 #166 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #167 [Verbose] >
00:00:07 #168 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:07 #169 [Verbose] > // // test
00:00:07 #170 [Verbose] >
00:00:07 #171 [Verbose] > listm.init 10i32 id
00:00:07 #172 [Verbose] > |> try_item 9i32
00:00:07 #173 [Verbose] > |> _assert_eq (Some 9)
00:00:07 #174 [Verbose] > Building /tmp/!dotnet-repl/20240320-1228-1019-1945-1bda41ff7a02/main.spi
00:00:07 #175 [Verbose] >
00:00:07 #176 [Verbose] > ╭─[ 224.55ms - stdout ]────────────────────────────────────────────────────────╮
00:00:07 #177 [Verbose] > │ type [<Struct>] US0 = │
00:00:07 #178 [Verbose] > │ | US0_0 │
00:00:07 #179 [Verbose] > │ | US0_1 of f1_0 : int32 │
00:00:07 #180 [Verbose] > │ let rec method0 () : unit = │
00:00:07 #181 [Verbose] > │ let v3 : US0 = US0_1(9) │
00:00:07 #182 [Verbose] > │ let v4 : US0 = US0_1(9) │
00:00:07 #183 [Verbose] > │ let v5 : string = $"__expect / actual: %A{v3} / expected: %A{v4}" │
00:00:07 #184 [Verbose] > │ () │
00:00:07 #185 [Verbose] > │ method0() │
00:00:07 #186 [Verbose] > │ │
00:00:07 #187 [Verbose] > │ │
00:00:07 #188 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #189 [Verbose] >
00:00:07 #190 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:07 #191 [Verbose] > // // test
00:00:07 #192 [Verbose] >
00:00:07 #193 [Verbose] > listm.init 10i32 id
00:00:07 #194 [Verbose] > |> try_item 10i32
00:00:07 #195 [Verbose] > |> _assert_eq None
00:00:08 #196 [Verbose] > Building /tmp/!dotnet-repl/20240320-1228-1041-4198-4e28e71fc179/main.spi
00:00:08 #197 [Verbose] >
00:00:08 #198 [Verbose] > ╭─[ 183.09ms - stdout ]────────────────────────────────────────────────────────╮
00:00:08 #199 [Verbose] > │ type [<Struct>] US0 = │
00:00:08 #200 [Verbose] > │ | US0_0 │
00:00:08 #201 [Verbose] > │ | US0_1 of f1_0 : int32 │
00:00:08 #202 [Verbose] > │ let rec method0 () : unit = │
00:00:08 #203 [Verbose] > │ let v3 : US0 = US0_0 │
00:00:08 #204 [Verbose] > │ let v4 : US0 = US0_0 │
00:00:08 #205 [Verbose] > │ let v5 : string = $"__expect / actual: %A{v3} / expected: %A{v4}" │
00:00:08 #206 [Verbose] > │ () │
00:00:08 #207 [Verbose] > │ method0() │
00:00:08 #208 [Verbose] > │ │
00:00:08 #209 [Verbose] > │ │
00:00:08 #210 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #211 [Verbose] >
00:00:08 #212 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:08 #213 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:08 #214 [Verbose] > │ ## list_item │
00:00:08 #215 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #216 [Verbose] >
00:00:08 #217 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:08 #218 [Verbose] > inl item i =
00:00:08 #219 [Verbose] > try_item i >> optionm.value
00:00:08 #220 [Verbose] > Building /tmp/!dotnet-repl/20240320-1228-1060-6045-6e1e9106adb1/main.spi
00:00:08 #221 [Verbose] >
00:00:08 #222 [Verbose] > ╭─[ 137.00ms - stdout ]────────────────────────────────────────────────────────╮
00:00:08 #223 [Verbose] > │ () │
00:00:08 #224 [Verbose] > │ │
00:00:08 #225 [Verbose] > │ │
00:00:08 #226 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #227 [Verbose] >
00:00:08 #228 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:08 #229 [Verbose] > // // test
00:00:08 #230 [Verbose] >
00:00:08 #231 [Verbose] > listm.init 10i32 id
00:00:08 #232 [Verbose] > |> item 9i32
00:00:08 #233 [Verbose] > |> _assert_eq 9
00:00:08 #234 [Verbose] > Building /tmp/!dotnet-repl/20240320-1228-1074-7417-734a8b685b20/main.spi
00:00:08 #235 [Verbose] >
00:00:08 #236 [Verbose] > ╭─[ 135.76ms - stdout ]────────────────────────────────────────────────────────╮
00:00:08 #237 [Verbose] > │ let rec method0 () : unit = │
00:00:08 #238 [Verbose] > │ let v0 : string = $"__expect / actual: %A{9} / expected: %A{9}" │
00:00:08 #239 [Verbose] > │ () │
00:00:08 #240 [Verbose] > │ method0() │
00:00:08 #241 [Verbose] > │ │
00:00:08 #242 [Verbose] > │ │
00:00:08 #243 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #244 [Verbose] >
00:00:08 #245 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:08 #246 [Verbose] > // // test
00:00:08 #247 [Verbose] >
00:00:08 #248 [Verbose] > fun () =>
00:00:08 #249 [Verbose] > listm.init 10i32 id
00:00:08 #250 [Verbose] > |> item 10i32
00:00:08 #251 [Verbose] > |> ignore
00:00:08 #252 [Verbose] > |> _throws
00:00:08 #253 [Verbose] > |> _assert_eq (Some "Option does not have a value.")
00:00:08 #254 [Verbose] > Building /tmp/!dotnet-repl/20240320-1228-1087-8794-8290eac1121c/main.spi
00:00:08 #255 [Verbose] >
00:00:08 #256 [Verbose] > ╭─[ 276.85ms - stdout ]────────────────────────────────────────────────────────╮
00:00:08 #257 [Verbose] > │ type [<Struct>] US0 = │
00:00:08 #258 [Verbose] > │ | US0_0 │
00:00:08 #259 [Verbose] > │ | US0_1 of f1_0 : string │
00:00:08 #260 [Verbose] > │ let rec closure0 () () : unit = │
00:00:08 #261 [Verbose] > │ let v0 : int32 = failwith<int32> "Option does not have a value." │
00:00:08 #262 [Verbose] > │ () │
00:00:08 #263 [Verbose] > │ and closure1 () (v0 : string) : US0 = │
00:00:08 #264 [Verbose] > │ US0_1(v0) │
00:00:08 #265 [Verbose] > │ and method1 (v0 : bool) : bool = │
00:00:08 #266 [Verbose] > │ v0 │
00:00:08 #267 [Verbose] > │ and method0 () : unit = │
00:00:08 #268 [Verbose] > │ let v0 : (unit -> unit) = closure0() │
00:00:08 #269 [Verbose] > │ let v1 : US0 = US0_0 │
00:00:08 #270 [Verbose] > │ let v2 : (string -> US0) = closure1() │
00:00:08 #271 [Verbose] > │ let v3 : US0 = try v0 (); v1 with ex -> v2 ex.Message │
00:00:08 #272 [Verbose] > │ let v8 : bool = │
00:00:08 #273 [Verbose] > │ match v3 with │
00:00:08 #274 [Verbose] > │ | US0_1(v6) -> (* Some *) │
00:00:08 #275 [Verbose] > │ let v7 : bool = v6 = "Option does not have a value." │
00:00:08 #276 [Verbose] > │ v7 │
00:00:08 #277 [Verbose] > │ | _ -> │
00:00:08 #278 [Verbose] > │ false │
00:00:08 #279 [Verbose] > │ let v10 : bool = │
00:00:08 #280 [Verbose] > │ if v8 then │
00:00:08 #281 [Verbose] > │ true │
00:00:08 #282 [Verbose] > │ else │
00:00:08 #283 [Verbose] > │ method1(v8) │
00:00:08 #284 [Verbose] > │ let v11 : string = "Option does not have a value." │
00:00:08 #285 [Verbose] > │ let v12 : US0 = US0_1(v11) │
00:00:08 #286 [Verbose] > │ let v13 : string = $"__expect / actual: %A{v3} / expected: %A{v12}" │
00:00:08 #287 [Verbose] > │ let v14 : bool = v10 = false │
00:00:08 #288 [Verbose] > │ if v14 then │
00:00:08 #289 [Verbose] > │ failwith<unit> v13 │
00:00:08 #290 [Verbose] > │ method0() │
00:00:08 #291 [Verbose] > │ │
00:00:08 #292 [Verbose] > │ │
00:00:08 #293 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #294 [Verbose] >
00:00:08 #295 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:08 #296 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:08 #297 [Verbose] > │ ## try_item_ │
00:00:08 #298 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #299 [Verbose] >
00:00:08 #300 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:08 #301 [Verbose] > let rec try_item_ i = function
00:00:08 #302 [Verbose] > | Cons (x, _) when i = 0 => Some x
00:00:08 #303 [Verbose] > | Cons (_, xs) => try_item_ (i - 1) xs
00:00:08 #304 [Verbose] > | Nil => None
00:00:08 #305 [Verbose] > Building /tmp/!dotnet-repl/20240320-1228-1115-1583-10c584a10688/main.spi
00:00:08 #306 [Verbose] >
00:00:08 #307 [Verbose] > ╭─[ 135.08ms - stdout ]────────────────────────────────────────────────────────╮
00:00:08 #308 [Verbose] > │ () │
00:00:08 #309 [Verbose] > │ │
00:00:08 #310 [Verbose] > │ │
00:00:08 #311 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #312 [Verbose] >
00:00:08 #313 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:08 #314 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:08 #315 [Verbose] > │ ## item_ │
00:00:08 #316 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #317 [Verbose] >
00:00:08 #318 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:08 #319 [Verbose] > inl item_ i =
00:00:08 #320 [Verbose] > try_item_ i >> optionm.value
00:00:08 #321 [Verbose] > Building /tmp/!dotnet-repl/20240320-1228-1129-2946-296b2e94930e/main.spi
00:00:08 #322 [Verbose] >
00:00:08 #323 [Verbose] > ╭─[ 123.10ms - stdout ]────────────────────────────────────────────────────────╮
00:00:08 #324 [Verbose] > │ () │
00:00:08 #325 [Verbose] > │ │
00:00:08 #326 [Verbose] > │ │
00:00:08 #327 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #328 [Verbose] >
00:00:08 #329 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:08 #330 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:08 #331 [Verbose] > │ ## sum │
00:00:08 #332 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #333 [Verbose] >
00:00:08 #334 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:08 #335 [Verbose] > inl sum list =
00:00:08 #336 [Verbose] > list |> listm.fold (+) 0
00:00:08 #337 [Verbose] > Building /tmp/!dotnet-repl/20240320-1228-1141-4187-4acc2f7d7ebd/main.spi
00:00:09 #338 [Verbose] >
00:00:09 #339 [Verbose] > ╭─[ 126.61ms - stdout ]────────────────────────────────────────────────────────╮
00:00:09 #340 [Verbose] > │ () │
00:00:09 #341 [Verbose] > │ │
00:00:09 #342 [Verbose] > │ │
00:00:09 #343 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #344 [Verbose] >
00:00:09 #345 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:09 #346 [Verbose] > // // test
00:00:09 #347 [Verbose] >
00:00:09 #348 [Verbose] > listm.init 10i32 id
00:00:09 #349 [Verbose] > |> sum
00:00:09 #350 [Verbose] > |> _assert_eq 45
00:00:09 #351 [Verbose] > Building /tmp/!dotnet-repl/20240320-1228-1154-5457-5767b1c4066a/main.spi
00:00:09 #352 [Verbose] >
00:00:09 #353 [Verbose] > ╭─[ 157.95ms - stdout ]────────────────────────────────────────────────────────╮
00:00:09 #354 [Verbose] > │ let rec method0 () : unit = │
00:00:09 #355 [Verbose] > │ let v0 : string = $"__expect / actual: %A{45} / expected: %A{45}" │
00:00:09 #356 [Verbose] > │ () │
00:00:09 #357 [Verbose] > │ method0() │
00:00:09 #358 [Verbose] > │ │
00:00:09 #359 [Verbose] > │ │
00:00:09 #360 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #361 [Verbose] >
00:00:09 #362 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:09 #363 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:09 #364 [Verbose] > │ ## unzip │
00:00:09 #365 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #366 [Verbose] >
00:00:09 #367 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:09 #368 [Verbose] > inl unzip list =
00:00:09 #369 [Verbose] > (([[]], [[]]), list)
00:00:09 #370 [Verbose] > ||> listm.fold fun (acc_x, acc_y) (x, y) =>
00:00:09 #371 [Verbose] > x :: acc_x, y :: acc_y
00:00:09 #372 [Verbose] > |> fun x, y =>
00:00:09 #373 [Verbose] > x |> listm.rev, y |> listm.rev
00:00:09 #374 [Verbose] > Building /tmp/!dotnet-repl/20240320-1228-1170-7045-76640c9bf336/main.spi
00:00:09 #375 [Verbose] >
00:00:09 #376 [Verbose] > ╭─[ 129.04ms - stdout ]────────────────────────────────────────────────────────╮
00:00:09 #377 [Verbose] > │ () │
00:00:09 #378 [Verbose] > │ │
00:00:09 #379 [Verbose] > │ │
00:00:09 #380 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #381 [Verbose] >
00:00:09 #382 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:09 #383 [Verbose] > // // test
00:00:09 #384 [Verbose] >
00:00:09 #385 [Verbose] > listm.init 10i32 id
00:00:09 #386 [Verbose] > |> listm.map (fun x => x, x)
00:00:09 #387 [Verbose] > |> unzip
00:00:09 #388 [Verbose] > |> fun x, y =>
00:00:09 #389 [Verbose] > x |> sum
00:00:09 #390 [Verbose] > |> _assert_eq 45
00:00:09 #391 [Verbose] >
00:00:09 #392 [Verbose] > y |> sum
00:00:09 #393 [Verbose] > |> _assert_eq 45
00:00:09 #394 [Verbose] > Building /tmp/!dotnet-repl/20240320-1228-1183-8362-81285f3400a1/main.spi
00:00:09 #395 [Verbose] >
00:00:09 #396 [Verbose] > ╭─[ 140.57ms - stdout ]────────────────────────────────────────────────────────╮
00:00:09 #397 [Verbose] > │ let rec method0 () : unit = │
00:00:09 #398 [Verbose] > │ let v0 : string = $"__expect / actual: %A{45} / expected: %A{45}" │
00:00:09 #399 [Verbose] > │ let v1 : string = $"__expect / actual: %A{45} / expected: %A{45}" │
00:00:09 #400 [Verbose] > │ () │
00:00:09 #401 [Verbose] > │ method0() │
00:00:09 #402 [Verbose] > │ │
00:00:09 #403 [Verbose] > │ │
00:00:09 #404 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #405 [Verbose] >
00:00:09 #406 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:09 #407 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:09 #408 [Verbose] > │ ## try_index_of │
00:00:09 #409 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #410 [Verbose] >
00:00:09 #411 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:09 #412 [Verbose] > inl try_index_of item list =
00:00:09 #413 [Verbose] > inl rec loop i = function
00:00:09 #414 [Verbose] > | [[]] => None
00:00:09 #415 [Verbose] > | x :: xs =>
00:00:09 #416 [Verbose] > if x = item
00:00:09 #417 [Verbose] > then Some i
00:00:09 #418 [Verbose] > else loop (i + 1) xs
00:00:09 #419 [Verbose] > loop 0 list
00:00:09 #420 [Verbose] >
00:00:09 #421 [Verbose] > inl index_of item =
00:00:09 #422 [Verbose] > try_index_of item >> optionm.value
00:00:09 #423 [Verbose] >
00:00:09 #424 [Verbose] > inl try_index_of_ item list =
00:00:09 #425 [Verbose] > let rec loop i = function
00:00:09 #426 [Verbose] > | [[]] => None
00:00:09 #427 [Verbose] > | x :: xs =>
00:00:09 #428 [Verbose] > if x = item
00:00:09 #429 [Verbose] > then Some i
00:00:09 #430 [Verbose] > else loop (i + 1) xs
00:00:09 #431 [Verbose] > loop 0 list
00:00:09 #432 [Verbose] >
00:00:09 #433 [Verbose] > inl index_of_ item =
00:00:09 #434 [Verbose] > try_index_of_ item >> optionm.value
00:00:09 #435 [Verbose] >
00:00:09 #436 [Verbose] > inl try_index_of__ item list =
00:00:09 #437 [Verbose] > inl i = mut 0
00:00:09 #438 [Verbose] > inl list = mut list
00:00:09 #439 [Verbose] > inl result = mut None
00:00:09 #440 [Verbose] > let rec loop () =
00:00:09 #441 [Verbose] > match *list with
00:00:09 #442 [Verbose] > | [[]] => result <- None
00:00:09 #443 [Verbose] > | x :: xs =>
00:00:09 #444 [Verbose] > if x = item
00:00:09 #445 [Verbose] > then result <- Some *i
00:00:09 #446 [Verbose] > else
00:00:09 #447 [Verbose] > i <- *i + 1
00:00:09 #448 [Verbose] > list <- xs
00:00:09 #449 [Verbose] > loop ()
00:00:09 #450 [Verbose] > loop ()
00:00:09 #451 [Verbose] > *result
00:00:09 #452 [Verbose] >
00:00:09 #453 [Verbose] > inl index_of__ item =
00:00:09 #454 [Verbose] > try_index_of__ item >> optionm.value
00:00:09 #455 [Verbose] > Building /tmp/!dotnet-repl/20240320-1228-1197-9771-9cc58bd97392/main.spi
00:00:09 #456 [Verbose] >
00:00:09 #457 [Verbose] > ╭─[ 132.47ms - stdout ]────────────────────────────────────────────────────────╮
00:00:09 #458 [Verbose] > │ () │
00:00:09 #459 [Verbose] > │ │
00:00:09 #460 [Verbose] > │ │
00:00:09 #461 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #462 [Verbose] >
00:00:09 #463 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:09 #464 [Verbose] > // // test
00:00:09 #465 [Verbose] >
00:00:09 #466 [Verbose] > listm.init 10i32 id
00:00:09 #467 [Verbose] > |> index_of 5i32
00:00:09 #468 [Verbose] > |> _assert_eq 5i32
00:00:09 #469 [Verbose] > Building /tmp/!dotnet-repl/20240320-1228-1210-1091-127bd1232d56/main.spi
00:00:09 #470 [Verbose] >
00:00:09 #471 [Verbose] > ╭─[ 230.74ms - stdout ]────────────────────────────────────────────────────────╮
00:00:09 #472 [Verbose] > │ let rec method0 () : unit = │
00:00:09 #473 [Verbose] > │ let v0 : string = $"__expect / actual: %A{5} / expected: %A{5}" │
00:00:09 #474 [Verbose] > │ () │
00:00:09 #475 [Verbose] > │ method0() │
00:00:09 #476 [Verbose] > │ │
00:00:09 #477 [Verbose] > │ │
00:00:09 #478 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #479 [Verbose] >
00:00:09 #480 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:09 #481 [Verbose] > // // test
00:00:09 #482 [Verbose] >
00:00:09 #483 [Verbose] > listm.init 10i32 id
00:00:09 #484 [Verbose] > |> try_index_of 10i32
00:00:09 #485 [Verbose] > |> _assert_eq (None : option i32)
00:00:09 #486 [Verbose] > Building /tmp/!dotnet-repl/20240320-1228-1234-3416-3671aa2be4e3/main.spi
00:00:10 #487 [Verbose] >
00:00:10 #488 [Verbose] > ╭─[ 176.87ms - stdout ]────────────────────────────────────────────────────────╮
00:00:10 #489 [Verbose] > │ type [<Struct>] US0 = │
00:00:10 #490 [Verbose] > │ | US0_0 │
00:00:10 #491 [Verbose] > │ | US0_1 of f1_0 : int32 │
00:00:10 #492 [Verbose] > │ let rec method0 () : unit = │
00:00:10 #493 [Verbose] > │ let v3 : US0 = US0_0 │
00:00:10 #494 [Verbose] > │ let v4 : US0 = US0_0 │
00:00:10 #495 [Verbose] > │ let v5 : string = $"__expect / actual: %A{v3} / expected: %A{v4}" │
00:00:10 #496 [Verbose] > │ () │
00:00:10 #497 [Verbose] > │ method0() │
00:00:10 #498 [Verbose] > │ │
00:00:10 #499 [Verbose] > │ │
00:00:10 #500 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:10 #501 [Verbose] >
00:00:10 #502 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:10 #503 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:10 #504 [Verbose] > │ ## try_find │
00:00:10 #505 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:10 #506 [Verbose] >
00:00:10 #507 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:10 #508 [Verbose] > inl try_find fn list =
00:00:10 #509 [Verbose] > inl rec loop = function
00:00:10 #510 [Verbose] > | [[]] => None
00:00:10 #511 [Verbose] > | x :: xs =>
00:00:10 #512 [Verbose] > if fn x
00:00:10 #513 [Verbose] > then Some x
00:00:10 #514 [Verbose] > else loop xs
00:00:10 #515 [Verbose] > loop list
00:00:10 #516 [Verbose] >
00:00:10 #517 [Verbose] > inl try_find_ fn list =
00:00:10 #518 [Verbose] > let rec loop = function
00:00:10 #519 [Verbose] > | [[]] => None
00:00:10 #520 [Verbose] > | x :: xs =>
00:00:10 #521 [Verbose] > if fn x
00:00:10 #522 [Verbose] > then Some x
00:00:10 #523 [Verbose] > else loop xs
00:00:10 #524 [Verbose] > loop list
00:00:10 #525 [Verbose] > Building /tmp/!dotnet-repl/20240320-1228-1251-5189-582a3152e97a/main.spi
00:00:10 #526 [Verbose] >
00:00:10 #527 [Verbose] > ╭─[ 129.68ms - stdout ]────────────────────────────────────────────────────────╮
00:00:10 #528 [Verbose] > │ () │
00:00:10 #529 [Verbose] > │ │
00:00:10 #530 [Verbose] > │ │
00:00:10 #531 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:10 #532 [Verbose] >
00:00:10 #533 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:10 #534 [Verbose] > // // test
00:00:10 #535 [Verbose] >
00:00:10 #536 [Verbose] > listm.init 10i32 id
00:00:10 #537 [Verbose] > |> try_find ((=) 5i32)
00:00:10 #538 [Verbose] > |> _assert_eq (Some 5i32)
00:00:10 #539 [Verbose] > Building /tmp/!dotnet-repl/20240320-1228-1264-6486-6a37f668a252/main.spi
00:00:10 #540 [Verbose] >
00:00:10 #541 [Verbose] > ╭─[ 180.71ms - stdout ]────────────────────────────────────────────────────────╮
00:00:10 #542 [Verbose] > │ type [<Struct>] US0 = │
00:00:10 #543 [Verbose] > │ | US0_0 │
00:00:10 #544 [Verbose] > │ | US0_1 of f1_0 : int32 │
00:00:10 #545 [Verbose] > │ let rec method0 () : unit = │
00:00:10 #546 [Verbose] > │ let v3 : US0 = US0_1(5) │
00:00:10 #547 [Verbose] > │ let v4 : US0 = US0_1(5) │
00:00:10 #548 [Verbose] > │ let v5 : string = $"__expect / actual: %A{v3} / expected: %A{v4}" │
00:00:10 #549 [Verbose] > │ () │
00:00:10 #550 [Verbose] > │ method0() │
00:00:10 #551 [Verbose] > │ │
00:00:10 #552 [Verbose] > │ │
00:00:10 #553 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:10 #554 [Verbose] >
00:00:10 #555 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:10 #556 [Verbose] > inl find x =
00:00:10 #557 [Verbose] > try_find x >> optionm.value
00:00:10 #558 [Verbose] >
00:00:10 #559 [Verbose] > inl find_ x =
00:00:10 #560 [Verbose] > try_find_ x >> optionm.value
00:00:10 #561 [Verbose] > Building /tmp/!dotnet-repl/20240320-1228-1283-8304-8454f7621dee/main.spi
00:00:10 #562 [Verbose] >
00:00:10 #563 [Verbose] > ╭─[ 123.09ms - stdout ]────────────────────────────────────────────────────────╮
00:00:10 #564 [Verbose] > │ () │
00:00:10 #565 [Verbose] > │ │
00:00:10 #566 [Verbose] > │ │
00:00:10 #567 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:10 #568 [Verbose] >
00:00:10 #569 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:10 #570 [Verbose] > // // test
00:00:10 #571 [Verbose] >
00:00:10 #572 [Verbose] > listm.init 10i32 id
00:00:10 #573 [Verbose] > |> find ((=) 5i32)
00:00:10 #574 [Verbose] > |> _assert_eq 5i32
00:00:10 #575 [Verbose] > Building /tmp/!dotnet-repl/20240320-1228-1295-9545-95c3cf1e1ea3/main.spi
00:00:10 #576 [Verbose] >
00:00:10 #577 [Verbose] > ╭─[ 132.04ms - stdout ]────────────────────────────────────────────────────────╮
00:00:10 #578 [Verbose] > │ let rec method0 () : unit = │
00:00:10 #579 [Verbose] > │ let v0 : string = $"__expect / actual: %A{5} / expected: %A{5}" │
00:00:10 #580 [Verbose] > │ () │
00:00:10 #581 [Verbose] > │ method0() │
00:00:10 #582 [Verbose] > │ │
00:00:10 #583 [Verbose] > │ │
00:00:10 #584 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:10 #585 [Verbose] >
00:00:10 #586 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:10 #587 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:10 #588 [Verbose] > │ ## choose │
00:00:10 #589 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:10 #590 [Verbose] >
00:00:10 #591 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:10 #592 [Verbose] > inl choose f l =
00:00:10 #593 [Verbose] > (l, [[]])
00:00:10 #594 [Verbose] > ||> listm.foldBack fun x acc =>
00:00:10 #595 [Verbose] > match f x with
00:00:10 #596 [Verbose] > | Some y => y :: acc
00:00:10 #597 [Verbose] > | None => acc
00:00:10 #598 [Verbose] > Building /tmp/!dotnet-repl/20240320-1228-1308-0879-062046b095c8/main.spi
00:00:10 #599 [Verbose] >
00:00:10 #600 [Verbose] > ╭─[ 130.01ms - stdout ]────────────────────────────────────────────────────────╮
00:00:10 #601 [Verbose] > │ () │
00:00:10 #602 [Verbose] > │ │
00:00:10 #603 [Verbose] > │ │
00:00:10 #604 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:10 #605 [Verbose] >
00:00:10 #606 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:10 #607 [Verbose] > // // test
00:00:10 #608 [Verbose] >
00:00:10 #609 [Verbose] > listm.init 10i32 id
00:00:10 #610 [Verbose] > |> choose (fun x => if x % 2 = 0 then Some x else None)
00:00:10 #611 [Verbose] > |> _assert_eq [[ 0; 2; 4; 6; 8 ]]
00:00:10 #612 [Verbose] > Building /tmp/!dotnet-repl/20240320-1228-1321-2171-2e06ce729a96/main.spi
00:00:10 #613 [Verbose] >
00:00:10 #614 [Verbose] > ╭─[ 158.87ms - stdout ]────────────────────────────────────────────────────────╮
00:00:10 #615 [Verbose] > │ type UH0 = │
00:00:10 #616 [Verbose] > │ | UH0_0 of int32 * UH0 │
00:00:10 #617 [Verbose] > │ | UH0_1 │
00:00:10 #618 [Verbose] > │ let rec method0 () : unit = │
00:00:10 #619 [Verbose] > │ let v33 : UH0 = UH0_1 │
00:00:10 #620 [Verbose] > │ let v34 : UH0 = UH0_0(8, v33) │
00:00:10 #621 [Verbose] > │ let v35 : UH0 = UH0_0(6, v34) │
00:00:10 #622 [Verbose] > │ let v36 : UH0 = UH0_0(4, v35) │
00:00:10 #623 [Verbose] > │ let v37 : UH0 = UH0_0(2, v36) │
00:00:10 #624 [Verbose] > │ let v38 : UH0 = UH0_0(0, v37) │
00:00:10 #625 [Verbose] > │ let v39 : UH0 = UH0_1 │
00:00:10 #626 [Verbose] > │ let v40 : UH0 = UH0_0(8, v39) │
00:00:10 #627 [Verbose] > │ let v41 : UH0 = UH0_0(6, v40) │
00:00:10 #628 [Verbose] > │ let v42 : UH0 = UH0_0(4, v41) │
00:00:10 #629 [Verbose] > │ let v43 : UH0 = UH0_0(2, v42) │
00:00:10 #630 [Verbose] > │ let v44 : UH0 = UH0_0(0, v43) │
00:00:10 #631 [Verbose] > │ let v45 : string = $"__expect / actual: %A{v38} / expected: %A{v44}" │
00:00:10 #632 [Verbose] > │ () │
00:00:10 #633 [Verbose] > │ method0() │
00:00:10 #634 [Verbose] > │ │
00:00:10 #635 [Verbose] > │ │
00:00:10 #636 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:10 #637 [Verbose] >
00:00:10 #638 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:10 #639 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:10 #640 [Verbose] > │ ## zip_with │
00:00:10 #641 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:10 #642 [Verbose] >
00:00:10 #643 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:10 #644 [Verbose] > inl zip_with fn xs ys =
00:00:10 #645 [Verbose] > inl rec loop acc xs ys =
00:00:10 #646 [Verbose] > match xs, ys with
00:00:10 #647 [Verbose] > | Cons (x, xs), Cons (y, ys) =>
00:00:10 #648 [Verbose] > loop (fn x y :: acc) xs ys
00:00:10 #649 [Verbose] > | _ => listm.rev acc
00:00:10 #650 [Verbose] > loop [[]] xs ys
00:00:10 #651 [Verbose] >
00:00:10 #652 [Verbose] > inl zip_with_ fn xs ys =
00:00:10 #653 [Verbose] > let rec loop acc xs ys =
00:00:10 #654 [Verbose] > match xs, ys with
00:00:10 #655 [Verbose] > | Cons (x, xs), Cons (y, ys) =>
00:00:10 #656 [Verbose] > loop (fn x y :: acc) xs ys
00:00:10 #657 [Verbose] > | _ => listm.rev acc
00:00:10 #658 [Verbose] > loop [[]] xs ys
00:00:10 #659 [Verbose] > Building /tmp/!dotnet-repl/20240320-1228-1337-3782-33865f39aadd/main.spi
00:00:11 #660 [Verbose] >
00:00:11 #661 [Verbose] > ╭─[ 130.60ms - stdout ]────────────────────────────────────────────────────────╮
00:00:11 #662 [Verbose] > │ () │
00:00:11 #663 [Verbose] > │ │
00:00:11 #664 [Verbose] > │ │
00:00:11 #665 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:11 #666 [Verbose] >
00:00:11 #667 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:11 #668 [Verbose] > // // test
00:00:11 #669 [Verbose] >
00:00:11 #670 [Verbose] > ([[ 1i32; 2; 3 ]], [[ 4; 5; 6 ]])
00:00:11 #671 [Verbose] > ||> zip_with (+)
00:00:11 #672 [Verbose] > |> _assert_eq [[ 5; 7; 9 ]]
00:00:11 #673 [Verbose] > Building /tmp/!dotnet-repl/20240320-1228-1350-5092-5e37ee9bdd2a/main.spi
00:00:11 #674 [Verbose] >
00:00:11 #675 [Verbose] > ╭─[ 192.30ms - stdout ]────────────────────────────────────────────────────────╮
00:00:11 #676 [Verbose] > │ type UH0 = │
00:00:11 #677 [Verbose] > │ | UH0_0 of int32 * UH0 │
00:00:11 #678 [Verbose] > │ | UH0_1 │
00:00:11 #679 [Verbose] > │ let rec method0 () : unit = │
00:00:11 #680 [Verbose] > │ let v18 : UH0 = UH0_1 │
00:00:11 #681 [Verbose] > │ let v19 : UH0 = UH0_0(9, v18) │
00:00:11 #682 [Verbose] > │ let v20 : UH0 = UH0_0(7, v19) │
00:00:11 #683 [Verbose] > │ let v21 : UH0 = UH0_0(5, v20) │
00:00:11 #684 [Verbose] > │ let v22 : UH0 = UH0_1 │
00:00:11 #685 [Verbose] > │ let v23 : UH0 = UH0_0(9, v22) │
00:00:11 #686 [Verbose] > │ let v24 : UH0 = UH0_0(7, v23) │
00:00:11 #687 [Verbose] > │ let v25 : UH0 = UH0_0(5, v24) │
00:00:11 #688 [Verbose] > │ let v26 : string = $"__expect / actual: %A{v21} / expected: %A{v25}" │
00:00:11 #689 [Verbose] > │ () │
00:00:11 #690 [Verbose] > │ method0() │
00:00:11 #691 [Verbose] > │ │
00:00:11 #692 [Verbose] > │ │
00:00:11 #693 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:11 #694 [Verbose] >
00:00:11 #695 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:11 #696 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:11 #697 [Verbose] > │ ## zip │
00:00:11 #698 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:11 #699 [Verbose] >
00:00:11 #700 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:11 #701 [Verbose] > inl zip xs ys =
00:00:11 #702 [Verbose] > zip_with pair xs ys
00:00:11 #703 [Verbose] >
00:00:11 #704 [Verbose] > inl zip_ xs ys =
00:00:11 #705 [Verbose] > zip_with_ pair xs ys
00:00:11 #706 [Verbose] > Building /tmp/!dotnet-repl/20240320-1228-1370-7061-72fab3bc8788/main.spi
00:00:11 #707 [Verbose] >
00:00:11 #708 [Verbose] > ╭─[ 154.27ms - stdout ]────────────────────────────────────────────────────────╮
00:00:11 #709 [Verbose] > │ () │
00:00:11 #710 [Verbose] > │ │
00:00:11 #711 [Verbose] > │ │
00:00:11 #712 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:11 #713 [Verbose] >
00:00:11 #714 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:11 #715 [Verbose] > // // test
00:00:11 #716 [Verbose] >
00:00:11 #717 [Verbose] > ([[ 1i32; 2; 3 ]], [[ 4i32; 5; 6 ]])
00:00:11 #718 [Verbose] > ||> zip
00:00:11 #719 [Verbose] > |> _assert_eq [[ 1, 4; 2, 5; 3, 6 ]]
00:00:11 #720 [Verbose] > Building /tmp/!dotnet-repl/20240320-1228-1385-8584-8c7ce89e4c54/main.spi
00:00:11 #721 [Verbose] >
00:00:11 #722 [Verbose] > ╭─[ 204.59ms - stdout ]────────────────────────────────────────────────────────╮
00:00:11 #723 [Verbose] > │ type UH0 = │
00:00:11 #724 [Verbose] > │ | UH0_0 of int32 * int32 * UH0 │
00:00:11 #725 [Verbose] > │ | UH0_1 │
00:00:11 #726 [Verbose] > │ let rec method0 () : unit = │
00:00:11 #727 [Verbose] > │ let v18 : UH0 = UH0_1 │
00:00:11 #728 [Verbose] > │ let v19 : UH0 = UH0_0(3, 6, v18) │
00:00:11 #729 [Verbose] > │ let v20 : UH0 = UH0_0(2, 5, v19) │
00:00:11 #730 [Verbose] > │ let v21 : UH0 = UH0_0(1, 4, v20) │
00:00:11 #731 [Verbose] > │ let v22 : UH0 = UH0_1 │
00:00:11 #732 [Verbose] > │ let v23 : UH0 = UH0_0(3, 6, v22) │
00:00:11 #733 [Verbose] > │ let v24 : UH0 = UH0_0(2, 5, v23) │
00:00:11 #734 [Verbose] > │ let v25 : UH0 = UH0_0(1, 4, v24) │
00:00:11 #735 [Verbose] > │ let v26 : string = $"__expect / actual: %A{v21} / expected: %A{v25}" │
00:00:11 #736 [Verbose] > │ () │
00:00:11 #737 [Verbose] > │ method0() │
00:00:11 #738 [Verbose] > │ │
00:00:11 #739 [Verbose] > │ │
00:00:11 #740 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:11 #741 [Verbose] >
00:00:11 #742 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:11 #743 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:11 #744 [Verbose] > │ ## indexed │
00:00:11 #745 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:11 #746 [Verbose] >
00:00:11 #747 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:11 #748 [Verbose] > inl indexed list =
00:00:11 #749 [Verbose] > (([[]], 0), list)
00:00:11 #750 [Verbose] > ||> listm.fold fun (acc, i) x =>
00:00:11 #751 [Verbose] > (i, x) :: acc, i + 1
00:00:11 #752 [Verbose] > |> fst
00:00:11 #753 [Verbose] > |> listm.rev
00:00:11 #754 [Verbose] > Building /tmp/!dotnet-repl/20240320-1228-1406-0674-097dc1f2c4b3/main.spi
00:00:11 #755 [Verbose] >
00:00:11 #756 [Verbose] > ╭─[ 133.20ms - stdout ]────────────────────────────────────────────────────────╮
00:00:11 #757 [Verbose] > │ () │
00:00:11 #758 [Verbose] > │ │
00:00:11 #759 [Verbose] > │ │
00:00:11 #760 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:11 #761 [Verbose] >
00:00:11 #762 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:11 #763 [Verbose] > // // test
00:00:11 #764 [Verbose] >
00:00:11 #765 [Verbose] > listm.init 5i32 ((*) 2)
00:00:11 #766 [Verbose] > |> indexed
00:00:11 #767 [Verbose] > |> _assert_eq [[ 0i32, 0; 1, 2; 2, 4; 3, 6; 4, 8 ]]
00:00:11 #768 [Verbose] > Building /tmp/!dotnet-repl/20240320-1228-1420-2009-27f0270179b4/main.spi
00:00:11 #769 [Verbose] >
00:00:11 #770 [Verbose] > ╭─[ 160.52ms - stdout ]────────────────────────────────────────────────────────╮
00:00:11 #771 [Verbose] > │ type UH0 = │
00:00:11 #772 [Verbose] > │ | UH0_0 of int32 * int32 * UH0 │
00:00:11 #773 [Verbose] > │ | UH0_1 │
00:00:11 #774 [Verbose] > │ let rec method0 () : unit = │
00:00:11 #775 [Verbose] > │ let v33 : UH0 = UH0_1 │
00:00:11 #776 [Verbose] > │ let v34 : UH0 = UH0_0(4, 8, v33) │
00:00:11 #777 [Verbose] > │ let v35 : UH0 = UH0_0(3, 6, v34) │
00:00:11 #778 [Verbose] > │ let v36 : UH0 = UH0_0(2, 4, v35) │
00:00:11 #779 [Verbose] > │ let v37 : UH0 = UH0_0(1, 2, v36) │
00:00:11 #780 [Verbose] > │ let v38 : UH0 = UH0_0(0, 0, v37) │
00:00:11 #781 [Verbose] > │ let v39 : UH0 = UH0_1 │
00:00:11 #782 [Verbose] > │ let v40 : UH0 = UH0_0(4, 8, v39) │
00:00:11 #783 [Verbose] > │ let v41 : UH0 = UH0_0(3, 6, v40) │
00:00:11 #784 [Verbose] > │ let v42 : UH0 = UH0_0(2, 4, v41) │
00:00:11 #785 [Verbose] > │ let v43 : UH0 = UH0_0(1, 2, v42) │
00:00:11 #786 [Verbose] > │ let v44 : UH0 = UH0_0(0, 0, v43) │
00:00:11 #787 [Verbose] > │ let v45 : string = $"__expect / actual: %A{v38} / expected: %A{v44}" │
00:00:11 #788 [Verbose] > │ () │
00:00:11 #789 [Verbose] > │ method0() │
00:00:11 #790 [Verbose] > │ │
00:00:11 #791 [Verbose] > │ │
00:00:11 #792 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:11 #793 [Verbose] >
00:00:11 #794 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:11 #795 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:11 #796 [Verbose] > │ ## group_by │
00:00:11 #797 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:11 #798 [Verbose] >
00:00:11 #799 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:11 #800 [Verbose] > inl group_by fn list =
00:00:11 #801 [Verbose] > (list, [[]])
00:00:11 #802 [Verbose] > ||> listm.foldBack fun x acc =>
00:00:11 #803 [Verbose] > inl xk = fn x
00:00:11 #804 [Verbose] > inl found, new_acc =
00:00:11 #805 [Verbose] > ((false, [[]]), acc)
00:00:11 #806 [Verbose] > ||> listm.fold fun (found, acc') (k, xs) =>
00:00:11 #807 [Verbose] > if k = xk
00:00:11 #808 [Verbose] > then true, (k, x :: xs) :: acc'
00:00:11 #809 [Verbose] > else found, (k, xs) :: acc'
00:00:11 #810 [Verbose] > if found
00:00:11 #811 [Verbose] > then new_acc
00:00:11 #812 [Verbose] > else (xk, [[ x ]]) :: new_acc
00:00:11 #813 [Verbose] > Building /tmp/!dotnet-repl/20240320-1228-1436-3647-3009f1c7bbdf/main.spi
00:00:12 #814 [Verbose] >
00:00:12 #815 [Verbose] > ╭─[ 132.59ms - stdout ]────────────────────────────────────────────────────────╮
00:00:12 #816 [Verbose] > │ () │
00:00:12 #817 [Verbose] > │ │
00:00:12 #818 [Verbose] > │ │
00:00:12 #819 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:12 #820 [Verbose] >
00:00:12 #821 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:12 #822 [Verbose] > // // test
00:00:12 #823 [Verbose] >
00:00:12 #824 [Verbose] > listm.init 10i32 id
00:00:12 #825 [Verbose] > |> group_by (fun x => x % 2 = 0)
00:00:12 #826 [Verbose] > |> _assert_eq [[ true, [[ 0; 2; 4; 6; 8 ]]; false, [[ 1; 3; 5; 7; 9 ]] ]]
00:00:12 #827 [Verbose] > Building /tmp/!dotnet-repl/20240320-1228-1449-4973-4a689dc76efc/main.spi
00:00:12 #828 [Verbose] >
00:00:12 #829 [Verbose] > ╭─[ 195.50ms - stdout ]────────────────────────────────────────────────────────╮
00:00:12 #830 [Verbose] > │ type UH0 = │
00:00:12 #831 [Verbose] > │ | UH0_0 of int32 * UH0 │
00:00:12 #832 [Verbose] > │ | UH0_1 │
00:00:12 #833 [Verbose] > │ and UH1 = │
00:00:12 #834 [Verbose] > │ | UH1_0 of bool * UH0 * UH1 │
00:00:12 #835 [Verbose] > │ | UH1_1 │
00:00:12 #836 [Verbose] > │ let rec method0 () : unit = │
00:00:12 #837 [Verbose] > │ let v96 : UH0 = UH0_1 │
00:00:12 #838 [Verbose] > │ let v97 : UH0 = UH0_0(8, v96) │
00:00:12 #839 [Verbose] > │ let v98 : UH0 = UH0_0(6, v97) │
00:00:12 #840 [Verbose] > │ let v99 : UH0 = UH0_0(4, v98) │
00:00:12 #841 [Verbose] > │ let v100 : UH0 = UH0_0(2, v99) │
00:00:12 #842 [Verbose] > │ let v101 : UH0 = UH0_0(0, v100) │
00:00:12 #843 [Verbose] > │ let v102 : UH0 = UH0_1 │
00:00:12 #844 [Verbose] > │ let v103 : UH0 = UH0_0(9, v102) │
00:00:12 #845 [Verbose] > │ let v104 : UH0 = UH0_0(7, v103) │
00:00:12 #846 [Verbose] > │ let v105 : UH0 = UH0_0(5, v104) │
00:00:12 #847 [Verbose] > │ let v106 : UH0 = UH0_0(3, v105) │
00:00:12 #848 [Verbose] > │ let v107 : UH0 = UH0_0(1, v106) │
00:00:12 #849 [Verbose] > │ let v108 : UH1 = UH1_1 │
00:00:12 #850 [Verbose] > │ let v109 : UH1 = UH1_0(false, v107, v108) │
00:00:12 #851 [Verbose] > │ let v110 : UH1 = UH1_0(true, v101, v109) │
00:00:12 #852 [Verbose] > │ let v111 : UH0 = UH0_1 │
00:00:12 #853 [Verbose] > │ let v112 : UH0 = UH0_0(8, v111) │
00:00:12 #854 [Verbose] > │ let v113 : UH0 = UH0_0(6, v112) │
00:00:12 #855 [Verbose] > │ let v114 : UH0 = UH0_0(4, v113) │
00:00:12 #856 [Verbose] > │ let v115 : UH0 = UH0_0(2, v114) │
00:00:12 #857 [Verbose] > │ let v116 : UH0 = UH0_0(0, v115) │
00:00:12 #858 [Verbose] > │ let v117 : UH0 = UH0_1 │
00:00:12 #859 [Verbose] > │ let v118 : UH0 = UH0_0(9, v117) │
00:00:12 #860 [Verbose] > │ let v119 : UH0 = UH0_0(7, v118) │
00:00:12 #861 [Verbose] > │ let v120 : UH0 = UH0_0(5, v119) │
00:00:12 #862 [Verbose] > │ let v121 : UH0 = UH0_0(3, v120) │
00:00:12 #863 [Verbose] > │ let v122 : UH0 = UH0_0(1, v121) │
00:00:12 #864 [Verbose] > │ let v123 : UH1 = UH1_1 │
00:00:12 #865 [Verbose] > │ let v124 : UH1 = UH1_0(false, v122, v123) │
00:00:12 #866 [Verbose] > │ let v125 : UH1 = UH1_0(true, v116, v124) │
00:00:12 #867 [Verbose] > │ let v126 : string = $"__expect / actual: %A{v110} / expected: %A{v125}" │
00:00:12 #868 [Verbose] > │ () │
00:00:12 #869 [Verbose] > │ method0() │
00:00:12 #870 [Verbose] > │ │
00:00:12 #871 [Verbose] > │ │
00:00:12 #872 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:12 #873 [Verbose] >
00:00:12 #874 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:12 #875 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:12 #876 [Verbose] > │ ## forall' │
00:00:12 #877 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:12 #878 [Verbose] >
00:00:12 #879 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:12 #880 [Verbose] > inl forall' fn (head :: tail) =
00:00:12 #881 [Verbose] > (true, tail)
00:00:12 #882 [Verbose] > ||> listm.fold fun acc x =>
00:00:12 #883 [Verbose] > acc && x = head
00:00:12 #884 [Verbose] > Building /tmp/!dotnet-repl/20240320-1228-1469-6967-63dfaa59f548/main.spi
00:00:12 #885 [Verbose] >
00:00:12 #886 [Verbose] > ╭─[ 173.64ms - stdout ]────────────────────────────────────────────────────────╮
00:00:12 #887 [Verbose] > │ () │
00:00:12 #888 [Verbose] > │ │
00:00:12 #889 [Verbose] > │ │
00:00:12 #890 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:12 #891 [Verbose] >
00:00:12 #892 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:12 #893 [Verbose] > // // test
00:00:12 #894 [Verbose] >
00:00:12 #895 [Verbose] > [[ 1i32; 1; 1; 1; 1 ]]
00:00:12 #896 [Verbose] > |> forall' ((=) 1i32)
00:00:12 #897 [Verbose] > |> _assert_eq true
00:00:12 #898 [Verbose] > Building /tmp/!dotnet-repl/20240320-1228-1487-8721-894238e20237/main.spi
00:00:12 #899 [Verbose] >
00:00:12 #900 [Verbose] > ╭─[ 133.97ms - stdout ]────────────────────────────────────────────────────────╮
00:00:12 #901 [Verbose] > │ let rec method0 () : unit = │
00:00:12 #902 [Verbose] > │ let v0 : string = $"__expect / actual: %A{true} / expected: %A{true}" │
00:00:12 #903 [Verbose] > │ () │
00:00:12 #904 [Verbose] > │ method0() │
00:00:12 #905 [Verbose] > │ │
00:00:12 #906 [Verbose] > │ │
00:00:12 #907 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:12 #908 [Verbose] >
00:00:12 #909 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:12 #910 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:12 #911 [Verbose] > │ ## last │
00:00:12 #912 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:12 #913 [Verbose] >
00:00:12 #914 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:12 #915 [Verbose] > inl last list =
00:00:12 #916 [Verbose] > list
00:00:12 #917 [Verbose] > |> listm.rev
00:00:12 #918 [Verbose] > |> item 0i32
00:00:12 #919 [Verbose] > Building /tmp/!dotnet-repl/20240320-1228-1500-0061-03e6ecf04cd6/main.spi
00:00:12 #920 [Verbose] >
00:00:12 #921 [Verbose] > ╭─[ 126.99ms - stdout ]────────────────────────────────────────────────────────╮
00:00:12 #922 [Verbose] > │ () │
00:00:12 #923 [Verbose] > │ │
00:00:12 #924 [Verbose] > │ │
00:00:12 #925 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:12 #926 [Verbose] >
00:00:12 #927 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:12 #928 [Verbose] > // // test
00:00:12 #929 [Verbose] >
00:00:12 #930 [Verbose] > listm.init 10i32 id
00:00:12 #931 [Verbose] > |> last
00:00:12 #932 [Verbose] > |> _assert_eq 9
00:00:12 #933 [Verbose] > Building /tmp/!dotnet-repl/20240320-1228-1513-1329-14f2a1edd3d4/main.spi
00:00:12 #934 [Verbose] >
00:00:12 #935 [Verbose] > ╭─[ 134.51ms - stdout ]────────────────────────────────────────────────────────╮
00:00:12 #936 [Verbose] > │ let rec method0 () : unit = │
00:00:12 #937 [Verbose] > │ let v0 : string = $"__expect / actual: %A{9} / expected: %A{9}" │
00:00:12 #938 [Verbose] > │ () │
00:00:12 #939 [Verbose] > │ method0() │
00:00:12 #940 [Verbose] > │ │
00:00:12 #941 [Verbose] > │ │
00:00:12 #942 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:12 #943 [Verbose] >
00:00:12 #944 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:12 #945 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:12 #946 [Verbose] > │ ## try_pick │
00:00:12 #947 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:12 #948 [Verbose] >
00:00:12 #949 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:12 #950 [Verbose] > inl try_pick fn list =
00:00:12 #951 [Verbose] > inl rec body fn = function
00:00:12 #952 [Verbose] > | [[]] => None
00:00:12 #953 [Verbose] > | x :: xs =>
00:00:12 #954 [Verbose] > match fn x with
00:00:12 #955 [Verbose] > | Some y => Some y
00:00:12 #956 [Verbose] > | None => loop xs
00:00:12 #957 [Verbose] > and inl loop list =
00:00:12 #958 [Verbose] > if var_is list |> not
00:00:12 #959 [Verbose] > then body fn list
00:00:12 #960 [Verbose] > else
00:00:12 #961 [Verbose] > inl fn = join fn
00:00:12 #962 [Verbose] > inl list = dyn list
00:00:12 #963 [Verbose] > join body fn list
00:00:12 #964 [Verbose] > loop list
00:00:12 #965 [Verbose] > Building /tmp/!dotnet-repl/20240320-1228-1527-2704-29bf77cba547/main.spi
00:00:12 #966 [Verbose] >
00:00:12 #967 [Verbose] > ╭─[ 164.51ms - stdout ]────────────────────────────────────────────────────────╮
00:00:12 #968 [Verbose] > │ () │
00:00:12 #969 [Verbose] > │ │
00:00:12 #970 [Verbose] > │ │
00:00:12 #971 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:12 #972 [Verbose] >
00:00:12 #973 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:12 #974 [Verbose] > // // test
00:00:12 #975 [Verbose] >
00:00:12 #976 [Verbose] > listm.init 10i32 id
00:00:12 #977 [Verbose] > |> try_pick (fun x => if x = 5i32 then Some x else None)
00:00:12 #978 [Verbose] > |> _assert_eq (Some 5i32)
00:00:13 #979 [Verbose] > Building /tmp/!dotnet-repl/20240320-1228-1543-4332-4595a314eb1a/main.spi
00:00:13 #980 [Verbose] >
00:00:13 #981 [Verbose] > ╭─[ 152.51ms - stdout ]────────────────────────────────────────────────────────╮
00:00:13 #982 [Verbose] > │ type [<Struct>] US0 = │
00:00:13 #983 [Verbose] > │ | US0_0 │
00:00:13 #984 [Verbose] > │ | US0_1 of f1_0 : int32 │
00:00:13 #985 [Verbose] > │ let rec method0 () : unit = │
00:00:13 #986 [Verbose] > │ let v3 : US0 = US0_1(5) │
00:00:13 #987 [Verbose] > │ let v4 : US0 = US0_1(5) │
00:00:13 #988 [Verbose] > │ let v5 : string = $"__expect / actual: %A{v3} / expected: %A{v4}" │
00:00:13 #989 [Verbose] > │ () │
00:00:13 #990 [Verbose] > │ method0() │
00:00:13 #991 [Verbose] > │ │
00:00:13 #992 [Verbose] > │ │
00:00:13 #993 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:13 #994 [Verbose] > [NbConvertApp] Converting notebook listm'.dib.ipynb to html
00:00:13 #995 [Verbose] > /opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:00:13 #996 [Verbose] > validate(nb)
00:00:14 #997 [Verbose] > /opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:00:14 #998 [Verbose] > return _pygments_highlight(
00:00:14 #999 [Verbose] > [NbConvertApp] Writing 362860 bytes to listm'.dib.html
00:00:14 #1000 [Debug] executeAsync / exitCode: 0 / output.Length: 64268
00:00:14 #1001 [Debug] main / executeCommand / exitCode: 0
00:00:00 #1 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #2 [Debug] executeAsync / options: { Command =
"dotnet "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 --default-int i32 --default-float f64"
WorkingDirectory = None
CancellationToken = Some System.Threading.CancellationToken
OnLine = Some <fun:main@464-1020> }
00:00:00 #3 [Verbose] > pwd: /home/runner/work/polyglot/polyglot/lib/spiral
00:00:00 #4 [Verbose] > dll_path: /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release
00:00:00 #5 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #6 [Verbose] waitForPortAccess / port: 13805 / retry: 0
00:00:00 #7 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #8 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #9 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #10 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #11 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #12 [Verbose] > Starting the Spiral Server. It is bound to: http://localhost:13805
00:00:00 #13 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #14 [Debug] sendJson / port: 13805 / json: {"Ping":true} / result.Length:
00:00:00 #15 [Verbose] awaitCompiler / Ping / result: Some(null) / port: 13805 / retry: 0
00:00:00 #16 [Verbose] > Server bound to: http://localhost:13805
00:00:00 #17 [Debug] executeAsync / options: { Command = "pwsh -c "../../scripts/invoke-dib.ps1 benchmark.dib""
WorkingDirectory = None
CancellationToken = Some System.Threading.CancellationToken
OnLine = None }
00:00:02 #18 [Verbose] >
00:00:02 #19 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:02 #20 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:02 #21 [Verbose] > │ ## benchmark (Polyglot) │
00:00:02 #22 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:02 #23 [Verbose] >
00:00:02 #24 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:02 #25 [Verbose] > // // test
00:00:02 #26 [Verbose] >
00:00:02 #27 [Verbose] > open testing
00:00:03 #28 [Verbose] > Building /tmp/!dotnet-repl/20240320-1228-2127-2759-204f14e47447/main.spi
00:00:05 #29 [Verbose] >
00:00:05 #30 [Verbose] > ╭─[ 3.44s - stdout ]───────────────────────────────────────────────────────────╮
00:00:05 #31 [Verbose] > │ () │
00:00:05 #32 [Verbose] > │ │
00:00:05 #33 [Verbose] > │ │
00:00:05 #34 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:05 #35 [Verbose] >
00:00:05 #36 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:05 #37 [Verbose] > inl (/@) x = listm'.(/@) x
00:00:05 #38 [Verbose] > Building /tmp/!dotnet-repl/20240320-1228-2365-6555-6cbdafe930c3/main.spi
00:00:06 #39 [Verbose] >
00:00:06 #40 [Verbose] > ╭─[ 215.45ms - stdout ]────────────────────────────────────────────────────────╮
00:00:06 #41 [Verbose] > │ () │
00:00:06 #42 [Verbose] > │ │
00:00:06 #43 [Verbose] > │ │
00:00:06 #44 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #45 [Verbose] >
00:00:06 #46 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 #47 [Verbose] > inl gc_collect () =
00:00:06 #48 [Verbose] > run_target function
00:00:06 #49 [Verbose] > | Fsharp => fun () => $"System.GC.Collect ()"
00:00:06 #50 [Verbose] > | _ => fun () => ()
00:00:06 #51 [Verbose] >
00:00:06 #52 [Verbose] > inl printfn x =
00:00:06 #53 [Verbose] > console.write_line x
00:00:06 #54 [Verbose] >
00:00:06 #55 [Verbose] > nominal stopwatch = $"System.Diagnostics.Stopwatch"
00:00:06 #56 [Verbose] >
00:00:06 #57 [Verbose] > inl stopwatch () : stopwatch =
00:00:06 #58 [Verbose] > $"`stopwatch" ()
00:00:06 #59 [Verbose] >
00:00:06 #60 [Verbose] > inl stopwatch_elapsed_milliseconds (stopwatch : stopwatch) : i64 =
00:00:06 #61 [Verbose] > $"!stopwatch.ElapsedMilliseconds"
00:00:06 #62 [Verbose] >
00:00:06 #63 [Verbose] > inl stopwatch_start (stopwatch : stopwatch) : () =
00:00:06 #64 [Verbose] > $"!stopwatch.Start ()"
00:00:06 #65 [Verbose] > Building /tmp/!dotnet-repl/20240320-1228-2386-8677-8673183e541e/main.spi
00:00:06 #66 [Verbose] >
00:00:06 #67 [Verbose] > ╭─[ 148.04ms - stdout ]────────────────────────────────────────────────────────╮
00:00:06 #68 [Verbose] > │ () │
00:00:06 #69 [Verbose] > │ │
00:00:06 #70 [Verbose] > │ │
00:00:06 #71 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #72 [Verbose] >
00:00:06 #73 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:06 #74 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:06 #75 [Verbose] > │ ## test_case_result │
00:00:06 #76 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #77 [Verbose] >
00:00:06 #78 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 #79 [Verbose] > type test_case_result =
00:00:06 #80 [Verbose] > {
00:00:06 #81 [Verbose] > Input : string
00:00:06 #82 [Verbose] > Expected : string
00:00:06 #83 [Verbose] > Result : string
00:00:06 #84 [Verbose] > TimeList : a u64 i64
00:00:06 #85 [Verbose] > }
00:00:06 #86 [Verbose] > Building /tmp/!dotnet-repl/20240320-1228-2401-0156-070179dea08b/main.spi
00:00:06 #87 [Verbose] >
00:00:06 #88 [Verbose] > ╭─[ 150.54ms - stdout ]────────────────────────────────────────────────────────╮
00:00:06 #89 [Verbose] > │ () │
00:00:06 #90 [Verbose] > │ │
00:00:06 #91 [Verbose] > │ │
00:00:06 #92 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #93 [Verbose] >
00:00:06 #94 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:06 #95 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:06 #96 [Verbose] > │ ## run │
00:00:06 #97 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #98 [Verbose] >
00:00:06 #99 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 #100 [Verbose] > inl run forall input expected.
00:00:06 #101 [Verbose] > count
00:00:06 #102 [Verbose] > (solutions : list (string * (input -> expected)))
00:00:06 #103 [Verbose] > ((input, expected) : (input * expected))
00:00:06 #104 [Verbose] > : test_case_result
00:00:06 #105 [Verbose] > =
00:00:06 #106 [Verbose] > inl input_str = input |> sm'.format_debug
00:00:06 #107 [Verbose] >
00:00:06 #108 [Verbose] > printfn ""
00:00:06 #109 [Verbose] > printfn ($"$\"Solution: {!input_str} \"" : string)
00:00:06 #110 [Verbose] >
00:00:06 #111 [Verbose] > inl performance_invoke (fn : () -> expected) =
00:00:06 #112 [Verbose] > gc_collect ()
00:00:06 #113 [Verbose] > inl stopwatch = stopwatch ()
00:00:06 #114 [Verbose] > stopwatch |> stopwatch_start
00:00:06 #115 [Verbose] > inl time1 = stopwatch |> stopwatch_elapsed_milliseconds
00:00:06 #116 [Verbose] > inl result : expected =
00:00:06 #117 [Verbose] > am'.init_series 0 count 1i32
00:00:06 #118 [Verbose] > |> am'.parallel_map fun _n => fn ()
00:00:06 #119 [Verbose] > |> am'.last
00:00:06 #120 [Verbose] > inl time2 = (stopwatch |> stopwatch_elapsed_milliseconds) - time1
00:00:06 #121 [Verbose] > result, time2
00:00:06 #122 [Verbose] >
00:00:06 #123 [Verbose] > inl results_with_time : a u64 _ =
00:00:06 #124 [Verbose] > solutions
00:00:06 #125 [Verbose] > |> listm'.indexed
00:00:06 #126 [Verbose] > |> listm.toArray
00:00:06 #127 [Verbose] > |> am.map fun ((i : i32), (test_name, solution)) =>
00:00:06 #128 [Verbose] > inl result, time = performance_invoke fun () => solution input
00:00:06 #129 [Verbose] > printfn ($"$\"Test case {!i + 1}. {!test_name}. Time: {!time} \"" :
00:00:06 #130 [Verbose] > string)
00:00:06 #131 [Verbose] > result, time
00:00:06 #132 [Verbose] >
00:00:06 #133 [Verbose] > match results_with_time |> am.map fst with
00:00:06 #134 [Verbose] > | array when length array <= 1 => ()
00:00:06 #135 [Verbose] > | array when array |> am.forall' ((=) (index array 0)) => ()
00:00:06 #136 [Verbose] > | results => failwith ($"$\"Challenge error: {!results}\"" : string)
00:00:06 #137 [Verbose] >
00:00:06 #138 [Verbose] > {
00:00:06 #139 [Verbose] > Input = input_str
00:00:06 #140 [Verbose] > Expected = expected |> sm'.format_debug
00:00:06 #141 [Verbose] > Result = results_with_time |> am.map fst |> fun array => index array 0
00:00:06 #142 [Verbose] > |> sm'.format_debug
00:00:06 #143 [Verbose] > TimeList = results_with_time |> am.map snd
00:00:06 #144 [Verbose] > }
00:00:06 #145 [Verbose] > Building /tmp/!dotnet-repl/20240320-1228-2417-1753-1da04bbd55d6/main.spi
00:00:06 #146 [Verbose] >
00:00:06 #147 [Verbose] > ╭─[ 156.40ms - stdout ]────────────────────────────────────────────────────────╮
00:00:06 #148 [Verbose] > │ () │
00:00:06 #149 [Verbose] > │ │
00:00:06 #150 [Verbose] > │ │
00:00:06 #151 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #152 [Verbose] >
00:00:06 #153 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:06 #154 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:06 #155 [Verbose] > │ ## run_all │
00:00:06 #156 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #157 [Verbose] >
00:00:06 #158 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 #159 [Verbose] > inl run_all forall input expected.
00:00:06 #160 [Verbose] > test_name
00:00:06 #161 [Verbose] > count
00:00:06 #162 [Verbose] > (solutions : list (string * (input -> expected)))
00:00:06 #163 [Verbose] > test_cases
00:00:06 #164 [Verbose] > =
00:00:06 #165 [Verbose] > printfn ""
00:00:06 #166 [Verbose] > printfn ""
00:00:06 #167 [Verbose] > printfn ($"$\"Test: {!test_name}\"" : string)
00:00:06 #168 [Verbose] > test_cases
00:00:06 #169 [Verbose] > |> listm.toArray
00:00:06 #170 [Verbose] > |> am.map (run count solutions)
00:00:06 #171 [Verbose] > Building /tmp/!dotnet-repl/20240320-1228-2432-3262-3402f5fbf023/main.spi
00:00:06 #172 [Verbose] >
00:00:06 #173 [Verbose] > ╭─[ 184.73ms - stdout ]────────────────────────────────────────────────────────╮
00:00:06 #174 [Verbose] > │ () │
00:00:06 #175 [Verbose] > │ │
00:00:06 #176 [Verbose] > │ │
00:00:06 #177 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #178 [Verbose] >
00:00:06 #179 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:06 #180 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:06 #181 [Verbose] > │ ## sort_result_list │
00:00:06 #182 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #183 [Verbose] >
00:00:06 #184 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 #185 [Verbose] > inl sort_result_list results =
00:00:06 #186 [Verbose] > inl table =
00:00:06 #187 [Verbose] > inl rows =
00:00:06 #188 [Verbose] > results
00:00:06 #189 [Verbose] > |> am.map fun (result : test_case_result) =>
00:00:06 #190 [Verbose] > inl best =
00:00:06 #191 [Verbose] > result.TimeList
00:00:06 #192 [Verbose] > |> am'.indexed
00:00:06 #193 [Verbose] > |> am.map fun (i, time) =>
00:00:06 #194 [Verbose] > i + 1i64, time
00:00:06 #195 [Verbose] > |> am'.sort_by snd
00:00:06 #196 [Verbose] > |> fun array => index array 0i32
00:00:06 #197 [Verbose] > |> sm'.format_debug
00:00:06 #198 [Verbose] > inl row =
00:00:06 #199 [Verbose] > [[
00:00:06 #200 [Verbose] > result.Input
00:00:06 #201 [Verbose] > result.Expected
00:00:06 #202 [Verbose] > result.Result
00:00:06 #203 [Verbose] > best
00:00:06 #204 [Verbose] > ]]
00:00:06 #205 [Verbose] > inl color : option console.console_color =
00:00:06 #206 [Verbose] > open console
00:00:06 #207 [Verbose] > match result.Expected = result.Result with
00:00:06 #208 [Verbose] > | true => Some $"`console_color.DarkGreen"
00:00:06 #209 [Verbose] > | false => Some $"`console_color.DarkRed"
00:00:06 #210 [Verbose] > row, color
00:00:06 #211 [Verbose] >
00:00:06 #212 [Verbose] > inl header =
00:00:06 #213 [Verbose] > [[
00:00:06 #214 [Verbose] > [[
00:00:06 #215 [Verbose] > "Input"
00:00:06 #216 [Verbose] > "Expected"
00:00:06 #217 [Verbose] > "Result"
00:00:06 #218 [Verbose] > "Best"
00:00:06 #219 [Verbose] > ]]
00:00:06 #220 [Verbose] > [[
00:00:06 #221 [Verbose] > "---"
00:00:06 #222 [Verbose] > "---"
00:00:06 #223 [Verbose] > "---"
00:00:06 #224 [Verbose] > "---"
00:00:06 #225 [Verbose] > ]]
00:00:06 #226 [Verbose] > ]]
00:00:06 #227 [Verbose] > |> listm.map fun row => row, None
00:00:06 #228 [Verbose] > |> listm.toArray
00:00:06 #229 [Verbose] > rows |> am.append header
00:00:06 #230 [Verbose] >
00:00:06 #231 [Verbose] > inl formattedTable =
00:00:06 #232 [Verbose] > inl lengthMap : mapm.map i32 i64 =
00:00:06 #233 [Verbose] > table
00:00:06 #234 [Verbose] > |> am.map (fst >> listm.toArray)
00:00:06 #235 [Verbose] > |> am'.transpose
00:00:06 #236 [Verbose] > |> am.map fun column =>
00:00:06 #237 [Verbose] > column
00:00:06 #238 [Verbose] > |> am.map sm.length
00:00:06 #239 [Verbose] > |> am'.sort_descending
00:00:06 #240 [Verbose] > |> am'.try_item 0i32
00:00:06 #241 [Verbose] > |> optionm'.default_value 0i64
00:00:06 #242 [Verbose] > |> am'.indexed
00:00:06 #243 [Verbose] > |> fun (x : a i32 _) => x
00:00:06 #244 [Verbose] > |> mapm.of_array
00:00:06 #245 [Verbose] > table
00:00:06 #246 [Verbose] > |> am.map fun (row, color) =>
00:00:06 #247 [Verbose] > inl newRow =
00:00:06 #248 [Verbose] > row
00:00:06 #249 [Verbose] > |> listm'.indexed
00:00:06 #250 [Verbose] > |> listm.map fun (i, cell) =>
00:00:06 #251 [Verbose] > cell |> sm'.pad_right (lengthMap |> mapm.item i |> conv)
00:00:06 #252 [Verbose] > |> listm.toArray
00:00:06 #253 [Verbose] > newRow, color
00:00:06 #254 [Verbose] >
00:00:06 #255 [Verbose] > printfn ""
00:00:06 #256 [Verbose] > formattedTable
00:00:06 #257 [Verbose] > |> am.iter fun ((row : a i32 string), color) =>
00:00:06 #258 [Verbose] > match color with
00:00:06 #259 [Verbose] > | Some color => color |> console.set_foreground_color
00:00:06 #260 [Verbose] > | None => console.reset_color ()
00:00:06 #261 [Verbose] >
00:00:06 #262 [Verbose] > printfn (row |> sm'.join' "\t| ")
00:00:06 #263 [Verbose] >
00:00:06 #264 [Verbose] > console.reset_color ()
00:00:06 #265 [Verbose] >
00:00:06 #266 [Verbose] > inl averages : a u64 _ =
00:00:06 #267 [Verbose] > results
00:00:06 #268 [Verbose] > |> am.map fun result =>
00:00:06 #269 [Verbose] > result.TimeList
00:00:06 #270 [Verbose] > |> am.map ($"float" : i64 -> f64)
00:00:06 #271 [Verbose] > |> am'.transpose
00:00:06 #272 [Verbose] > |> am.map am'.average
00:00:06 #273 [Verbose] > |> am.map ($"int64" : f64 -> i64)
00:00:06 #274 [Verbose] > |> am'.indexed
00:00:06 #275 [Verbose] >
00:00:06 #276 [Verbose] > printfn ""
00:00:06 #277 [Verbose] > printfn "Average Ranking "
00:00:06 #278 [Verbose] > averages
00:00:06 #279 [Verbose] > |> am'.sort_by snd
00:00:06 #280 [Verbose] > |> am.iter fun ((i : i32), avg) =>
00:00:06 #281 [Verbose] > printfn ($"$\"Test case %d{!i + 1}. Average Time: %A{!avg} \"" :
00:00:06 #282 [Verbose] > string)
00:00:06 #283 [Verbose] > Building /tmp/!dotnet-repl/20240320-1228-2451-5154-59380933be4a/main.spi
00:00:06 #284 [Verbose] >
00:00:06 #285 [Verbose] > ╭─[ 165.14ms - stdout ]────────────────────────────────────────────────────────╮
00:00:06 #286 [Verbose] > │ () │
00:00:06 #287 [Verbose] > │ │
00:00:06 #288 [Verbose] > │ │
00:00:06 #289 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #290 [Verbose] >
00:00:06 #291 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 #292 [Verbose] > // // test
00:00:06 #293 [Verbose] >
00:00:06 #294 [Verbose] > inl is_fast () =
00:00:06 #295 [Verbose] > false
00:00:06 #296 [Verbose] > Building /tmp/!dotnet-repl/20240320-1228-2467-6779-6e875a845e53/main.spi
00:00:06 #297 [Verbose] >
00:00:06 #298 [Verbose] > ╭─[ 147.40ms - stdout ]────────────────────────────────────────────────────────╮
00:00:06 #299 [Verbose] > │ () │
00:00:06 #300 [Verbose] > │ │
00:00:06 #301 [Verbose] > │ │
00:00:06 #302 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #303 [Verbose] >
00:00:06 #304 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:06 #305 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:06 #306 [Verbose] > │ ## empty2Tests │
00:00:06 #307 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #308 [Verbose] >
00:00:06 #309 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:06 #310 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:06 #311 [Verbose] > │ Test: Empty2 │
00:00:06 #312 [Verbose] > │ │
00:00:06 #313 [Verbose] > │ Solution: (a, a) │
00:00:06 #314 [Verbose] > │ Test case 1. A. Time: 59L │
00:00:06 #315 [Verbose] > │ │
00:00:06 #316 [Verbose] > │ Solution: (a, a) │
00:00:06 #317 [Verbose] > │ Test case 1. A. Time: 53L │
00:00:06 #318 [Verbose] > │ │
00:00:06 #319 [Verbose] > │ Input | Expected | Result | Best │
00:00:06 #320 [Verbose] > │ --- | --- | --- | --- │
00:00:06 #321 [Verbose] > │ (a, a) | a | a | (1, 59) │
00:00:06 #322 [Verbose] > │ (a, a) | a | a | (1, 53) │
00:00:06 #323 [Verbose] > │ │
00:00:06 #324 [Verbose] > │ Averages │
00:00:06 #325 [Verbose] > │ Test case 1. Average Time: 56L │
00:00:06 #326 [Verbose] > │ │
00:00:06 #327 [Verbose] > │ Ranking │
00:00:06 #328 [Verbose] > │ Test case 1. Average Time: 56L │
00:00:06 #329 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #330 [Verbose] >
00:00:06 #331 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 #332 [Verbose] > // // test
00:00:06 #333 [Verbose] >
00:00:06 #334 [Verbose] > inl get_solutions () =
00:00:06 #335 [Verbose] > [[
00:00:06 #336 [Verbose] > "A",
00:00:06 #337 [Verbose] > fun (a, _b) =>
00:00:06 #338 [Verbose] > a
00:00:06 #339 [Verbose] >
00:00:06 #340 [Verbose] > "B",
00:00:06 #341 [Verbose] > fun (_a, b) =>
00:00:06 #342 [Verbose] > b
00:00:06 #343 [Verbose] > ]]
00:00:06 #344 [Verbose] >
00:00:06 #345 [Verbose] > inl rec empty_2_tests () =
00:00:06 #346 [Verbose] > inl test_cases = [[
00:00:06 #347 [Verbose] > ("a", "a"), "a"
00:00:06 #348 [Verbose] > ("b", "b"), "b"
00:00:06 #349 [Verbose] > ]]
00:00:06 #350 [Verbose] >
00:00:06 #351 [Verbose] > inl solutions = get_solutions ()
00:00:06 #352 [Verbose] >
00:00:06 #353 [Verbose] > // inl is_fast () = true
00:00:06 #354 [Verbose] >
00:00:06 #355 [Verbose] > inl count =
00:00:06 #356 [Verbose] > if is_fast ()
00:00:06 #357 [Verbose] > then 1000i32
00:00:06 #358 [Verbose] > else 2000000i32
00:00:06 #359 [Verbose] >
00:00:06 #360 [Verbose] > run_all (nameof empty_2_tests) count solutions test_cases
00:00:06 #361 [Verbose] > |> sort_result_list
00:00:06 #362 [Verbose] >
00:00:06 #363 [Verbose] > empty_2_tests ()
00:00:07 #364 [Verbose] > Building /tmp/!dotnet-repl/20240320-1228-2483-8343-892a2d883425/main.spi
00:00:14 #365 [Verbose] >
00:00:14 #366 [Verbose] > ╭─[ 7.08s - stdout ]───────────────────────────────────────────────────────────╮
00:00:14 #367 [Verbose] > │ type UH0 = │
00:00:14 #368 [Verbose] > │ | UH0_0 of string * string * string * UH0 │
00:00:14 #369 [Verbose] > │ | UH0_1 │
00:00:14 #370 [Verbose] > │ and Mut0 = {mutable l0 : uint64} │
00:00:14 #371 [Verbose] > │ and UH1 = │
00:00:14 #372 [Verbose] > │ | UH1_0 of int32 * string * (struct (string * string) -> string) * UH1 │
00:00:14 #373 [Verbose] > │ | UH1_1 │
00:00:14 #374 [Verbose] > │ and Mut1 = {mutable l0 : int32} │
00:00:14 #375 [Verbose] > │ and UH2 = │
00:00:14 #376 [Verbose] > │ | UH2_0 of string * UH2 │
00:00:14 #377 [Verbose] > │ | UH2_1 │
00:00:14 #378 [Verbose] > │ and [<Struct>] US0 = │
00:00:14 #379 [Verbose] > │ | US0_0 │
00:00:14 #380 [Verbose] > │ | US0_1 of f1_0 : System.ConsoleColor │
00:00:14 #381 [Verbose] > │ and UH3 = │
00:00:14 #382 [Verbose] > │ | UH3_0 of int64 * int64 * UH3 │
00:00:14 #383 [Verbose] > │ | UH3_1 │
00:00:14 #384 [Verbose] > │ and Mut2 = {mutable l0 : uint64; mutable l1 : UH3; mutable l2 : int64} │
00:00:14 #385 [Verbose] > │ and UH4 = │
00:00:14 #386 [Verbose] > │ | UH4_0 of UH2 * US0 * UH4 │
00:00:14 #387 [Verbose] > │ | UH4_1 │
00:00:14 #388 [Verbose] > │ and [<Struct>] US1 = │
00:00:14 #389 [Verbose] > │ | US1_0 │
00:00:14 #390 [Verbose] > │ | US1_1 of f1_0 : int64 │
00:00:14 #391 [Verbose] > │ and UH5 = │
00:00:14 #392 [Verbose] > │ | UH5_0 of int32 * int64 * UH5 │
00:00:14 #393 [Verbose] > │ | UH5_1 │
00:00:14 #394 [Verbose] > │ and Mut3 = {mutable l0 : uint64; mutable l1 : UH5; mutable l2 : int32} │
00:00:14 #395 [Verbose] > │ and UH6 = │
00:00:14 #396 [Verbose] > │ | UH6_0 of int32 * string * UH6 │
00:00:14 #397 [Verbose] > │ | UH6_1 │
00:00:14 #398 [Verbose] > │ let rec method2 (v0 : UH0, v1 : uint64) : uint64 = │
00:00:14 #399 [Verbose] > │ match v0 with │
00:00:14 #400 [Verbose] > │ | UH0_0(v2, v3, v4, v5) -> (* Cons *) │
00:00:14 #401 [Verbose] > │ let v6 : uint64 = v1 + 1UL │
00:00:14 #402 [Verbose] > │ method2(v5, v6) │
00:00:14 #403 [Verbose] > │ | UH0_1 -> (* Nil *) │
00:00:14 #404 [Verbose] > │ v1 │
00:00:14 #405 [Verbose] > │ and method3 (v0 : (struct (string * string * string) []), v1 : UH0, v2 : │
00:00:14 #406 [Verbose] > │ uint64) : uint64 = │
00:00:14 #407 [Verbose] > │ match v1 with │
00:00:14 #408 [Verbose] > │ | UH0_0(v3, v4, v5, v6) -> (* Cons *) │
00:00:14 #409 [Verbose] > │ v0.[int v2] <- struct (v3, v4, v5) │
00:00:14 #410 [Verbose] > │ let v7 : uint64 = v2 + 1UL │
00:00:14 #411 [Verbose] > │ method3(v0, v6, v7) │
00:00:14 #412 [Verbose] > │ | UH0_1 -> (* Nil *) │
00:00:14 #413 [Verbose] > │ v2 │
00:00:14 #414 [Verbose] > │ and method1 (v0 : UH0) : (struct (string * string * string) []) = │
00:00:14 #415 [Verbose] > │ let v1 : uint64 = 0UL │
00:00:14 #416 [Verbose] > │ let v2 : uint64 = method2(v0, v1) │
00:00:14 #417 [Verbose] > │ let v3 : (struct (string * string * string) []) = │
00:00:14 #418 [Verbose] > │ Array.zeroCreate<struct (string * string * string)> │
00:00:14 #419 [Verbose] > │ (System.Convert.ToInt32(v2)) │
00:00:14 #420 [Verbose] > │ let v4 : uint64 = 0UL │
00:00:14 #421 [Verbose] > │ let v5 : uint64 = method3(v3, v0, v4) │
00:00:14 #422 [Verbose] > │ v3 │
00:00:14 #423 [Verbose] > │ and method4 (v0 : uint64, v1 : Mut0) : bool = │
00:00:14 #424 [Verbose] > │ let v2 : uint64 = v1.l0 │
00:00:14 #425 [Verbose] > │ let v3 : bool = v2 < v0 │
00:00:14 #426 [Verbose] > │ v3 │
00:00:14 #427 [Verbose] > │ and closure1 () struct (v0 : string, v1 : string) : string = │
00:00:14 #428 [Verbose] > │ v0 │
00:00:14 #429 [Verbose] > │ and closure2 () struct (v0 : string, v1 : string) : string = │
00:00:14 #430 [Verbose] > │ v1 │
00:00:14 #431 [Verbose] > │ and method6 (v0 : UH1, v1 : uint64) : uint64 = │
00:00:14 #432 [Verbose] > │ match v0 with │
00:00:14 #433 [Verbose] > │ | UH1_0(v2, v3, v4, v5) -> (* Cons *) │
00:00:14 #434 [Verbose] > │ let v6 : uint64 = v1 + 1UL │
00:00:14 #435 [Verbose] > │ method6(v5, v6) │
00:00:14 #436 [Verbose] > │ | UH1_1 -> (* Nil *) │
00:00:14 #437 [Verbose] > │ v1 │
00:00:14 #438 [Verbose] > │ and method7 (v0 : (struct (int32 * string * (struct (string * string) -> │
00:00:14 #439 [Verbose] > │ string)) []), v1 : UH1, v2 : uint64) : uint64 = │
00:00:14 #440 [Verbose] > │ match v1 with │
00:00:14 #441 [Verbose] > │ | UH1_0(v3, v4, v5, v6) -> (* Cons *) │
00:00:14 #442 [Verbose] > │ v0.[int v2] <- struct (v3, v4, v5) │
00:00:14 #443 [Verbose] > │ let v7 : uint64 = v2 + 1UL │
00:00:14 #444 [Verbose] > │ method7(v0, v6, v7) │
00:00:14 #445 [Verbose] > │ | UH1_1 -> (* Nil *) │
00:00:14 #446 [Verbose] > │ v2 │
00:00:14 #447 [Verbose] > │ and method5 (v0 : UH1) : (struct (int32 * string * (struct (string * string) │
00:00:14 #448 [Verbose] > │ -> string)) []) = │
00:00:14 #449 [Verbose] > │ let v1 : uint64 = 0UL │
00:00:14 #450 [Verbose] > │ let v2 : uint64 = method6(v0, v1) │
00:00:14 #451 [Verbose] > │ let v3 : (struct (int32 * string * (struct (string * string) -> string)) │
00:00:14 #452 [Verbose] > │ []) = Array.zeroCreate<struct (int32 * string * (struct (string * string) -> │
00:00:14 #453 [Verbose] > │ string))> (System.Convert.ToInt32(v2)) │
00:00:14 #454 [Verbose] > │ let v4 : uint64 = 0UL │
00:00:14 #455 [Verbose] > │ let v5 : uint64 = method7(v3, v0, v4) │
00:00:14 #456 [Verbose] > │ v3 │
00:00:14 #457 [Verbose] > │ and method8 (v0 : Mut1) : bool = │
00:00:14 #458 [Verbose] > │ let v1 : int32 = v0.l0 │
00:00:14 #459 [Verbose] > │ let v2 : bool = v1 < 2000001 │
00:00:14 #460 [Verbose] > │ v2 │
00:00:14 #461 [Verbose] > │ and closure3 (v0 : string, v1 : string, v2 : (struct (string * string) -> │
00:00:14 #462 [Verbose] > │ string)) (v3 : int32) : string = │
00:00:14 #463 [Verbose] > │ v2 struct (v0, v1) │
00:00:14 #464 [Verbose] > │ and method9 (v0 : string, v1 : (string []), v2 : uint64) : bool = │
00:00:14 #465 [Verbose] > │ let v3 : uint64 = System.Convert.ToUInt64 v1.Length │
00:00:14 #466 [Verbose] > │ let v4 : bool = v2 < v3 │
00:00:14 #467 [Verbose] > │ if v4 then │
00:00:14 #468 [Verbose] > │ let v5 : string = v1.[int v2] │
00:00:14 #469 [Verbose] > │ let v6 : bool = v0 = v5 │
00:00:14 #470 [Verbose] > │ if v6 then │
00:00:14 #471 [Verbose] > │ let v7 : uint64 = v2 + 1UL │
00:00:14 #472 [Verbose] > │ method9(v0, v1, v7) │
00:00:14 #473 [Verbose] > │ else │
00:00:14 #474 [Verbose] > │ false │
00:00:14 #475 [Verbose] > │ else │
00:00:14 #476 [Verbose] > │ true │
00:00:14 #477 [Verbose] > │ and method10 (v0 : uint64, v1 : Mut2) : bool = │
00:00:14 #478 [Verbose] > │ let v2 : uint64 = v1.l0 │
00:00:14 #479 [Verbose] > │ let v3 : bool = v2 < v0 │
00:00:14 #480 [Verbose] > │ v3 │
00:00:14 #481 [Verbose] > │ and method11 (v0 : UH3, v1 : UH3) : UH3 = │
00:00:14 #482 [Verbose] > │ match v0 with │
00:00:14 #483 [Verbose] > │ | UH3_0(v2, v3, v4) -> (* Cons *) │
00:00:14 #484 [Verbose] > │ let v5 : UH3 = UH3_0(v2, v3, v1) │
00:00:14 #485 [Verbose] > │ method11(v4, v5) │
00:00:14 #486 [Verbose] > │ | UH3_1 -> (* Nil *) │
00:00:14 #487 [Verbose] > │ v1 │
00:00:14 #488 [Verbose] > │ and method13 (v0 : UH3, v1 : int32) : int32 = │
00:00:14 #489 [Verbose] > │ match v0 with │
00:00:14 #490 [Verbose] > │ | UH3_0(v2, v3, v4) -> (* Cons *) │
00:00:14 #491 [Verbose] > │ let v5 : int32 = v1 + 1 │
00:00:14 #492 [Verbose] > │ method13(v4, v5) │
00:00:14 #493 [Verbose] > │ | UH3_1 -> (* Nil *) │
00:00:14 #494 [Verbose] > │ v1 │
00:00:14 #495 [Verbose] > │ and method14 (v0 : (struct (int64 * int64) []), v1 : UH3, v2 : int32) : │
00:00:14 #496 [Verbose] > │ int32 = │
00:00:14 #497 [Verbose] > │ match v1 with │
00:00:14 #498 [Verbose] > │ | UH3_0(v3, v4, v5) -> (* Cons *) │
00:00:14 #499 [Verbose] > │ v0.[int v2] <- struct (v3, v4) │
00:00:14 #500 [Verbose] > │ let v6 : int32 = v2 + 1 │
00:00:14 #501 [Verbose] > │ method14(v0, v5, v6) │
00:00:14 #502 [Verbose] > │ | UH3_1 -> (* Nil *) │
00:00:14 #503 [Verbose] > │ v2 │
00:00:14 #504 [Verbose] > │ and method12 (v0 : UH3) : (struct (int64 * int64) []) = │
00:00:14 #505 [Verbose] > │ let v1 : int32 = 0 │
00:00:14 #506 [Verbose] > │ let v2 : int32 = method13(v0, v1) │
00:00:14 #507 [Verbose] > │ let v3 : (struct (int64 * int64) []) = Array.zeroCreate<struct (int64 * │
00:00:14 #508 [Verbose] > │ int64)> (v2) │
00:00:14 #509 [Verbose] > │ let v4 : int32 = 0 │
00:00:14 #510 [Verbose] > │ let v5 : int32 = method14(v3, v0, v4) │
00:00:14 #511 [Verbose] > │ v3 │
00:00:14 #512 [Verbose] > │ and method15 (v0 : int32, v1 : Mut1) : bool = │
00:00:14 #513 [Verbose] > │ let v2 : int32 = v1.l0 │
00:00:14 #514 [Verbose] > │ let v3 : bool = v2 < v0 │
00:00:14 #515 [Verbose] > │ v3 │
00:00:14 #516 [Verbose] > │ and closure4 () struct (v0 : int64, v1 : int64) : int64 = │
00:00:14 #517 [Verbose] > │ v1 │
00:00:14 #518 [Verbose] > │ and method17 (v0 : UH4, v1 : uint64) : uint64 = │
00:00:14 #519 [Verbose] > │ match v0 with │
00:00:14 #520 [Verbose] > │ | UH4_0(v2, v3, v4) -> (* Cons *) │
00:00:14 #521 [Verbose] > │ let v5 : uint64 = v1 + 1UL │
00:00:14 #522 [Verbose] > │ method17(v4, v5) │
00:00:14 #523 [Verbose] > │ | UH4_1 -> (* Nil *) │
00:00:14 #524 [Verbose] > │ v1 │
00:00:14 #525 [Verbose] > │ and method18 (v0 : (struct (UH2 * US0) []), v1 : UH4, v2 : uint64) : uint64 │
00:00:14 #526 [Verbose] > │ = │
00:00:14 #527 [Verbose] > │ match v1 with │
00:00:14 #528 [Verbose] > │ | UH4_0(v3, v4, v5) -> (* Cons *) │
00:00:14 #529 [Verbose] > │ v0.[int v2] <- struct (v3, v4) │
00:00:14 #530 [Verbose] > │ let v6 : uint64 = v2 + 1UL │
00:00:14 #531 [Verbose] > │ method18(v0, v5, v6) │
00:00:14 #532 [Verbose] > │ | UH4_1 -> (* Nil *) │
00:00:14 #533 [Verbose] > │ v2 │
00:00:14 #534 [Verbose] > │ and method16 (v0 : UH4) : (struct (UH2 * US0) []) = │
00:00:14 #535 [Verbose] > │ let v1 : uint64 = 0UL │
00:00:14 #536 [Verbose] > │ let v2 : uint64 = method17(v0, v1) │
00:00:14 #537 [Verbose] > │ let v3 : (struct (UH2 * US0) []) = Array.zeroCreate<struct (UH2 * US0)> │
00:00:14 #538 [Verbose] > │ (System.Convert.ToInt32(v2)) │
00:00:14 #539 [Verbose] > │ let v4 : uint64 = 0UL │
00:00:14 #540 [Verbose] > │ let v5 : uint64 = method18(v3, v0, v4) │
00:00:14 #541 [Verbose] > │ v3 │
00:00:14 #542 [Verbose] > │ and method20 (v0 : UH2, v1 : uint64) : uint64 = │
00:00:14 #543 [Verbose] > │ match v0 with │
00:00:14 #544 [Verbose] > │ | UH2_0(v2, v3) -> (* Cons *) │
00:00:14 #545 [Verbose] > │ let v4 : uint64 = v1 + 1UL │
00:00:14 #546 [Verbose] > │ method20(v3, v4) │
00:00:14 #547 [Verbose] > │ | UH2_1 -> (* Nil *) │
00:00:14 #548 [Verbose] > │ v1 │
00:00:14 #549 [Verbose] > │ and method21 (v0 : (string []), v1 : UH2, v2 : uint64) : uint64 = │
00:00:14 #550 [Verbose] > │ match v1 with │
00:00:14 #551 [Verbose] > │ | UH2_0(v3, v4) -> (* Cons *) │
00:00:14 #552 [Verbose] > │ v0.[int v2] <- v3 │
00:00:14 #553 [Verbose] > │ let v5 : uint64 = v2 + 1UL │
00:00:14 #554 [Verbose] > │ method21(v0, v4, v5) │
00:00:14 #555 [Verbose] > │ | UH2_1 -> (* Nil *) │
00:00:14 #556 [Verbose] > │ v2 │
00:00:14 #557 [Verbose] > │ and method19 (v0 : UH2) : (string []) = │
00:00:14 #558 [Verbose] > │ let v1 : uint64 = 0UL │
00:00:14 #559 [Verbose] > │ let v2 : uint64 = method20(v0, v1) │
00:00:14 #560 [Verbose] > │ let v3 : (string []) = Array.zeroCreate<string> │
00:00:14 #561 [Verbose] > │ (System.Convert.ToInt32(v2)) │
00:00:14 #562 [Verbose] > │ let v4 : uint64 = 0UL │
00:00:14 #563 [Verbose] > │ let v5 : uint64 = method21(v3, v0, v4) │
00:00:14 #564 [Verbose] > │ v3 │
00:00:14 #565 [Verbose] > │ and closure5 () (v0 : int64) : US1 = │
00:00:14 #566 [Verbose] > │ US1_1(v0) │
00:00:14 #567 [Verbose] > │ and method22 (v0 : uint64, v1 : Mut3) : bool = │
00:00:14 #568 [Verbose] > │ let v2 : uint64 = v1.l0 │
00:00:14 #569 [Verbose] > │ let v3 : bool = v2 < v0 │
00:00:14 #570 [Verbose] > │ v3 │
00:00:14 #571 [Verbose] > │ and method23 (v0 : UH5, v1 : UH5) : UH5 = │
00:00:14 #572 [Verbose] > │ match v0 with │
00:00:14 #573 [Verbose] > │ | UH5_0(v2, v3, v4) -> (* Cons *) │
00:00:14 #574 [Verbose] > │ let v5 : UH5 = UH5_0(v2, v3, v1) │
00:00:14 #575 [Verbose] > │ method23(v4, v5) │
00:00:14 #576 [Verbose] > │ | UH5_1 -> (* Nil *) │
00:00:14 #577 [Verbose] > │ v1 │
00:00:14 #578 [Verbose] > │ and method25 (v0 : UH5, v1 : int32) : int32 = │
00:00:14 #579 [Verbose] > │ match v0 with │
00:00:14 #580 [Verbose] > │ | UH5_0(v2, v3, v4) -> (* Cons *) │
00:00:14 #581 [Verbose] > │ let v5 : int32 = v1 + 1 │
00:00:14 #582 [Verbose] > │ method25(v4, v5) │
00:00:14 #583 [Verbose] > │ | UH5_1 -> (* Nil *) │
00:00:14 #584 [Verbose] > │ v1 │
00:00:14 #585 [Verbose] > │ and method26 (v0 : (struct (int32 * int64) []), v1 : UH5, v2 : int32) : │
00:00:14 #586 [Verbose] > │ int32 = │
00:00:14 #587 [Verbose] > │ match v1 with │
00:00:14 #588 [Verbose] > │ | UH5_0(v3, v4, v5) -> (* Cons *) │
00:00:14 #589 [Verbose] > │ v0.[int v2] <- struct (v3, v4) │
00:00:14 #590 [Verbose] > │ let v6 : int32 = v2 + 1 │
00:00:14 #591 [Verbose] > │ method26(v0, v5, v6) │
00:00:14 #592 [Verbose] > │ | UH5_1 -> (* Nil *) │
00:00:14 #593 [Verbose] > │ v2 │
00:00:14 #594 [Verbose] > │ and method24 (v0 : UH5) : (struct (int32 * int64) []) = │
00:00:14 #595 [Verbose] > │ let v1 : int32 = 0 │
00:00:14 #596 [Verbose] > │ let v2 : int32 = method25(v0, v1) │
00:00:14 #597 [Verbose] > │ let v3 : (struct (int32 * int64) []) = Array.zeroCreate<struct (int32 * │
00:00:14 #598 [Verbose] > │ int64)> (v2) │
00:00:14 #599 [Verbose] > │ let v4 : int32 = 0 │
00:00:14 #600 [Verbose] > │ let v5 : int32 = method26(v3, v0, v4) │
00:00:14 #601 [Verbose] > │ v3 │
00:00:14 #602 [Verbose] > │ and method27 (v0 : UH2, v1 : UH6, v2 : int32) : struct (UH6 * int32) = │
00:00:14 #603 [Verbose] > │ match v0 with │
00:00:14 #604 [Verbose] > │ | UH2_0(v3, v4) -> (* Cons *) │
00:00:14 #605 [Verbose] > │ let v5 : int32 = v2 + 1 │
00:00:14 #606 [Verbose] > │ let v6 : UH6 = UH6_0(v2, v3, v1) │
00:00:14 #607 [Verbose] > │ method27(v4, v6, v5) │
00:00:14 #608 [Verbose] > │ | UH2_1 -> (* Nil *) │
00:00:14 #609 [Verbose] > │ struct (v1, v2) │
00:00:14 #610 [Verbose] > │ and method28 (v0 : UH6, v1 : UH6) : UH6 = │
00:00:14 #611 [Verbose] > │ match v0 with │
00:00:14 #612 [Verbose] > │ | UH6_0(v2, v3, v4) -> (* Cons *) │
00:00:14 #613 [Verbose] > │ let v5 : UH6 = UH6_0(v2, v3, v1) │
00:00:14 #614 [Verbose] > │ method28(v4, v5) │
00:00:14 #615 [Verbose] > │ | UH6_1 -> (* Nil *) │
00:00:14 #616 [Verbose] > │ v1 │
00:00:14 #617 [Verbose] > │ and method29 (v0 : Map<int32, int64>, v1 : UH6, v2 : UH2) : UH2 = │
00:00:14 #618 [Verbose] > │ match v1 with │
00:00:14 #619 [Verbose] > │ | UH6_0(v3, v4, v5) -> (* Cons *) │
00:00:14 #620 [Verbose] > │ let v6 : UH2 = method29(v0, v5, v2) │
00:00:14 #621 [Verbose] > │ let v7 : int64 = v0.[v3] │
00:00:14 #622 [Verbose] > │ let v8 : int32 = int32 v7 │
00:00:14 #623 [Verbose] > │ let v9 : string = v4.PadRight v8 │
00:00:14 #624 [Verbose] > │ UH2_0(v9, v6) │
00:00:14 #625 [Verbose] > │ | UH6_1 -> (* Nil *) │
00:00:14 #626 [Verbose] > │ v2 │
00:00:14 #627 [Verbose] > │ and method31 (v0 : UH2, v1 : int32) : int32 = │
00:00:14 #628 [Verbose] > │ match v0 with │
00:00:14 #629 [Verbose] > │ | UH2_0(v2, v3) -> (* Cons *) │
00:00:14 #630 [Verbose] > │ let v4 : int32 = v1 + 1 │
00:00:14 #631 [Verbose] > │ method31(v3, v4) │
00:00:14 #632 [Verbose] > │ | UH2_1 -> (* Nil *) │
00:00:14 #633 [Verbose] > │ v1 │
00:00:14 #634 [Verbose] > │ and method32 (v0 : (string []), v1 : UH2, v2 : int32) : int32 = │
00:00:14 #635 [Verbose] > │ match v1 with │
00:00:14 #636 [Verbose] > │ | UH2_0(v3, v4) -> (* Cons *) │
00:00:14 #637 [Verbose] > │ v0.[int v2] <- v3 │
00:00:14 #638 [Verbose] > │ let v5 : int32 = v2 + 1 │
00:00:14 #639 [Verbose] > │ method32(v0, v4, v5) │
00:00:14 #640 [Verbose] > │ | UH2_1 -> (* Nil *) │
00:00:14 #641 [Verbose] > │ v2 │
00:00:14 #642 [Verbose] > │ and method30 (v0 : UH2) : (string []) = │
00:00:14 #643 [Verbose] > │ let v1 : int32 = 0 │
00:00:14 #644 [Verbose] > │ let v2 : int32 = method31(v0, v1) │
00:00:14 #645 [Verbose] > │ let v3 : (string []) = Array.zeroCreate<string> (v2) │
00:00:14 #646 [Verbose] > │ let v4 : int32 = 0 │
00:00:14 #647 [Verbose] > │ let v5 : int32 = method32(v3, v0, v4) │
00:00:14 #648 [Verbose] > │ v3 │
00:00:14 #649 [Verbose] > │ and method34 (v0 : UH5, v1 : uint64) : uint64 = │
00:00:14 #650 [Verbose] > │ match v0 with │
00:00:14 #651 [Verbose] > │ | UH5_0(v2, v3, v4) -> (* Cons *) │
00:00:14 #652 [Verbose] > │ let v5 : uint64 = v1 + 1UL │
00:00:14 #653 [Verbose] > │ method34(v4, v5) │
00:00:14 #654 [Verbose] > │ | UH5_1 -> (* Nil *) │
00:00:14 #655 [Verbose] > │ v1 │
00:00:14 #656 [Verbose] > │ and method35 (v0 : (struct (int32 * int64) []), v1 : UH5, v2 : uint64) : │
00:00:14 #657 [Verbose] > │ uint64 = │
00:00:14 #658 [Verbose] > │ match v1 with │
00:00:14 #659 [Verbose] > │ | UH5_0(v3, v4, v5) -> (* Cons *) │
00:00:14 #660 [Verbose] > │ v0.[int v2] <- struct (v3, v4) │
00:00:14 #661 [Verbose] > │ let v6 : uint64 = v2 + 1UL │
00:00:14 #662 [Verbose] > │ method35(v0, v5, v6) │
00:00:14 #663 [Verbose] > │ | UH5_1 -> (* Nil *) │
00:00:14 #664 [Verbose] > │ v2 │
00:00:14 #665 [Verbose] > │ and method33 (v0 : UH5) : (struct (int32 * int64) []) = │
00:00:14 #666 [Verbose] > │ let v1 : uint64 = 0UL │
00:00:14 #667 [Verbose] > │ let v2 : uint64 = method34(v0, v1) │
00:00:14 #668 [Verbose] > │ let v3 : (struct (int32 * int64) []) = Array.zeroCreate<struct (int32 * │
00:00:14 #669 [Verbose] > │ int64)> (System.Convert.ToInt32(v2)) │
00:00:14 #670 [Verbose] > │ let v4 : uint64 = 0UL │
00:00:14 #671 [Verbose] > │ let v5 : uint64 = method35(v3, v0, v4) │
00:00:14 #672 [Verbose] > │ v3 │
00:00:14 #673 [Verbose] > │ and closure6 () struct (v0 : int32, v1 : int64) : int64 = │
00:00:14 #674 [Verbose] > │ v1 │
00:00:14 #675 [Verbose] > │ and closure0 () () : unit = │
00:00:14 #676 [Verbose] > │ let v0 : (unit -> unit) = closure0() │
00:00:14 #677 [Verbose] > │ let v1 : string = nameof v0 │
00:00:14 #678 [Verbose] > │ let v2 : string = "" │
00:00:14 #679 [Verbose] > │ System.Console.WriteLine v2 │
00:00:14 #680 [Verbose] > │ System.Console.WriteLine v2 │
00:00:14 #681 [Verbose] > │ let v3 : string = $"Test: {v1}" │
00:00:14 #682 [Verbose] > │ System.Console.WriteLine v3 │
00:00:14 #683 [Verbose] > │ let v4 : string = "a" │
00:00:14 #684 [Verbose] > │ let v5 : string = "b" │
00:00:14 #685 [Verbose] > │ let v6 : UH0 = UH0_1 │
00:00:14 #686 [Verbose] > │ let v7 : UH0 = UH0_0(v5, v5, v5, v6) │
00:00:14 #687 [Verbose] > │ let v8 : UH0 = UH0_0(v4, v4, v4, v7) │
00:00:14 #688 [Verbose] > │ let v9 : (struct (string * string * string) []) = method1(v8) │
00:00:14 #689 [Verbose] > │ let v10 : uint64 = System.Convert.ToUInt64 v9.Length │
00:00:14 #690 [Verbose] > │ let v11 : (struct (string * string * string * (int64 [])) []) = │
00:00:14 #691 [Verbose] > │ Array.zeroCreate<struct (string * string * string * (int64 []))> │
00:00:14 #692 [Verbose] > │ (System.Convert.ToInt32(v10)) │
00:00:14 #693 [Verbose] > │ let v12 : Mut0 = {l0 = 0UL} : Mut0 │
00:00:14 #694 [Verbose] > │ while method4(v10, v12) do │
00:00:14 #695 [Verbose] > │ let v14 : uint64 = v12.l0 │
00:00:14 #696 [Verbose] > │ let struct (v15 : string, v16 : string, v17 : string) = v9.[int v14] │
00:00:14 #697 [Verbose] > │ let v18 : string = $"%A{struct (v15, v16)}" │
00:00:14 #698 [Verbose] > │ System.Console.WriteLine v2 │
00:00:14 #699 [Verbose] > │ let v19 : string = $"Solution: {v18} " │
00:00:14 #700 [Verbose] > │ System.Console.WriteLine v19 │
00:00:14 #701 [Verbose] > │ let v20 : int32 = 0 │
00:00:14 #702 [Verbose] > │ let v21 : string = "A" │
00:00:14 #703 [Verbose] > │ let v22 : (struct (string * string) -> string) = closure1() │
00:00:14 #704 [Verbose] > │ let v23 : int32 = 1 │
00:00:14 #705 [Verbose] > │ let v24 : string = "B" │
00:00:14 #706 [Verbose] > │ let v25 : (struct (string * string) -> string) = closure2() │
00:00:14 #707 [Verbose] > │ let v26 : UH1 = UH1_1 │
00:00:14 #708 [Verbose] > │ let v27 : UH1 = UH1_0(v23, v24, v25, v26) │
00:00:14 #709 [Verbose] > │ let v28 : UH1 = UH1_0(v20, v21, v22, v27) │
00:00:14 #710 [Verbose] > │ let v29 : (struct (int32 * string * (struct (string * string) -> │
00:00:14 #711 [Verbose] > │ string)) []) = method5(v28) │
00:00:14 #712 [Verbose] > │ let v30 : uint64 = System.Convert.ToUInt64 v29.Length │
00:00:14 #713 [Verbose] > │ let v31 : (struct (string * int64) []) = Array.zeroCreate<struct │
00:00:14 #714 [Verbose] > │ (string * int64)> (System.Convert.ToInt32(v30)) │
00:00:14 #715 [Verbose] > │ let v32 : Mut0 = {l0 = 0UL} : Mut0 │
00:00:14 #716 [Verbose] > │ while method4(v30, v32) do │
00:00:14 #717 [Verbose] > │ let v34 : uint64 = v32.l0 │
00:00:14 #718 [Verbose] > │ let struct (v35 : int32, v36 : string, v37 : (struct (string * │
00:00:14 #719 [Verbose] > │ string) -> string)) = v29.[int v34] │
00:00:14 #720 [Verbose] > │ let mutable result = None │
00:00:14 #721 [Verbose] > │ #if FABLE_COMPILER_RUST │
00:00:14 #722 [Verbose] > │ #if !WASM │
00:00:14 #723 [Verbose] > │ () │
00:00:14 #724 [Verbose] > │ #else │
00:00:14 #725 [Verbose] > │ () │
00:00:14 #726 [Verbose] > │ #endif │
00:00:14 #727 [Verbose] > │ #else │
00:00:14 #728 [Verbose] > │ System.GC.Collect () │
00:00:14 #729 [Verbose] > │ () │
00:00:14 #730 [Verbose] > │ #endif │
00:00:14 #731 [Verbose] > │ |> fun x -> result <- Some x │
00:00:14 #732 [Verbose] > │ result |> Option.get │
00:00:14 #733 [Verbose] > │ let v38 : (unit -> System.Diagnostics.Stopwatch) = │
00:00:14 #734 [Verbose] > │ System.Diagnostics.Stopwatch │
00:00:14 #735 [Verbose] > │ let v39 : System.Diagnostics.Stopwatch = v38 () │
00:00:14 #736 [Verbose] > │ v39.Start () │
00:00:14 #737 [Verbose] > │ let v40 : int64 = v39.ElapsedMilliseconds │
00:00:14 #738 [Verbose] > │ let v41 : (int32 []) = Array.zeroCreate<int32> (2000001) │
00:00:14 #739 [Verbose] > │ let v42 : Mut1 = {l0 = 0} : Mut1 │
00:00:14 #740 [Verbose] > │ while method8(v42) do │
00:00:14 #741 [Verbose] > │ let v44 : int32 = v42.l0 │
00:00:14 #742 [Verbose] > │ v41.[int v44] <- v44 │
00:00:14 #743 [Verbose] > │ let v45 : int32 = v44 + 1 │
00:00:14 #744 [Verbose] > │ v42.l0 <- v45 │
00:00:14 #745 [Verbose] > │ () │
00:00:14 #746 [Verbose] > │ let v46 : (int32 -> string) = closure3(v15, v16, v37) │
00:00:14 #747 [Verbose] > │ let v47 : (string []) = v41 |> Array.Parallel.map v46 │
00:00:14 #748 [Verbose] > │ let v48 : int32 = v47.Length │
00:00:14 #749 [Verbose] > │ let v49 : int32 = v48 - 1 │
00:00:14 #750 [Verbose] > │ let v50 : string = v47.[int v49] │
00:00:14 #751 [Verbose] > │ let v51 : int64 = v39.ElapsedMilliseconds │
00:00:14 #752 [Verbose] > │ let v52 : int64 = v51 - v40 │
00:00:14 #753 [Verbose] > │ let v53 : string = $"Test case {v35 + 1}. {v36}. Time: {v52} " │
00:00:14 #754 [Verbose] > │ System.Console.WriteLine v53 │
00:00:14 #755 [Verbose] > │ v31.[int v34] <- struct (v50, v52) │
00:00:14 #756 [Verbose] > │ let v54 : uint64 = v34 + 1UL │
00:00:14 #757 [Verbose] > │ v32.l0 <- v54 │
00:00:14 #758 [Verbose] > │ () │
00:00:14 #759 [Verbose] > │ let v55 : uint64 = System.Convert.ToUInt64 v31.Length │
00:00:14 #760 [Verbose] > │ let v56 : (string []) = Array.zeroCreate<string> │
00:00:14 #761 [Verbose] > │ (System.Convert.ToInt32(v55)) │
00:00:14 #762 [Verbose] > │ let v57 : Mut0 = {l0 = 0UL} : Mut0 │
00:00:14 #763 [Verbose] > │ while method4(v55, v57) do │
00:00:14 #764 [Verbose] > │ let v59 : uint64 = v57.l0 │
00:00:14 #765 [Verbose] > │ let struct (v60 : string, v61 : int64) = v31.[int v59] │
00:00:14 #766 [Verbose] > │ v56.[int v59] <- v60 │
00:00:14 #767 [Verbose] > │ let v62 : uint64 = v59 + 1UL │
00:00:14 #768 [Verbose] > │ v57.l0 <- v62 │
00:00:14 #769 [Verbose] > │ () │
00:00:14 #770 [Verbose] > │ let v63 : uint64 = System.Convert.ToUInt64 v56.Length │
00:00:14 #771 [Verbose] > │ let v64 : bool = v63 <= 1UL │
00:00:14 #772 [Verbose] > │ if v64 then │
00:00:14 #773 [Verbose] > │ () │
00:00:14 #774 [Verbose] > │ else │
00:00:14 #775 [Verbose] > │ let v65 : string = v56.[int 0UL] │
00:00:14 #776 [Verbose] > │ let v66 : uint64 = 0UL │
00:00:14 #777 [Verbose] > │ let v67 : bool = method9(v65, v56, v66) │
00:00:14 #778 [Verbose] > │ if v67 then │
00:00:14 #779 [Verbose] > │ () │
00:00:14 #780 [Verbose] > │ else │
00:00:14 #781 [Verbose] > │ let v68 : string = $"Challenge error: {v56}" │
00:00:14 #782 [Verbose] > │ failwith<unit> v68 │
00:00:14 #783 [Verbose] > │ let v69 : string = $"%A{v17}" │
00:00:14 #784 [Verbose] > │ let v70 : (string []) = Array.zeroCreate<string> │
00:00:14 #785 [Verbose] > │ (System.Convert.ToInt32(v55)) │
00:00:14 #786 [Verbose] > │ let v71 : Mut0 = {l0 = 0UL} : Mut0 │
00:00:14 #787 [Verbose] > │ while method4(v55, v71) do │
00:00:14 #788 [Verbose] > │ let v73 : uint64 = v71.l0 │
00:00:14 #789 [Verbose] > │ let struct (v74 : string, v75 : int64) = v31.[int v73] │
00:00:14 #790 [Verbose] > │ v70.[int v73] <- v74 │
00:00:14 #791 [Verbose] > │ let v76 : uint64 = v73 + 1UL │
00:00:14 #792 [Verbose] > │ v71.l0 <- v76 │
00:00:14 #793 [Verbose] > │ () │
00:00:14 #794 [Verbose] > │ let v77 : string = v70.[int 0UL] │
00:00:14 #795 [Verbose] > │ let v78 : string = $"%A{v77}" │
00:00:14 #796 [Verbose] > │ let v79 : (int64 []) = Array.zeroCreate<int64> │
00:00:14 #797 [Verbose] > │ (System.Convert.ToInt32(v55)) │
00:00:14 #798 [Verbose] > │ let v80 : Mut0 = {l0 = 0UL} : Mut0 │
00:00:14 #799 [Verbose] > │ while method4(v55, v80) do │
00:00:14 #800 [Verbose] > │ let v82 : uint64 = v80.l0 │
00:00:14 #801 [Verbose] > │ let struct (v83 : string, v84 : int64) = v31.[int v82] │
00:00:14 #802 [Verbose] > │ v79.[int v82] <- v84 │
00:00:14 #803 [Verbose] > │ let v85 : uint64 = v82 + 1UL │
00:00:14 #804 [Verbose] > │ v80.l0 <- v85 │
00:00:14 #805 [Verbose] > │ () │
00:00:14 #806 [Verbose] > │ v11.[int v14] <- struct (v69, v18, v78, v79) │
00:00:14 #807 [Verbose] > │ let v86 : uint64 = v14 + 1UL │
00:00:14 #808 [Verbose] > │ v12.l0 <- v86 │
00:00:14 #809 [Verbose] > │ () │
00:00:14 #810 [Verbose] > │ let v87 : uint64 = System.Convert.ToUInt64 v11.Length │
00:00:14 #811 [Verbose] > │ let v88 : (struct (UH2 * US0) []) = Array.zeroCreate<struct (UH2 * US0)> │
00:00:14 #812 [Verbose] > │ (System.Convert.ToInt32(v87)) │
00:00:14 #813 [Verbose] > │ let v89 : Mut0 = {l0 = 0UL} : Mut0 │
00:00:14 #814 [Verbose] > │ while method4(v87, v89) do │
00:00:14 #815 [Verbose] > │ let v91 : uint64 = v89.l0 │
00:00:14 #816 [Verbose] > │ let struct (v92 : string, v93 : string, v94 : string, v95 : (int64 [ │
00:00:14 #817 [Verbose] > │ ])) = v11.[int v91] │
00:00:14 #818 [Verbose] > │ let v96 : uint64 = System.Convert.ToUInt64 v95.Length │
00:00:14 #819 [Verbose] > │ let v97 : UH3 = UH3_1 │
00:00:14 #820 [Verbose] > │ let v98 : Mut2 = {l0 = 0UL; l1 = v97; l2 = 0L} : Mut2 │
00:00:14 #821 [Verbose] > │ while method10(v96, v98) do │
00:00:14 #822 [Verbose] > │ let v100 : uint64 = v98.l0 │
00:00:14 #823 [Verbose] > │ let struct (v101 : UH3, v102 : int64) = v98.l1, v98.l2 │
00:00:14 #824 [Verbose] > │ let v103 : int64 = v95.[int v100] │
00:00:14 #825 [Verbose] > │ let v104 : int64 = v102 + 1L │
00:00:14 #826 [Verbose] > │ let v105 : uint64 = v100 + 1UL │
00:00:14 #827 [Verbose] > │ let v106 : UH3 = UH3_0(v102, v103, v101) │
00:00:14 #828 [Verbose] > │ v98.l0 <- v105 │
00:00:14 #829 [Verbose] > │ v98.l1 <- v106 │
00:00:14 #830 [Verbose] > │ v98.l2 <- v104 │
00:00:14 #831 [Verbose] > │ () │
00:00:14 #832 [Verbose] > │ let struct (v107 : UH3, v108 : int64) = v98.l1, v98.l2 │
00:00:14 #833 [Verbose] > │ let v109 : UH3 = UH3_1 │
00:00:14 #834 [Verbose] > │ let v110 : UH3 = method11(v107, v109) │
00:00:14 #835 [Verbose] > │ let v111 : (struct (int64 * int64) []) = method12(v110) │
00:00:14 #836 [Verbose] > │ let v112 : int32 = v111.Length │
00:00:14 #837 [Verbose] > │ let v113 : (struct (int64 * int64) []) = Array.zeroCreate<struct │
00:00:14 #838 [Verbose] > │ (int64 * int64)> (v112) │
00:00:14 #839 [Verbose] > │ let v114 : Mut1 = {l0 = 0} : Mut1 │
00:00:14 #840 [Verbose] > │ while method15(v112, v114) do │
00:00:14 #841 [Verbose] > │ let v116 : int32 = v114.l0 │
00:00:14 #842 [Verbose] > │ let struct (v117 : int64, v118 : int64) = v111.[int v116] │
00:00:14 #843 [Verbose] > │ let v119 : int64 = v117 + 1L │
00:00:14 #844 [Verbose] > │ v113.[int v116] <- struct (v119, v118) │
00:00:14 #845 [Verbose] > │ let v120 : int32 = v116 + 1 │
00:00:14 #846 [Verbose] > │ v114.l0 <- v120 │
00:00:14 #847 [Verbose] > │ () │
00:00:14 #848 [Verbose] > │ let v121 : (struct (int64 * int64) -> int64) = closure4() │
00:00:14 #849 [Verbose] > │ let v122 : (struct (int64 * int64) []) = v113 |> Array.sortBy v121 │
00:00:14 #850 [Verbose] > │ let struct (v123 : int64, v124 : int64) = v122.[int 0] │
00:00:14 #851 [Verbose] > │ let v125 : string = $"%A{struct (v123, v124)}" │
00:00:14 #852 [Verbose] > │ let v126 : bool = v92 = v94 │
00:00:14 #853 [Verbose] > │ let v131 : US0 = │
00:00:14 #854 [Verbose] > │ if v126 then │
00:00:14 #855 [Verbose] > │ let v127 : System.ConsoleColor = │
00:00:14 #856 [Verbose] > │ System.ConsoleColor.DarkGreen │
00:00:14 #857 [Verbose] > │ US0_1(v127) │
00:00:14 #858 [Verbose] > │ else │
00:00:14 #859 [Verbose] > │ let v129 : System.ConsoleColor = System.ConsoleColor.DarkRed │
00:00:14 #860 [Verbose] > │ US0_1(v129) │
00:00:14 #861 [Verbose] > │ let v132 : UH2 = UH2_1 │
00:00:14 #862 [Verbose] > │ let v133 : UH2 = UH2_0(v125, v132) │
00:00:14 #863 [Verbose] > │ let v134 : UH2 = UH2_0(v94, v133) │
00:00:14 #864 [Verbose] > │ let v135 : UH2 = UH2_0(v92, v134) │
00:00:14 #865 [Verbose] > │ let v136 : UH2 = UH2_0(v93, v135) │
00:00:14 #866 [Verbose] > │ v88.[int v91] <- struct (v136, v131) │
00:00:14 #867 [Verbose] > │ let v137 : uint64 = v91 + 1UL │
00:00:14 #868 [Verbose] > │ v89.l0 <- v137 │
00:00:14 #869 [Verbose] > │ () │
00:00:14 #870 [Verbose] > │ let v138 : string = "Input" │
00:00:14 #871 [Verbose] > │ let v139 : string = "Expected" │
00:00:14 #872 [Verbose] > │ let v140 : string = "Result" │
00:00:14 #873 [Verbose] > │ let v141 : string = "Best" │
00:00:14 #874 [Verbose] > │ let v142 : UH2 = UH2_1 │
00:00:14 #875 [Verbose] > │ let v143 : UH2 = UH2_0(v141, v142) │
00:00:14 #876 [Verbose] > │ let v144 : UH2 = UH2_0(v140, v143) │
00:00:14 #877 [Verbose] > │ let v145 : UH2 = UH2_0(v139, v144) │
00:00:14 #878 [Verbose] > │ let v146 : UH2 = UH2_0(v138, v145) │
00:00:14 #879 [Verbose] > │ let v147 : US0 = US0_0 │
00:00:14 #880 [Verbose] > │ let v148 : string = "---" │
00:00:14 #881 [Verbose] > │ let v149 : UH2 = UH2_1 │
00:00:14 #882 [Verbose] > │ let v150 : UH2 = UH2_0(v148, v149) │
00:00:14 #883 [Verbose] > │ let v151 : UH2 = UH2_0(v148, v150) │
00:00:14 #884 [Verbose] > │ let v152 : UH2 = UH2_0(v148, v151) │
00:00:14 #885 [Verbose] > │ let v153 : UH2 = UH2_0(v148, v152) │
00:00:14 #886 [Verbose] > │ let v154 : US0 = US0_0 │
00:00:14 #887 [Verbose] > │ let v155 : UH4 = UH4_1 │
00:00:14 #888 [Verbose] > │ let v156 : UH4 = UH4_0(v153, v154, v155) │
00:00:14 #889 [Verbose] > │ let v157 : UH4 = UH4_0(v146, v147, v156) │
00:00:14 #890 [Verbose] > │ let v158 : (struct (UH2 * US0) []) = method16(v157) │
00:00:14 #891 [Verbose] > │ let v159 : uint64 = System.Convert.ToUInt64 v158.Length │
00:00:14 #892 [Verbose] > │ let v160 : uint64 = System.Convert.ToUInt64 v88.Length │
00:00:14 #893 [Verbose] > │ let v161 : uint64 = v159 + v160 │
00:00:14 #894 [Verbose] > │ let v162 : (struct (UH2 * US0) []) = Array.zeroCreate<struct (UH2 * │
00:00:14 #895 [Verbose] > │ US0)> (System.Convert.ToInt32(v161)) │
00:00:14 #896 [Verbose] > │ let v163 : Mut0 = {l0 = 0UL} : Mut0 │
00:00:14 #897 [Verbose] > │ while method4(v161, v163) do │
00:00:14 #898 [Verbose] > │ let v165 : uint64 = v163.l0 │
00:00:14 #899 [Verbose] > │ let v166 : bool = v165 < v159 │
00:00:14 #900 [Verbose] > │ let struct (v172 : UH2, v173 : US0) = │
00:00:14 #901 [Verbose] > │ if v166 then │
00:00:14 #902 [Verbose] > │ let struct (v167 : UH2, v168 : US0) = v158.[int v165] │
00:00:14 #903 [Verbose] > │ struct (v167, v168) │
00:00:14 #904 [Verbose] > │ else │
00:00:14 #905 [Verbose] > │ let v169 : uint64 = v165 - v159 │
00:00:14 #906 [Verbose] > │ let struct (v170 : UH2, v171 : US0) = v88.[int v169] │
00:00:14 #907 [Verbose] > │ struct (v170, v171) │
00:00:14 #908 [Verbose] > │ v162.[int v165] <- struct (v172, v173) │
00:00:14 #909 [Verbose] > │ let v174 : uint64 = v165 + 1UL │
00:00:14 #910 [Verbose] > │ v163.l0 <- v174 │
00:00:14 #911 [Verbose] > │ () │
00:00:14 #912 [Verbose] > │ let v175 : uint64 = System.Convert.ToUInt64 v162.Length │
00:00:14 #913 [Verbose] > │ let v176 : ((string []) []) = Array.zeroCreate<(string [])> │
00:00:14 #914 [Verbose] > │ (System.Convert.ToInt32(v175)) │
00:00:14 #915 [Verbose] > │ let v177 : Mut0 = {l0 = 0UL} : Mut0 │
00:00:14 #916 [Verbose] > │ while method4(v175, v177) do │
00:00:14 #917 [Verbose] > │ let v179 : uint64 = v177.l0 │
00:00:14 #918 [Verbose] > │ let struct (v180 : UH2, v181 : US0) = v162.[int v179] │
00:00:14 #919 [Verbose] > │ let v182 : (string []) = method19(v180) │
00:00:14 #920 [Verbose] > │ v176.[int v179] <- v182 │
00:00:14 #921 [Verbose] > │ let v183 : uint64 = v179 + 1UL │
00:00:14 #922 [Verbose] > │ v177.l0 <- v183 │
00:00:14 #923 [Verbose] > │ () │
00:00:14 #924 [Verbose] > │ let v184 : ((string []) []) = v176 |> Array.transpose │
00:00:14 #925 [Verbose] > │ let v185 : uint64 = System.Convert.ToUInt64 v184.Length │
00:00:14 #926 [Verbose] > │ let v186 : (int64 []) = Array.zeroCreate<int64> │
00:00:14 #927 [Verbose] > │ (System.Convert.ToInt32(v185)) │
00:00:14 #928 [Verbose] > │ let v187 : Mut0 = {l0 = 0UL} : Mut0 │
00:00:14 #929 [Verbose] > │ while method4(v185, v187) do │
00:00:14 #930 [Verbose] > │ let v189 : uint64 = v187.l0 │
00:00:14 #931 [Verbose] > │ let v190 : (string []) = v184.[int v189] │
00:00:14 #932 [Verbose] > │ let v191 : uint64 = System.Convert.ToUInt64 v190.Length │
00:00:14 #933 [Verbose] > │ let v192 : (int64 []) = Array.zeroCreate<int64> │
00:00:14 #934 [Verbose] > │ (System.Convert.ToInt32(v191)) │
00:00:14 #935 [Verbose] > │ let v193 : Mut0 = {l0 = 0UL} : Mut0 │
00:00:14 #936 [Verbose] > │ while method4(v191, v193) do │
00:00:14 #937 [Verbose] > │ let v195 : uint64 = v193.l0 │
00:00:14 #938 [Verbose] > │ let v196 : string = v190.[int v195] │
00:00:14 #939 [Verbose] > │ let v197 : int64 = System.Convert.ToInt64 v196.Length │
00:00:14 #940 [Verbose] > │ v192.[int v195] <- v197 │
00:00:14 #941 [Verbose] > │ let v198 : uint64 = v195 + 1UL │
00:00:14 #942 [Verbose] > │ v193.l0 <- v198 │
00:00:14 #943 [Verbose] > │ () │
00:00:14 #944 [Verbose] > │ let v199 : (int64 []) = v192 |> Array.sortDescending │
00:00:14 #945 [Verbose] > │ let v200 : int64 option = v199 |> Array.tryItem 0 │
00:00:14 #946 [Verbose] > │ let v201 : (int64 -> US1) = closure5() │
00:00:14 #947 [Verbose] > │ let v202 : US1 = US1_0 │
00:00:14 #948 [Verbose] > │ let v203 : US1 = v200 |> Option.map v201 |> Option.defaultValue v202 │
00:00:14 #949 [Verbose] > │ let v206 : int64 = │
00:00:14 #950 [Verbose] > │ match v203 with │
00:00:14 #951 [Verbose] > │ | US1_0 -> (* None *) │
00:00:14 #952 [Verbose] > │ 0L │
00:00:14 #953 [Verbose] > │ | US1_1(v204) -> (* Some *) │
00:00:14 #954 [Verbose] > │ v204 │
00:00:14 #955 [Verbose] > │ v186.[int v189] <- v206 │
00:00:14 #956 [Verbose] > │ let v207 : uint64 = v189 + 1UL │
00:00:14 #957 [Verbose] > │ v187.l0 <- v207 │
00:00:14 #958 [Verbose] > │ () │
00:00:14 #959 [Verbose] > │ let v208 : uint64 = System.Convert.ToUInt64 v186.Length │
00:00:14 #960 [Verbose] > │ let v209 : UH5 = UH5_1 │
00:00:14 #961 [Verbose] > │ let v210 : Mut3 = {l0 = 0UL; l1 = v209; l2 = 0} : Mut3 │
00:00:14 #962 [Verbose] > │ while method22(v208, v210) do │
00:00:14 #963 [Verbose] > │ let v212 : uint64 = v210.l0 │
00:00:14 #964 [Verbose] > │ let struct (v213 : UH5, v214 : int32) = v210.l1, v210.l2 │
00:00:14 #965 [Verbose] > │ let v215 : int64 = v186.[int v212] │
00:00:14 #966 [Verbose] > │ let v216 : int32 = v214 + 1 │
00:00:14 #967 [Verbose] > │ let v217 : uint64 = v212 + 1UL │
00:00:14 #968 [Verbose] > │ let v218 : UH5 = UH5_0(v214, v215, v213) │
00:00:14 #969 [Verbose] > │ v210.l0 <- v217 │
00:00:14 #970 [Verbose] > │ v210.l1 <- v218 │
00:00:14 #971 [Verbose] > │ v210.l2 <- v216 │
00:00:14 #972 [Verbose] > │ () │
00:00:14 #973 [Verbose] > │ let struct (v219 : UH5, v220 : int32) = v210.l1, v210.l2 │
00:00:14 #974 [Verbose] > │ let v221 : UH5 = UH5_1 │
00:00:14 #975 [Verbose] > │ let v222 : UH5 = method23(v219, v221) │
00:00:14 #976 [Verbose] > │ let v223 : (struct (int32 * int64) []) = method24(v222) │
00:00:14 #977 [Verbose] > │ let v224 : Map<int32, int64> = v223 |> Array.map (fun (struct (a, b)) -> │
00:00:14 #978 [Verbose] > │ a, b) |> Map.ofArray │
00:00:14 #979 [Verbose] > │ let v225 : (struct ((string []) * US0) []) = Array.zeroCreate<struct │
00:00:14 #980 [Verbose] > │ ((string []) * US0)> (System.Convert.ToInt32(v175)) │
00:00:14 #981 [Verbose] > │ let v226 : Mut0 = {l0 = 0UL} : Mut0 │
00:00:14 #982 [Verbose] > │ while method4(v175, v226) do │
00:00:14 #983 [Verbose] > │ let v228 : uint64 = v226.l0 │
00:00:14 #984 [Verbose] > │ let struct (v229 : UH2, v230 : US0) = v162.[int v228] │
00:00:14 #985 [Verbose] > │ let v231 : UH6 = UH6_1 │
00:00:14 #986 [Verbose] > │ let v232 : int32 = 0 │
00:00:14 #987 [Verbose] > │ let struct (v233 : UH6, v234 : int32) = method27(v229, v231, v232) │
00:00:14 #988 [Verbose] > │ let v235 : UH6 = UH6_1 │
00:00:14 #989 [Verbose] > │ let v236 : UH6 = method28(v233, v235) │
00:00:14 #990 [Verbose] > │ let v237 : UH2 = UH2_1 │
00:00:14 #991 [Verbose] > │ let v238 : UH2 = method29(v224, v236, v237) │
00:00:14 #992 [Verbose] > │ let v239 : (string []) = method30(v238) │
00:00:14 #993 [Verbose] > │ v225.[int v228] <- struct (v239, v230) │
00:00:14 #994 [Verbose] > │ let v240 : uint64 = v228 + 1UL │
00:00:14 #995 [Verbose] > │ v226.l0 <- v240 │
00:00:14 #996 [Verbose] > │ () │
00:00:14 #997 [Verbose] > │ System.Console.WriteLine v2 │
00:00:14 #998 [Verbose] > │ let v241 : uint64 = System.Convert.ToUInt64 v225.Length │
00:00:14 #999 [Verbose] > │ let v242 : Mut0 = {l0 = 0UL} : Mut0 │
00:00:14 #1000 [Verbose] > │ while method4(v241, v242) do │
00:00:14 #1001 [Verbose] > │ let v244 : uint64 = v242.l0 │
00:00:14 #1002 [Verbose] > │ let struct (v245 : (string []), v246 : US0) = v225.[int v244] │
00:00:14 #1003 [Verbose] > │ match v246 with │
00:00:14 #1004 [Verbose] > │ | US0_0 -> (* None *) │
00:00:14 #1005 [Verbose] > │ let mutable result = None │
00:00:14 #1006 [Verbose] > │ #if FABLE_COMPILER_RUST │
00:00:14 #1007 [Verbose] > │ #if !WASM │
00:00:14 #1008 [Verbose] > │ () │
00:00:14 #1009 [Verbose] > │ #else │
00:00:14 #1010 [Verbose] > │ () │
00:00:14 #1011 [Verbose] > │ #endif │
00:00:14 #1012 [Verbose] > │ #else │
00:00:14 #1013 [Verbose] > │ System.Console.ResetColor () │
00:00:14 #1014 [Verbose] > │ () │
00:00:14 #1015 [Verbose] > │ #endif │
00:00:14 #1016 [Verbose] > │ |> fun x -> result <- Some x │
00:00:14 #1017 [Verbose] > │ result |> Option.get │
00:00:14 #1018 [Verbose] > │ () │
00:00:14 #1019 [Verbose] > │ | US0_1(v247) -> (* Some *) │
00:00:14 #1020 [Verbose] > │ let mutable result = None │
00:00:14 #1021 [Verbose] > │ #if FABLE_COMPILER_RUST │
00:00:14 #1022 [Verbose] > │ #if !WASM │
00:00:14 #1023 [Verbose] > │ () │
00:00:14 #1024 [Verbose] > │ #else │
00:00:14 #1025 [Verbose] > │ () │
00:00:14 #1026 [Verbose] > │ #endif │
00:00:14 #1027 [Verbose] > │ #else │
00:00:14 #1028 [Verbose] > │ System.Console.ForegroundColor <- v247 │
00:00:14 #1029 [Verbose] > │ () │
00:00:14 #1030 [Verbose] > │ #endif │
00:00:14 #1031 [Verbose] > │ |> fun x -> result <- Some x │
00:00:14 #1032 [Verbose] > │ result |> Option.get │
00:00:14 #1033 [Verbose] > │ () │
00:00:14 #1034 [Verbose] > │ let v248 : string = "\t| " │
00:00:14 #1035 [Verbose] > │ let v249 : string = System.String.Join (v248, v245) │
00:00:14 #1036 [Verbose] > │ System.Console.WriteLine v249 │
00:00:14 #1037 [Verbose] > │ let mutable result = None │
00:00:14 #1038 [Verbose] > │ #if FABLE_COMPILER_RUST │
00:00:14 #1039 [Verbose] > │ #if !WASM │
00:00:14 #1040 [Verbose] > │ () │
00:00:14 #1041 [Verbose] > │ #else │
00:00:14 #1042 [Verbose] > │ () │
00:00:14 #1043 [Verbose] > │ #endif │
00:00:14 #1044 [Verbose] > │ #else │
00:00:14 #1045 [Verbose] > │ System.Console.ResetColor () │
00:00:14 #1046 [Verbose] > │ () │
00:00:14 #1047 [Verbose] > │ #endif │
00:00:14 #1048 [Verbose] > │ |> fun x -> result <- Some x │
00:00:14 #1049 [Verbose] > │ result |> Option.get │
00:00:14 #1050 [Verbose] > │ let v250 : uint64 = v244 + 1UL │
00:00:14 #1051 [Verbose] > │ v242.l0 <- v250 │
00:00:14 #1052 [Verbose] > │ () │
00:00:14 #1053 [Verbose] > │ let v251 : ((float []) []) = Array.zeroCreate<(float [])> │
00:00:14 #1054 [Verbose] > │ (System.Convert.ToInt32(v87)) │
00:00:14 #1055 [Verbose] > │ let v252 : Mut0 = {l0 = 0UL} : Mut0 │
00:00:14 #1056 [Verbose] > │ while method4(v87, v252) do │
00:00:14 #1057 [Verbose] > │ let v254 : uint64 = v252.l0 │
00:00:14 #1058 [Verbose] > │ let struct (v255 : string, v256 : string, v257 : string, v258 : │
00:00:14 #1059 [Verbose] > │ (int64 [])) = v11.[int v254] │
00:00:14 #1060 [Verbose] > │ let v259 : (int64 -> float) = float │
00:00:14 #1061 [Verbose] > │ let v260 : uint64 = System.Convert.ToUInt64 v258.Length │
00:00:14 #1062 [Verbose] > │ let v261 : (float []) = Array.zeroCreate<float> │
00:00:14 #1063 [Verbose] > │ (System.Convert.ToInt32(v260)) │
00:00:14 #1064 [Verbose] > │ let v262 : Mut0 = {l0 = 0UL} : Mut0 │
00:00:14 #1065 [Verbose] > │ while method4(v260, v262) do │
00:00:14 #1066 [Verbose] > │ let v264 : uint64 = v262.l0 │
00:00:14 #1067 [Verbose] > │ let v265 : int64 = v258.[int v264] │
00:00:14 #1068 [Verbose] > │ let v266 : float = v259 v265 │
00:00:14 #1069 [Verbose] > │ v261.[int v264] <- v266 │
00:00:14 #1070 [Verbose] > │ let v267 : uint64 = v264 + 1UL │
00:00:14 #1071 [Verbose] > │ v262.l0 <- v267 │
00:00:14 #1072 [Verbose] > │ () │
00:00:14 #1073 [Verbose] > │ v251.[int v254] <- v261 │
00:00:14 #1074 [Verbose] > │ let v268 : uint64 = v254 + 1UL │
00:00:14 #1075 [Verbose] > │ v252.l0 <- v268 │
00:00:14 #1076 [Verbose] > │ () │
00:00:14 #1077 [Verbose] > │ let v269 : ((float []) []) = v251 |> Array.transpose │
00:00:14 #1078 [Verbose] > │ let v270 : uint64 = System.Convert.ToUInt64 v269.Length │
00:00:14 #1079 [Verbose] > │ let v271 : (float []) = Array.zeroCreate<float> │
00:00:14 #1080 [Verbose] > │ (System.Convert.ToInt32(v270)) │
00:00:14 #1081 [Verbose] > │ let v272 : Mut0 = {l0 = 0UL} : Mut0 │
00:00:14 #1082 [Verbose] > │ while method4(v270, v272) do │
00:00:14 #1083 [Verbose] > │ let v274 : uint64 = v272.l0 │
00:00:14 #1084 [Verbose] > │ let v275 : (float []) = v269.[int v274] │
00:00:14 #1085 [Verbose] > │ let v276 : float = v275 |> Array.average │
00:00:14 #1086 [Verbose] > │ v271.[int v274] <- v276 │
00:00:14 #1087 [Verbose] > │ let v277 : uint64 = v274 + 1UL │
00:00:14 #1088 [Verbose] > │ v272.l0 <- v277 │
00:00:14 #1089 [Verbose] > │ () │
00:00:14 #1090 [Verbose] > │ let v278 : (float -> int64) = int64 │
00:00:14 #1091 [Verbose] > │ let v279 : uint64 = System.Convert.ToUInt64 v271.Length │
00:00:14 #1092 [Verbose] > │ let v280 : (int64 []) = Array.zeroCreate<int64> │
00:00:14 #1093 [Verbose] > │ (System.Convert.ToInt32(v279)) │
00:00:14 #1094 [Verbose] > │ let v281 : Mut0 = {l0 = 0UL} : Mut0 │
00:00:14 #1095 [Verbose] > │ while method4(v279, v281) do │
00:00:14 #1096 [Verbose] > │ let v283 : uint64 = v281.l0 │
00:00:14 #1097 [Verbose] > │ let v284 : float = v271.[int v283] │
00:00:14 #1098 [Verbose] > │ let v285 : int64 = v278 v284 │
00:00:14 #1099 [Verbose] > │ v280.[int v283] <- v285 │
00:00:14 #1100 [Verbose] > │ let v286 : uint64 = v283 + 1UL │
00:00:14 #1101 [Verbose] > │ v281.l0 <- v286 │
00:00:14 #1102 [Verbose] > │ () │
00:00:14 #1103 [Verbose] > │ let v287 : uint64 = System.Convert.ToUInt64 v280.Length │
00:00:14 #1104 [Verbose] > │ let v288 : UH5 = UH5_1 │
00:00:14 #1105 [Verbose] > │ let v289 : Mut3 = {l0 = 0UL; l1 = v288; l2 = 0} : Mut3 │
00:00:14 #1106 [Verbose] > │ while method22(v287, v289) do │
00:00:14 #1107 [Verbose] > │ let v291 : uint64 = v289.l0 │
00:00:14 #1108 [Verbose] > │ let struct (v292 : UH5, v293 : int32) = v289.l1, v289.l2 │
00:00:14 #1109 [Verbose] > │ let v294 : int64 = v280.[int v291] │
00:00:14 #1110 [Verbose] > │ let v295 : int32 = v293 + 1 │
00:00:14 #1111 [Verbose] > │ let v296 : uint64 = v291 + 1UL │
00:00:14 #1112 [Verbose] > │ let v297 : UH5 = UH5_0(v293, v294, v292) │
00:00:14 #1113 [Verbose] > │ v289.l0 <- v296 │
00:00:14 #1114 [Verbose] > │ v289.l1 <- v297 │
00:00:14 #1115 [Verbose] > │ v289.l2 <- v295 │
00:00:14 #1116 [Verbose] > │ () │
00:00:14 #1117 [Verbose] > │ let struct (v298 : UH5, v299 : int32) = v289.l1, v289.l2 │
00:00:14 #1118 [Verbose] > │ let v300 : UH5 = UH5_1 │
00:00:14 #1119 [Verbose] > │ let v301 : UH5 = method23(v298, v300) │
00:00:14 #1120 [Verbose] > │ let v302 : (struct (int32 * int64) []) = method33(v301) │
00:00:14 #1121 [Verbose] > │ System.Console.WriteLine v2 │
00:00:14 #1122 [Verbose] > │ let v303 : string = "Average Ranking " │
00:00:14 #1123 [Verbose] > │ System.Console.WriteLine v303 │
00:00:14 #1124 [Verbose] > │ let v304 : (struct (int32 * int64) -> int64) = closure6() │
00:00:14 #1125 [Verbose] > │ let v305 : (struct (int32 * int64) []) = v302 |> Array.sortBy v304 │
00:00:14 #1126 [Verbose] > │ let v306 : uint64 = System.Convert.ToUInt64 v305.Length │
00:00:14 #1127 [Verbose] > │ let v307 : Mut0 = {l0 = 0UL} : Mut0 │
00:00:14 #1128 [Verbose] > │ while method4(v306, v307) do │
00:00:14 #1129 [Verbose] > │ let v309 : uint64 = v307.l0 │
00:00:14 #1130 [Verbose] > │ let struct (v310 : int32, v311 : int64) = v305.[int v309] │
00:00:14 #1131 [Verbose] > │ let v312 : string = $"Test case %d{v310 + 1}. Average Time: %A{v311} │
00:00:14 #1132 [Verbose] > │ " │
00:00:14 #1133 [Verbose] > │ System.Console.WriteLine v312 │
00:00:14 #1134 [Verbose] > │ let v313 : uint64 = v309 + 1UL │
00:00:14 #1135 [Verbose] > │ v307.l0 <- v313 │
00:00:14 #1136 [Verbose] > │ () │
00:00:14 #1137 [Verbose] > │ () │
00:00:14 #1138 [Verbose] > │ and method0 () : unit = │
00:00:14 #1139 [Verbose] > │ let v0 : (unit -> unit) = closure0() │
00:00:14 #1140 [Verbose] > │ let v1 : string = nameof v0 │
00:00:14 #1141 [Verbose] > │ let v2 : string = "" │
00:00:14 #1142 [Verbose] > │ System.Console.WriteLine v2 │
00:00:14 #1143 [Verbose] > │ System.Console.WriteLine v2 │
00:00:14 #1144 [Verbose] > │ let v3 : string = $"Test: {v1}" │
00:00:14 #1145 [Verbose] > │ System.Console.WriteLine v3 │
00:00:14 #1146 [Verbose] > │ let v4 : string = "a" │
00:00:14 #1147 [Verbose] > │ let v5 : string = "b" │
00:00:14 #1148 [Verbose] > │ let v6 : UH0 = UH0_1 │
00:00:14 #1149 [Verbose] > │ let v7 : UH0 = UH0_0(v5, v5, v5, v6) │
00:00:14 #1150 [Verbose] > │ let v8 : UH0 = UH0_0(v4, v4, v4, v7) │
00:00:14 #1151 [Verbose] > │ let v9 : (struct (string * string * string) []) = method1(v8) │
00:00:14 #1152 [Verbose] > │ let v10 : uint64 = System.Convert.ToUInt64 v9.Length │
00:00:14 #1153 [Verbose] > │ let v11 : (struct (string * string * string * (int64 [])) []) = │
00:00:14 #1154 [Verbose] > │ Array.zeroCreate<struct (string * string * string * (int64 []))> │
00:00:14 #1155 [Verbose] > │ (System.Convert.ToInt32(v10)) │
00:00:14 #1156 [Verbose] > │ let v12 : Mut0 = {l0 = 0UL} : Mut0 │
00:00:14 #1157 [Verbose] > │ while method4(v10, v12) do │
00:00:14 #1158 [Verbose] > │ let v14 : uint64 = v12.l0 │
00:00:14 #1159 [Verbose] > │ let struct (v15 : string, v16 : string, v17 : string) = v9.[int v14] │
00:00:14 #1160 [Verbose] > │ let v18 : string = $"%A{struct (v15, v16)}" │
00:00:14 #1161 [Verbose] > │ System.Console.WriteLine v2 │
00:00:14 #1162 [Verbose] > │ let v19 : string = $"Solution: {v18} " │
00:00:14 #1163 [Verbose] > │ System.Console.WriteLine v19 │
00:00:14 #1164 [Verbose] > │ let v20 : int32 = 0 │
00:00:14 #1165 [Verbose] > │ let v21 : string = "A" │
00:00:14 #1166 [Verbose] > │ let v22 : (struct (string * string) -> string) = closure1() │
00:00:14 #1167 [Verbose] > │ let v23 : int32 = 1 │
00:00:14 #1168 [Verbose] > │ let v24 : string = "B" │
00:00:14 #1169 [Verbose] > │ let v25 : (struct (string * string) -> string) = closure2() │
00:00:14 #1170 [Verbose] > │ let v26 : UH1 = UH1_1 │
00:00:14 #1171 [Verbose] > │ let v27 : UH1 = UH1_0(v23, v24, v25, v26) │
00:00:14 #1172 [Verbose] > │ let v28 : UH1 = UH1_0(v20, v21, v22, v27) │
00:00:14 #1173 [Verbose] > │ let v29 : (struct (int32 * string * (struct (string * string) -> │
00:00:14 #1174 [Verbose] > │ string)) []) = method5(v28) │
00:00:14 #1175 [Verbose] > │ let v30 : uint64 = System.Convert.ToUInt64 v29.Length │
00:00:14 #1176 [Verbose] > │ let v31 : (struct (string * int64) []) = Array.zeroCreate<struct │
00:00:14 #1177 [Verbose] > │ (string * int64)> (System.Convert.ToInt32(v30)) │
00:00:14 #1178 [Verbose] > │ let v32 : Mut0 = {l0 = 0UL} : Mut0 │
00:00:14 #1179 [Verbose] > │ while method4(v30, v32) do │
00:00:14 #1180 [Verbose] > │ let v34 : uint64 = v32.l0 │
00:00:14 #1181 [Verbose] > │ let struct (v35 : int32, v36 : string, v37 : (struct (string * │
00:00:14 #1182 [Verbose] > │ string) -> string)) = v29.[int v34] │
00:00:14 #1183 [Verbose] > │ let mutable result = None │
00:00:14 #1184 [Verbose] > │ #if FABLE_COMPILER_RUST │
00:00:14 #1185 [Verbose] > │ #if !WASM │
00:00:14 #1186 [Verbose] > │ () │
00:00:14 #1187 [Verbose] > │ #else │
00:00:14 #1188 [Verbose] > │ () │
00:00:14 #1189 [Verbose] > │ #endif │
00:00:14 #1190 [Verbose] > │ #else │
00:00:14 #1191 [Verbose] > │ System.GC.Collect () │
00:00:14 #1192 [Verbose] > │ () │
00:00:14 #1193 [Verbose] > │ #endif │
00:00:14 #1194 [Verbose] > │ |> fun x -> result <- Some x │
00:00:14 #1195 [Verbose] > │ result |> Option.get │
00:00:14 #1196 [Verbose] > │ let v38 : (unit -> System.Diagnostics.Stopwatch) = │
00:00:14 #1197 [Verbose] > │ System.Diagnostics.Stopwatch │
00:00:14 #1198 [Verbose] > │ let v39 : System.Diagnostics.Stopwatch = v38 () │
00:00:14 #1199 [Verbose] > │ v39.Start () │
00:00:14 #1200 [Verbose] > │ let v40 : int64 = v39.ElapsedMilliseconds │
00:00:14 #1201 [Verbose] > │ let v41 : (int32 []) = Array.zeroCreate<int32> (2000001) │
00:00:14 #1202 [Verbose] > │ let v42 : Mut1 = {l0 = 0} : Mut1 │
00:00:14 #1203 [Verbose] > │ while method8(v42) do │
00:00:14 #1204 [Verbose] > │ let v44 : int32 = v42.l0 │
00:00:14 #1205 [Verbose] > │ v41.[int v44] <- v44 │
00:00:14 #1206 [Verbose] > │ let v45 : int32 = v44 + 1 │
00:00:14 #1207 [Verbose] > │ v42.l0 <- v45 │
00:00:14 #1208 [Verbose] > │ () │
00:00:14 #1209 [Verbose] > │ let v46 : (int32 -> string) = closure3(v15, v16, v37) │
00:00:14 #1210 [Verbose] > │ let v47 : (string []) = v41 |> Array.Parallel.map v46 │
00:00:14 #1211 [Verbose] > │ let v48 : int32 = v47.Length │
00:00:14 #1212 [Verbose] > │ let v49 : int32 = v48 - 1 │
00:00:14 #1213 [Verbose] > │ let v50 : string = v47.[int v49] │
00:00:14 #1214 [Verbose] > │ let v51 : int64 = v39.ElapsedMilliseconds │
00:00:14 #1215 [Verbose] > │ let v52 : int64 = v51 - v40 │
00:00:14 #1216 [Verbose] > │ let v53 : string = $"Test case {v35 + 1}. {v36}. Time: {v52} " │
00:00:14 #1217 [Verbose] > │ System.Console.WriteLine v53 │
00:00:14 #1218 [Verbose] > │ v31.[int v34] <- struct (v50, v52) │
00:00:14 #1219 [Verbose] > │ let v54 : uint64 = v34 + 1UL │
00:00:14 #1220 [Verbose] > │ v32.l0 <- v54 │
00:00:14 #1221 [Verbose] > │ () │
00:00:14 #1222 [Verbose] > │ let v55 : uint64 = System.Convert.ToUInt64 v31.Length │
00:00:14 #1223 [Verbose] > │ let v56 : (string []) = Array.zeroCreate<string> │
00:00:14 #1224 [Verbose] > │ (System.Convert.ToInt32(v55)) │
00:00:14 #1225 [Verbose] > │ let v57 : Mut0 = {l0 = 0UL} : Mut0 │
00:00:14 #1226 [Verbose] > │ while method4(v55, v57) do │
00:00:14 #1227 [Verbose] > │ let v59 : uint64 = v57.l0 │
00:00:14 #1228 [Verbose] > │ let struct (v60 : string, v61 : int64) = v31.[int v59] │
00:00:14 #1229 [Verbose] > │ v56.[int v59] <- v60 │
00:00:14 #1230 [Verbose] > │ let v62 : uint64 = v59 + 1UL │
00:00:14 #1231 [Verbose] > │ v57.l0 <- v62 │
00:00:14 #1232 [Verbose] > │ () │
00:00:14 #1233 [Verbose] > │ let v63 : uint64 = System.Convert.ToUInt64 v56.Length │
00:00:14 #1234 [Verbose] > │ let v64 : bool = v63 <= 1UL │
00:00:14 #1235 [Verbose] > │ if v64 then │
00:00:14 #1236 [Verbose] > │ () │
00:00:14 #1237 [Verbose] > │ else │
00:00:14 #1238 [Verbose] > │ let v65 : string = v56.[int 0UL] │
00:00:14 #1239 [Verbose] > │ let v66 : uint64 = 0UL │
00:00:14 #1240 [Verbose] > │ let v67 : bool = method9(v65, v56, v66) │
00:00:14 #1241 [Verbose] > │ if v67 then │
00:00:14 #1242 [Verbose] > │ () │
00:00:14 #1243 [Verbose] > │ else │
00:00:14 #1244 [Verbose] > │ let v68 : string = $"Challenge error: {v56}" │
00:00:14 #1245 [Verbose] > │ failwith<unit> v68 │
00:00:14 #1246 [Verbose] > │ let v69 : string = $"%A{v17}" │
00:00:14 #1247 [Verbose] > │ let v70 : (string []) = Array.zeroCreate<string> │
00:00:14 #1248 [Verbose] > │ (System.Convert.ToInt32(v55)) │
00:00:14 #1249 [Verbose] > │ let v71 : Mut0 = {l0 = 0UL} : Mut0 │
00:00:14 #1250 [Verbose] > │ while method4(v55, v71) do │
00:00:14 #1251 [Verbose] > │ let v73 : uint64 = v71.l0 │
00:00:14 #1252 [Verbose] > │ let struct (v74 : string, v75 : int64) = v31.[int v73] │
00:00:14 #1253 [Verbose] > │ v70.[int v73] <- v74 │
00:00:14 #1254 [Verbose] > │ let v76 : uint64 = v73 + 1UL │
00:00:14 #1255 [Verbose] > │ v71.l0 <- v76 │
00:00:14 #1256 [Verbose] > │ () │
00:00:14 #1257 [Verbose] > │ let v77 : string = v70.[int 0UL] │
00:00:14 #1258 [Verbose] > │ let v78 : string = $"%A{v77}" │
00:00:14 #1259 [Verbose] > │ let v79 : (int64 []) = Array.zeroCreate<int64> │
00:00:14 #1260 [Verbose] > │ (System.Convert.ToInt32(v55)) │
00:00:14 #1261 [Verbose] > │ let v80 : Mut0 = {l0 = 0UL} : Mut0 │
00:00:14 #1262 [Verbose] > │ while method4(v55, v80) do │
00:00:14 #1263 [Verbose] > │ let v82 : uint64 = v80.l0 │
00:00:14 #1264 [Verbose] > │ let struct (v83 : string, v84 : int64) = v31.[int v82] │
00:00:14 #1265 [Verbose] > │ v79.[int v82] <- v84 │
00:00:14 #1266 [Verbose] > │ let v85 : uint64 = v82 + 1UL │
00:00:14 #1267 [Verbose] > │ v80.l0 <- v85 │
00:00:14 #1268 [Verbose] > │ () │
00:00:14 #1269 [Verbose] > │ v11.[int v14] <- struct (v69, v18, v78, v79) │
00:00:14 #1270 [Verbose] > │ let v86 : uint64 = v14 + 1UL │
00:00:14 #1271 [Verbose] > │ v12.l0 <- v86 │
00:00:14 #1272 [Verbose] > │ () │
00:00:14 #1273 [Verbose] > │ let v87 : uint64 = System.Convert.ToUInt64 v11.Length │
00:00:14 #1274 [Verbose] > │ let v88 : (struct (UH2 * US0) []) = Array.zeroCreate<struct (UH2 * US0)> │
00:00:14 #1275 [Verbose] > │ (System.Convert.ToInt32(v87)) │
00:00:14 #1276 [Verbose] > │ let v89 : Mut0 = {l0 = 0UL} : Mut0 │
00:00:14 #1277 [Verbose] > │ while method4(v87, v89) do │
00:00:14 #1278 [Verbose] > │ let v91 : uint64 = v89.l0 │
00:00:14 #1279 [Verbose] > │ let struct (v92 : string, v93 : string, v94 : string, v95 : (int64 [ │
00:00:14 #1280 [Verbose] > │ ])) = v11.[int v91] │
00:00:14 #1281 [Verbose] > │ let v96 : uint64 = System.Convert.ToUInt64 v95.Length │
00:00:14 #1282 [Verbose] > │ let v97 : UH3 = UH3_1 │
00:00:14 #1283 [Verbose] > │ let v98 : Mut2 = {l0 = 0UL; l1 = v97; l2 = 0L} : Mut2 │
00:00:14 #1284 [Verbose] > │ while method10(v96, v98) do │
00:00:14 #1285 [Verbose] > │ let v100 : uint64 = v98.l0 │
00:00:14 #1286 [Verbose] > │ let struct (v101 : UH3, v102 : int64) = v98.l1, v98.l2 │
00:00:14 #1287 [Verbose] > │ let v103 : int64 = v95.[int v100] │
00:00:14 #1288 [Verbose] > │ let v104 : int64 = v102 + 1L │
00:00:14 #1289 [Verbose] > │ let v105 : uint64 = v100 + 1UL │
00:00:14 #1290 [Verbose] > │ let v106 : UH3 = UH3_0(v102, v103, v101) │
00:00:14 #1291 [Verbose] > │ v98.l0 <- v105 │
00:00:14 #1292 [Verbose] > │ v98.l1 <- v106 │
00:00:14 #1293 [Verbose] > │ v98.l2 <- v104 │
00:00:14 #1294 [Verbose] > │ () │
00:00:14 #1295 [Verbose] > │ let struct (v107 : UH3, v108 : int64) = v98.l1, v98.l2 │
00:00:14 #1296 [Verbose] > │ let v109 : UH3 = UH3_1 │
00:00:14 #1297 [Verbose] > │ let v110 : UH3 = method11(v107, v109) │
00:00:14 #1298 [Verbose] > │ let v111 : (struct (int64 * int64) []) = method12(v110) │
00:00:14 #1299 [Verbose] > │ let v112 : int32 = v111.Length │
00:00:14 #1300 [Verbose] > │ let v113 : (struct (int64 * int64) []) = Array.zeroCreate<struct │
00:00:14 #1301 [Verbose] > │ (int64 * int64)> (v112) │
00:00:14 #1302 [Verbose] > │ let v114 : Mut1 = {l0 = 0} : Mut1 │
00:00:14 #1303 [Verbose] > │ while method15(v112, v114) do │
00:00:14 #1304 [Verbose] > │ let v116 : int32 = v114.l0 │
00:00:14 #1305 [Verbose] > │ let struct (v117 : int64, v118 : int64) = v111.[int v116] │
00:00:14 #1306 [Verbose] > │ let v119 : int64 = v117 + 1L │
00:00:14 #1307 [Verbose] > │ v113.[int v116] <- struct (v119, v118) │
00:00:14 #1308 [Verbose] > │ let v120 : int32 = v116 + 1 │
00:00:14 #1309 [Verbose] > │ v114.l0 <- v120 │
00:00:14 #1310 [Verbose] > │ () │
00:00:14 #1311 [Verbose] > │ let v121 : (struct (int64 * int64) -> int64) = closure4() │
00:00:14 #1312 [Verbose] > │ let v122 : (struct (int64 * int64) []) = v113 |> Array.sortBy v121 │
00:00:14 #1313 [Verbose] > │ let struct (v123 : int64, v124 : int64) = v122.[int 0] │
00:00:14 #1314 [Verbose] > │ let v125 : string = $"%A{struct (v123, v124)}" │
00:00:14 #1315 [Verbose] > │ let v126 : bool = v92 = v94 │
00:00:14 #1316 [Verbose] > │ let v131 : US0 = │
00:00:14 #1317 [Verbose] > │ if v126 then │
00:00:14 #1318 [Verbose] > │ let v127 : System.ConsoleColor = │
00:00:14 #1319 [Verbose] > │ System.ConsoleColor.DarkGreen │
00:00:14 #1320 [Verbose] > │ US0_1(v127) │
00:00:14 #1321 [Verbose] > │ else │
00:00:14 #1322 [Verbose] > │ let v129 : System.ConsoleColor = System.ConsoleColor.DarkRed │
00:00:14 #1323 [Verbose] > │ US0_1(v129) │
00:00:14 #1324 [Verbose] > │ let v132 : UH2 = UH2_1 │
00:00:14 #1325 [Verbose] > │ let v133 : UH2 = UH2_0(v125, v132) │
00:00:14 #1326 [Verbose] > │ let v134 : UH2 = UH2_0(v94, v133) │
00:00:14 #1327 [Verbose] > │ let v135 : UH2 = UH2_0(v92, v134) │
00:00:14 #1328 [Verbose] > │ let v136 : UH2 = UH2_0(v93, v135) │
00:00:14 #1329 [Verbose] > │ v88.[int v91] <- struct (v136, v131) │
00:00:14 #1330 [Verbose] > │ let v137 : uint64 = v91 + 1UL │
00:00:14 #1331 [Verbose] > │ v89.l0 <- v137 │
00:00:14 #1332 [Verbose] > │ () │
00:00:14 #1333 [Verbose] > │ let v138 : string = "Input" │
00:00:14 #1334 [Verbose] > │ let v139 : string = "Expected" │
00:00:14 #1335 [Verbose] > │ let v140 : string = "Result" │
00:00:14 #1336 [Verbose] > │ let v141 : string = "Best" │
00:00:14 #1337 [Verbose] > │ let v142 : UH2 = UH2_1 │
00:00:14 #1338 [Verbose] > │ let v143 : UH2 = UH2_0(v141, v142) │
00:00:14 #1339 [Verbose] > │ let v144 : UH2 = UH2_0(v140, v143) │
00:00:14 #1340 [Verbose] > │ let v145 : UH2 = UH2_0(v139, v144) │
00:00:14 #1341 [Verbose] > │ let v146 : UH2 = UH2_0(v138, v145) │
00:00:14 #1342 [Verbose] > │ let v147 : US0 = US0_0 │
00:00:14 #1343 [Verbose] > │ let v148 : string = "---" │
00:00:14 #1344 [Verbose] > │ let v149 : UH2 = UH2_1 │
00:00:14 #1345 [Verbose] > │ let v150 : UH2 = UH2_0(v148, v149) │
00:00:14 #1346 [Verbose] > │ let v151 : UH2 = UH2_0(v148, v150) │
00:00:14 #1347 [Verbose] > │ let v152 : UH2 = UH2_0(v148, v151) │
00:00:14 #1348 [Verbose] > │ let v153 : UH2 = UH2_0(v148, v152) │
00:00:14 #1349 [Verbose] > │ let v154 : US0 = US0_0 │
00:00:14 #1350 [Verbose] > │ let v155 : UH4 = UH4_1 │
00:00:14 #1351 [Verbose] > │ let v156 : UH4 = UH4_0(v153, v154, v155) │
00:00:14 #1352 [Verbose] > │ let v157 : UH4 = UH4_0(v146, v147, v156) │
00:00:14 #1353 [Verbose] > │ let v158 : (struct (UH2 * US0) []) = method16(v157) │
00:00:14 #1354 [Verbose] > │ let v159 : uint64 = System.Convert.ToUInt64 v158.Length │
00:00:14 #1355 [Verbose] > │ let v160 : uint64 = System.Convert.ToUInt64 v88.Length │
00:00:14 #1356 [Verbose] > │ let v161 : uint64 = v159 + v160 │
00:00:14 #1357 [Verbose] > │ let v162 : (struct (UH2 * US0) []) = Array.zeroCreate<struct (UH2 * │
00:00:14 #1358 [Verbose] > │ US0)> (System.Convert.ToInt32(v161)) │
00:00:14 #1359 [Verbose] > │ let v163 : Mut0 = {l0 = 0UL} : Mut0 │
00:00:14 #1360 [Verbose] > │ while method4(v161, v163) do │
00:00:14 #1361 [Verbose] > │ let v165 : uint64 = v163.l0 │
00:00:14 #1362 [Verbose] > │ let v166 : bool = v165 < v159 │
00:00:14 #1363 [Verbose] > │ let struct (v172 : UH2, v173 : US0) = │
00:00:14 #1364 [Verbose] > │ if v166 then │
00:00:14 #1365 [Verbose] > │ let struct (v167 : UH2, v168 : US0) = v158.[int v165] │
00:00:14 #1366 [Verbose] > │ struct (v167, v168) │
00:00:14 #1367 [Verbose] > │ else │
00:00:14 #1368 [Verbose] > │ let v169 : uint64 = v165 - v159 │
00:00:14 #1369 [Verbose] > │ let struct (v170 : UH2, v171 : US0) = v88.[int v169] │
00:00:14 #1370 [Verbose] > │ struct (v170, v171) │
00:00:14 #1371 [Verbose] > │ v162.[int v165] <- struct (v172, v173) │
00:00:14 #1372 [Verbose] > │ let v174 : uint64 = v165 + 1UL │
00:00:14 #1373 [Verbose] > │ v163.l0 <- v174 │
00:00:14 #1374 [Verbose] > │ () │
00:00:14 #1375 [Verbose] > │ let v175 : uint64 = System.Convert.ToUInt64 v162.Length │
00:00:14 #1376 [Verbose] > │ let v176 : ((string []) []) = Array.zeroCreate<(string [])> │
00:00:14 #1377 [Verbose] > │ (System.Convert.ToInt32(v175)) │
00:00:14 #1378 [Verbose] > │ let v177 : Mut0 = {l0 = 0UL} : Mut0 │
00:00:14 #1379 [Verbose] > │ while method4(v175, v177) do │
00:00:14 #1380 [Verbose] > │ let v179 : uint64 = v177.l0 │
00:00:14 #1381 [Verbose] > │ let struct (v180 : UH2, v181 : US0) = v162.[int v179] │
00:00:14 #1382 [Verbose] > │ let v182 : (string []) = method19(v180) │
00:00:14 #1383 [Verbose] > │ v176.[int v179] <- v182 │
00:00:14 #1384 [Verbose] > │ let v183 : uint64 = v179 + 1UL │
00:00:14 #1385 [Verbose] > │ v177.l0 <- v183 │
00:00:14 #1386 [Verbose] > │ () │
00:00:14 #1387 [Verbose] > │ let v184 : ((string []) []) = v176 |> Array.transpose │
00:00:14 #1388 [Verbose] > │ let v185 : uint64 = System.Convert.ToUInt64 v184.Length │
00:00:14 #1389 [Verbose] > │ let v186 : (int64 []) = Array.zeroCreate<int64> │
00:00:14 #1390 [Verbose] > │ (System.Convert.ToInt32(v185)) │
00:00:14 #1391 [Verbose] > │ let v187 : Mut0 = {l0 = 0UL} : Mut0 │
00:00:14 #1392 [Verbose] > │ while method4(v185, v187) do │
00:00:14 #1393 [Verbose] > │ let v189 : uint64 = v187.l0 │
00:00:14 #1394 [Verbose] > │ let v190 : (string []) = v184.[int v189] │
00:00:14 #1395 [Verbose] > │ let v191 : uint64 = System.Convert.ToUInt64 v190.Length │
00:00:14 #1396 [Verbose] > │ let v192 : (int64 []) = Array.zeroCreate<int64> │
00:00:14 #1397 [Verbose] > │ (System.Convert.ToInt32(v191)) │
00:00:14 #1398 [Verbose] > │ let v193 : Mut0 = {l0 = 0UL} : Mut0 │
00:00:14 #1399 [Verbose] > │ while method4(v191, v193) do │
00:00:14 #1400 [Verbose] > │ let v195 : uint64 = v193.l0 │
00:00:14 #1401 [Verbose] > │ let v196 : string = v190.[int v195] │
00:00:14 #1402 [Verbose] > │ let v197 : int64 = System.Convert.ToInt64 v196.Length │
00:00:14 #1403 [Verbose] > │ v192.[int v195] <- v197 │
00:00:14 #1404 [Verbose] > │ let v198 : uint64 = v195 + 1UL │
00:00:14 #1405 [Verbose] > │ v193.l0 <- v198 │
00:00:14 #1406 [Verbose] > │ () │
00:00:14 #1407 [Verbose] > │ let v199 : (int64 []) = v192 |> Array.sortDescending │
00:00:14 #1408 [Verbose] > │ let v200 : int64 option = v199 |> Array.tryItem 0 │
00:00:14 #1409 [Verbose] > │ let v201 : (int64 -> US1) = closure5() │
00:00:14 #1410 [Verbose] > │ let v202 : US1 = US1_0 │
00:00:14 #1411 [Verbose] > │ let v203 : US1 = v200 |> Option.map v201 |> Option.defaultValue v202 │
00:00:14 #1412 [Verbose] > │ let v206 : int64 = │
00:00:14 #1413 [Verbose] > │ match v203 with │
00:00:14 #1414 [Verbose] > │ | US1_0 -> (* None *) │
00:00:14 #1415 [Verbose] > │ 0L │
00:00:14 #1416 [Verbose] > │ | US1_1(v204) -> (* Some *) │
00:00:14 #1417 [Verbose] > │ v204 │
00:00:14 #1418 [Verbose] > │ v186.[int v189] <- v206 │
00:00:14 #1419 [Verbose] > │ let v207 : uint64 = v189 + 1UL │
00:00:14 #1420 [Verbose] > │ v187.l0 <- v207 │
00:00:14 #1421 [Verbose] > │ () │
00:00:14 #1422 [Verbose] > │ let v208 : uint64 = System.Convert.ToUInt64 v186.Length │
00:00:14 #1423 [Verbose] > │ let v209 : UH5 = UH5_1 │
00:00:14 #1424 [Verbose] > │ let v210 : Mut3 = {l0 = 0UL; l1 = v209; l2 = 0} : Mut3 │
00:00:14 #1425 [Verbose] > │ while method22(v208, v210) do │
00:00:14 #1426 [Verbose] > │ let v212 : uint64 = v210.l0 │
00:00:14 #1427 [Verbose] > │ let struct (v213 : UH5, v214 : int32) = v210.l1, v210.l2 │
00:00:14 #1428 [Verbose] > │ let v215 : int64 = v186.[int v212] │
00:00:14 #1429 [Verbose] > │ let v216 : int32 = v214 + 1 │
00:00:14 #1430 [Verbose] > │ let v217 : uint64 = v212 + 1UL │
00:00:14 #1431 [Verbose] > │ let v218 : UH5 = UH5_0(v214, v215, v213) │
00:00:14 #1432 [Verbose] > │ v210.l0 <- v217 │
00:00:14 #1433 [Verbose] > │ v210.l1 <- v218 │
00:00:14 #1434 [Verbose] > │ v210.l2 <- v216 │
00:00:14 #1435 [Verbose] > │ () │
00:00:14 #1436 [Verbose] > │ let struct (v219 : UH5, v220 : int32) = v210.l1, v210.l2 │
00:00:14 #1437 [Verbose] > │ let v221 : UH5 = UH5_1 │
00:00:14 #1438 [Verbose] > │ let v222 : UH5 = method23(v219, v221) │
00:00:14 #1439 [Verbose] > │ let v223 : (struct (int32 * int64) []) = method24(v222) │
00:00:14 #1440 [Verbose] > │ let v224 : Map<int32, int64> = v223 |> Array.map (fun (struct (a, b)) -> │
00:00:14 #1441 [Verbose] > │ a, b) |> Map.ofArray │
00:00:14 #1442 [Verbose] > │ let v225 : (struct ((string []) * US0) []) = Array.zeroCreate<struct │
00:00:14 #1443 [Verbose] > │ ((string []) * US0)> (System.Convert.ToInt32(v175)) │
00:00:14 #1444 [Verbose] > │ let v226 : Mut0 = {l0 = 0UL} : Mut0 │
00:00:14 #1445 [Verbose] > │ while method4(v175, v226) do │
00:00:14 #1446 [Verbose] > │ let v228 : uint64 = v226.l0 │
00:00:14 #1447 [Verbose] > │ let struct (v229 : UH2, v230 : US0) = v162.[int v228] │
00:00:14 #1448 [Verbose] > │ let v231 : UH6 = UH6_1 │
00:00:14 #1449 [Verbose] > │ let v232 : int32 = 0 │
00:00:14 #1450 [Verbose] > │ let struct (v233 : UH6, v234 : int32) = method27(v229, v231, v232) │
00:00:14 #1451 [Verbose] > │ let v235 : UH6 = UH6_1 │
00:00:14 #1452 [Verbose] > │ let v236 : UH6 = method28(v233, v235) │
00:00:14 #1453 [Verbose] > │ let v237 : UH2 = UH2_1 │
00:00:14 #1454 [Verbose] > │ let v238 : UH2 = method29(v224, v236, v237) │
00:00:14 #1455 [Verbose] > │ let v239 : (string []) = method30(v238) │
00:00:14 #1456 [Verbose] > │ v225.[int v228] <- struct (v239, v230) │
00:00:14 #1457 [Verbose] > │ let v240 : uint64 = v228 + 1UL │
00:00:14 #1458 [Verbose] > │ v226.l0 <- v240 │
00:00:14 #1459 [Verbose] > │ () │
00:00:14 #1460 [Verbose] > │ System.Console.WriteLine v2 │
00:00:14 #1461 [Verbose] > │ let v241 : uint64 = System.Convert.ToUInt64 v225.Length │
00:00:14 #1462 [Verbose] > │ let v242 : Mut0 = {l0 = 0UL} : Mut0 │
00:00:14 #1463 [Verbose] > │ while method4(v241, v242) do │
00:00:14 #1464 [Verbose] > │ let v244 : uint64 = v242.l0 │
00:00:14 #1465 [Verbose] > │ let struct (v245 : (string []), v246 : US0) = v225.[int v244] │
00:00:14 #1466 [Verbose] > │ match v246 with │
00:00:14 #1467 [Verbose] > │ | US0_0 -> (* None *) │
00:00:14 #1468 [Verbose] > │ let mutable result = None │
00:00:14 #1469 [Verbose] > │ #if FABLE_COMPILER_RUST │
00:00:14 #1470 [Verbose] > │ #if !WASM │
00:00:14 #1471 [Verbose] > │ () │
00:00:14 #1472 [Verbose] > │ #else │
00:00:14 #1473 [Verbose] > │ () │
00:00:14 #1474 [Verbose] > │ #endif │
00:00:14 #1475 [Verbose] > │ #else │
00:00:14 #1476 [Verbose] > │ System.Console.ResetColor () │
00:00:14 #1477 [Verbose] > │ () │
00:00:14 #1478 [Verbose] > │ #endif │
00:00:14 #1479 [Verbose] > │ |> fun x -> result <- Some x │
00:00:14 #1480 [Verbose] > │ result |> Option.get │
00:00:14 #1481 [Verbose] > │ () │
00:00:14 #1482 [Verbose] > │ | US0_1(v247) -> (* Some *) │
00:00:14 #1483 [Verbose] > │ let mutable result = None │
00:00:14 #1484 [Verbose] > │ #if FABLE_COMPILER_RUST │
00:00:14 #1485 [Verbose] > │ #if !WASM │
00:00:14 #1486 [Verbose] > │ () │
00:00:14 #1487 [Verbose] > │ #else │
00:00:14 #1488 [Verbose] > │ () │
00:00:14 #1489 [Verbose] > │ #endif │
00:00:14 #1490 [Verbose] > │ #else │
00:00:14 #1491 [Verbose] > │ System.Console.ForegroundColor <- v247 │
00:00:14 #1492 [Verbose] > │ () │
00:00:14 #1493 [Verbose] > │ #endif │
00:00:14 #1494 [Verbose] > │ |> fun x -> result <- Some x │
00:00:14 #1495 [Verbose] > │ result |> Option.get │
00:00:14 #1496 [Verbose] > │ () │
00:00:14 #1497 [Verbose] > │ let v248 : string = "\t| " │
00:00:14 #1498 [Verbose] > │ let v249 : string = System.String.Join (v248, v245) │
00:00:14 #1499 [Verbose] > │ System.Console.WriteLine v249 │
00:00:14 #1500 [Verbose] > │ let mutable result = None │
00:00:14 #1501 [Verbose] > │ #if FABLE_COMPILER_RUST │
00:00:14 #1502 [Verbose] > │ #if !WASM │
00:00:14 #1503 [Verbose] > │ () │
00:00:14 #1504 [Verbose] > │ #else │
00:00:14 #1505 [Verbose] > │ () │
00:00:14 #1506 [Verbose] > │ #endif │
00:00:14 #1507 [Verbose] > │ #else │
00:00:14 #1508 [Verbose] > │ System.Console.ResetColor () │
00:00:14 #1509 [Verbose] > │ () │
00:00:14 #1510 [Verbose] > │ #endif │
00:00:14 #1511 [Verbose] > │ |> fun x -> result <- Some x │
00:00:14 #1512 [Verbose] > │ result |> Option.get │
00:00:14 #1513 [Verbose] > │ let v250 : uint64 = v244 + 1UL │
00:00:14 #1514 [Verbose] > │ v242.l0 <- v250 │
00:00:14 #1515 [Verbose] > │ () │
00:00:14 #1516 [Verbose] > │ let v251 : ((float []) []) = Array.zeroCreate<(float [])> │
00:00:14 #1517 [Verbose] > │ (System.Convert.ToInt32(v87)) │
00:00:14 #1518 [Verbose] > │ let v252 : Mut0 = {l0 = 0UL} : Mut0 │
00:00:14 #1519 [Verbose] > │ while method4(v87, v252) do │
00:00:14 #1520 [Verbose] > │ let v254 : uint64 = v252.l0 │
00:00:14 #1521 [Verbose] > │ let struct (v255 : string, v256 : string, v257 : string, v258 : │
00:00:14 #1522 [Verbose] > │ (int64 [])) = v11.[int v254] │
00:00:14 #1523 [Verbose] > │ let v259 : (int64 -> float) = float │
00:00:14 #1524 [Verbose] > │ let v260 : uint64 = System.Convert.ToUInt64 v258.Length │
00:00:14 #1525 [Verbose] > │ let v261 : (float []) = Array.zeroCreate<float> │
00:00:14 #1526 [Verbose] > │ (System.Convert.ToInt32(v260)) │
00:00:14 #1527 [Verbose] > │ let v262 : Mut0 = {l0 = 0UL} : Mut0 │
00:00:14 #1528 [Verbose] > │ while method4(v260, v262) do │
00:00:14 #1529 [Verbose] > │ let v264 : uint64 = v262.l0 │
00:00:14 #1530 [Verbose] > │ let v265 : int64 = v258.[int v264] │
00:00:14 #1531 [Verbose] > │ let v266 : float = v259 v265 │
00:00:14 #1532 [Verbose] > │ v261.[int v264] <- v266 │
00:00:14 #1533 [Verbose] > │ let v267 : uint64 = v264 + 1UL │
00:00:14 #1534 [Verbose] > │ v262.l0 <- v267 │
00:00:14 #1535 [Verbose] > │ () │
00:00:14 #1536 [Verbose] > │ v251.[int v254] <- v261 │
00:00:14 #1537 [Verbose] > │ let v268 : uint64 = v254 + 1UL │
00:00:14 #1538 [Verbose] > │ v252.l0 <- v268 │
00:00:14 #1539 [Verbose] > │ () │
00:00:14 #1540 [Verbose] > │ let v269 : ((float []) []) = v251 |> Array.transpose │
00:00:14 #1541 [Verbose] > │ let v270 : uint64 = System.Convert.ToUInt64 v269.Length │
00:00:14 #1542 [Verbose] > │ let v271 : (float []) = Array.zeroCreate<float> │
00:00:14 #1543 [Verbose] > │ (System.Convert.ToInt32(v270)) │
00:00:14 #1544 [Verbose] > │ let v272 : Mut0 = {l0 = 0UL} : Mut0 │
00:00:14 #1545 [Verbose] > │ while method4(v270, v272) do │
00:00:14 #1546 [Verbose] > │ let v274 : uint64 = v272.l0 │
00:00:14 #1547 [Verbose] > │ let v275 : (float []) = v269.[int v274] │
00:00:14 #1548 [Verbose] > │ let v276 : float = v275 |> Array.average │
00:00:14 #1549 [Verbose] > │ v271.[int v274] <- v276 │
00:00:14 #1550 [Verbose] > │ let v277 : uint64 = v274 + 1UL │
00:00:14 #1551 [Verbose] > │ v272.l0 <- v277 │
00:00:14 #1552 [Verbose] > │ () │
00:00:14 #1553 [Verbose] > │ let v278 : (float -> int64) = int64 │
00:00:14 #1554 [Verbose] > │ let v279 : uint64 = System.Convert.ToUInt64 v271.Length │
00:00:14 #1555 [Verbose] > │ let v280 : (int64 []) = Array.zeroCreate<int64> │
00:00:14 #1556 [Verbose] > │ (System.Convert.ToInt32(v279)) │
00:00:14 #1557 [Verbose] > │ let v281 : Mut0 = {l0 = 0UL} : Mut0 │
00:00:14 #1558 [Verbose] > │ while method4(v279, v281) do │
00:00:14 #1559 [Verbose] > │ let v283 : uint64 = v281.l0 │
00:00:14 #1560 [Verbose] > │ let v284 : float = v271.[int v283] │
00:00:14 #1561 [Verbose] > │ let v285 : int64 = v278 v284 │
00:00:14 #1562 [Verbose] > │ v280.[int v283] <- v285 │
00:00:14 #1563 [Verbose] > │ let v286 : uint64 = v283 + 1UL │
00:00:14 #1564 [Verbose] > │ v281.l0 <- v286 │
00:00:14 #1565 [Verbose] > │ () │
00:00:14 #1566 [Verbose] > │ let v287 : uint64 = System.Convert.ToUInt64 v280.Length │
00:00:14 #1567 [Verbose] > │ let v288 : UH5 = UH5_1 │
00:00:14 #1568 [Verbose] > │ let v289 : Mut3 = {l0 = 0UL; l1 = v288; l2 = 0} : Mut3 │
00:00:14 #1569 [Verbose] > │ while method22(v287, v289) do │
00:00:14 #1570 [Verbose] > │ let v291 : uint64 = v289.l0 │
00:00:14 #1571 [Verbose] > │ let struct (v292 : UH5, v293 : int32) = v289.l1, v289.l2 │
00:00:14 #1572 [Verbose] > │ let v294 : int64 = v280.[int v291] │
00:00:14 #1573 [Verbose] > │ let v295 : int32 = v293 + 1 │
00:00:14 #1574 [Verbose] > │ let v296 : uint64 = v291 + 1UL │
00:00:14 #1575 [Verbose] > │ let v297 : UH5 = UH5_0(v293, v294, v292) │
00:00:14 #1576 [Verbose] > │ v289.l0 <- v296 │
00:00:14 #1577 [Verbose] > │ v289.l1 <- v297 │
00:00:14 #1578 [Verbose] > │ v289.l2 <- v295 │
00:00:14 #1579 [Verbose] > │ () │
00:00:14 #1580 [Verbose] > │ let struct (v298 : UH5, v299 : int32) = v289.l1, v289.l2 │
00:00:14 #1581 [Verbose] > │ let v300 : UH5 = UH5_1 │
00:00:14 #1582 [Verbose] > │ let v301 : UH5 = method23(v298, v300) │
00:00:14 #1583 [Verbose] > │ let v302 : (struct (int32 * int64) []) = method33(v301) │
00:00:14 #1584 [Verbose] > │ System.Console.WriteLine v2 │
00:00:14 #1585 [Verbose] > │ let v303 : string = "Average Ranking " │
00:00:14 #1586 [Verbose] > │ System.Console.WriteLine v303 │
00:00:14 #1587 [Verbose] > │ let v304 : (struct (int32 * int64) -> int64) = closure6() │
00:00:14 #1588 [Verbose] > │ let v305 : (struct (int32 * int64) []) = v302 |> Array.sortBy v304 │
00:00:14 #1589 [Verbose] > │ let v306 : uint64 = System.Convert.ToUInt64 v305.Length │
00:00:14 #1590 [Verbose] > │ let v307 : Mut0 = {l0 = 0UL} : Mut0 │
00:00:14 #1591 [Verbose] > │ while method4(v306, v307) do │
00:00:14 #1592 [Verbose] > │ let v309 : uint64 = v307.l0 │
00:00:14 #1593 [Verbose] > │ let struct (v310 : int32, v311 : int64) = v305.[int v309] │
00:00:14 #1594 [Verbose] > │ let v312 : string = $"Test case %d{v310 + 1}. Average Time: %A{v311} │
00:00:14 #1595 [Verbose] > │ " │
00:00:14 #1596 [Verbose] > │ System.Console.WriteLine v312 │
00:00:14 #1597 [Verbose] > │ let v313 : uint64 = v309 + 1UL │
00:00:14 #1598 [Verbose] > │ v307.l0 <- v313 │
00:00:14 #1599 [Verbose] > │ () │
00:00:14 #1600 [Verbose] > │ () │
00:00:14 #1601 [Verbose] > │ method0() │
00:00:14 #1602 [Verbose] > │ │
00:00:14 #1603 [Verbose] > │ │
00:00:14 #1604 [Verbose] > │ │
00:00:14 #1605 [Verbose] > │ Test: v0 │
00:00:14 #1606 [Verbose] > │ │
00:00:14 #1607 [Verbose] > │ Solution: struct ("a", "a") │
00:00:14 #1608 [Verbose] > │ Test case 1. A. Time: 23 │
00:00:14 #1609 [Verbose] > │ Test case 2. B. Time: 12 │
00:00:14 #1610 [Verbose] > │ │
00:00:14 #1611 [Verbose] > │ Solution: struct ("b", "b") │
00:00:14 #1612 [Verbose] > │ Test case 1. A. Time: 12 │
00:00:14 #1613 [Verbose] > │ Test case 2. B. Time: 13 │
00:00:14 #1614 [Verbose] > │ │
00:00:14 #1615 [Verbose] > │ Input | Expected | Result | Best │
00:00:14 #1616 [Verbose] > │ --- | --- | --- | --- │
00:00:14 #1617 [Verbose] > │ struct ("a", "a") | "a" | "a" | struct (2L, 12L) │
00:00:14 #1618 [Verbose] > │ struct ("b", "b") | "b" | "b" | struct (1L, 12L) │
00:00:14 #1619 [Verbose] > │ │
00:00:14 #1620 [Verbose] > │ Average Ranking │
00:00:14 #1621 [Verbose] > │ Test case 2. Average Time: 12L │
00:00:14 #1622 [Verbose] > │ Test case 1. Average Time: 17L │
00:00:14 #1623 [Verbose] > │ │
00:00:14 #1624 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:14 #1625 [Verbose] >
00:00:14 #1626 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:14 #1627 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:14 #1628 [Verbose] > │ ## emptyTests │
00:00:14 #1629 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:14 #1630 [Verbose] >
00:00:14 #1631 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:14 #1632 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:14 #1633 [Verbose] > │ Test: Empty │
00:00:14 #1634 [Verbose] > │ │
00:00:14 #1635 [Verbose] > │ Solution: 0 │
00:00:14 #1636 [Verbose] > │ Test case 1. A. Time: 61L │
00:00:14 #1637 [Verbose] > │ │
00:00:14 #1638 [Verbose] > │ Solution: 2 │
00:00:14 #1639 [Verbose] > │ Test case 1. A. Time: 62L │
00:00:14 #1640 [Verbose] > │ │
00:00:14 #1641 [Verbose] > │ Solution: 5 │
00:00:14 #1642 [Verbose] > │ Test case 1. A. Time: 70L │
00:00:14 #1643 [Verbose] > │ │
00:00:14 #1644 [Verbose] > │ Input | Expected | Result | Best │
00:00:14 #1645 [Verbose] > │ --- | --- | --- | --- │
00:00:14 #1646 [Verbose] > │ 0 | 0 | 0 | (1, 61) │
00:00:14 #1647 [Verbose] > │ 2 | 2 | 2 | (1, 62) │
00:00:14 #1648 [Verbose] > │ 5 | 5 | 5 | (1, 70) │
00:00:14 #1649 [Verbose] > │ │
00:00:14 #1650 [Verbose] > │ Averages │
00:00:14 #1651 [Verbose] > │ Test case 1. Average Time: 64L │
00:00:14 #1652 [Verbose] > │ │
00:00:14 #1653 [Verbose] > │ Ranking │
00:00:14 #1654 [Verbose] > │ Test case 1. Average Time: 64L │
00:00:14 #1655 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:14 #1656 [Verbose] >
00:00:14 #1657 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:14 #1658 [Verbose] > // // test
00:00:14 #1659 [Verbose] >
00:00:14 #1660 [Verbose] > inl get_solutions () =
00:00:14 #1661 [Verbose] > [[
00:00:14 #1662 [Verbose] > "A",
00:00:14 #1663 [Verbose] > fun n =>
00:00:14 #1664 [Verbose] > n + 1f64
00:00:14 #1665 [Verbose] > ]]
00:00:14 #1666 [Verbose] >
00:00:14 #1667 [Verbose] > inl rec empty_1_tests () =
00:00:14 #1668 [Verbose] > inl test_cases = [[
00:00:14 #1669 [Verbose] > 0, 1
00:00:14 #1670 [Verbose] > 2, 3
00:00:14 #1671 [Verbose] > 5, 6
00:00:14 #1672 [Verbose] > ]]
00:00:14 #1673 [Verbose] >
00:00:14 #1674 [Verbose] > inl solutions = get_solutions ()
00:00:14 #1675 [Verbose] >
00:00:14 #1676 [Verbose] > // inl is_fast () = true
00:00:14 #1677 [Verbose] >
00:00:14 #1678 [Verbose] > inl count =
00:00:14 #1679 [Verbose] > if is_fast ()
00:00:14 #1680 [Verbose] > then 1000i32
00:00:14 #1681 [Verbose] > else 2000000i32
00:00:14 #1682 [Verbose] >
00:00:14 #1683 [Verbose] > run_all (nameof empty_1_tests) count solutions test_cases
00:00:14 #1684 [Verbose] > |> sort_result_list
00:00:14 #1685 [Verbose] >
00:00:14 #1686 [Verbose] > empty_1_tests ()
00:00:14 #1687 [Verbose] > Building /tmp/!dotnet-repl/20240320-1228-3209-0941-006d2a956db4/main.spi
00:00:17 #1688 [Verbose] >
00:00:17 #1689 [Verbose] > ╭─[ 3.38s - stdout ]───────────────────────────────────────────────────────────╮
00:00:17 #1690 [Verbose] > │ type UH0 = │
00:00:17 #1691 [Verbose] > │ | UH0_0 of float * float * UH0 │
00:00:17 #1692 [Verbose] > │ | UH0_1 │
00:00:17 #1693 [Verbose] > │ and Mut0 = {mutable l0 : uint64} │
00:00:17 #1694 [Verbose] > │ and UH1 = │
00:00:17 #1695 [Verbose] > │ | UH1_0 of int32 * string * (float -> float) * UH1 │
00:00:17 #1696 [Verbose] > │ | UH1_1 │
00:00:17 #1697 [Verbose] > │ and Mut1 = {mutable l0 : int32} │
00:00:17 #1698 [Verbose] > │ and UH2 = │
00:00:17 #1699 [Verbose] > │ | UH2_0 of string * UH2 │
00:00:17 #1700 [Verbose] > │ | UH2_1 │
00:00:17 #1701 [Verbose] > │ and [<Struct>] US0 = │
00:00:17 #1702 [Verbose] > │ | US0_0 │
00:00:17 #1703 [Verbose] > │ | US0_1 of f1_0 : System.ConsoleColor │
00:00:17 #1704 [Verbose] > │ and UH3 = │
00:00:17 #1705 [Verbose] > │ | UH3_0 of int64 * int64 * UH3 │
00:00:17 #1706 [Verbose] > │ | UH3_1 │
00:00:17 #1707 [Verbose] > │ and Mut2 = {mutable l0 : uint64; mutable l1 : UH3; mutable l2 : int64} │
00:00:17 #1708 [Verbose] > │ and UH4 = │
00:00:17 #1709 [Verbose] > │ | UH4_0 of UH2 * US0 * UH4 │
00:00:17 #1710 [Verbose] > │ | UH4_1 │
00:00:17 #1711 [Verbose] > │ and [<Struct>] US1 = │
00:00:17 #1712 [Verbose] > │ | US1_0 │
00:00:17 #1713 [Verbose] > │ | US1_1 of f1_0 : int64 │
00:00:17 #1714 [Verbose] > │ and UH5 = │
00:00:17 #1715 [Verbose] > │ | UH5_0 of int32 * int64 * UH5 │
00:00:17 #1716 [Verbose] > │ | UH5_1 │
00:00:17 #1717 [Verbose] > │ and Mut3 = {mutable l0 : uint64; mutable l1 : UH5; mutable l2 : int32} │
00:00:17 #1718 [Verbose] > │ and UH6 = │
00:00:17 #1719 [Verbose] > │ | UH6_0 of int32 * string * UH6 │
00:00:17 #1720 [Verbose] > │ | UH6_1 │
00:00:17 #1721 [Verbose] > │ let rec method2 (v0 : UH0, v1 : uint64) : uint64 = │
00:00:17 #1722 [Verbose] > │ match v0 with │
00:00:17 #1723 [Verbose] > │ | UH0_0(v2, v3, v4) -> (* Cons *) │
00:00:17 #1724 [Verbose] > │ let v5 : uint64 = v1 + 1UL │
00:00:17 #1725 [Verbose] > │ method2(v4, v5) │
00:00:17 #1726 [Verbose] > │ | UH0_1 -> (* Nil *) │
00:00:17 #1727 [Verbose] > │ v1 │
00:00:17 #1728 [Verbose] > │ and method3 (v0 : (struct (float * float) []), v1 : UH0, v2 : uint64) : │
00:00:17 #1729 [Verbose] > │ uint64 = │
00:00:17 #1730 [Verbose] > │ match v1 with │
00:00:17 #1731 [Verbose] > │ | UH0_0(v3, v4, v5) -> (* Cons *) │
00:00:17 #1732 [Verbose] > │ v0.[int v2] <- struct (v3, v4) │
00:00:17 #1733 [Verbose] > │ let v6 : uint64 = v2 + 1UL │
00:00:17 #1734 [Verbose] > │ method3(v0, v5, v6) │
00:00:17 #1735 [Verbose] > │ | UH0_1 -> (* Nil *) │
00:00:17 #1736 [Verbose] > │ v2 │
00:00:17 #1737 [Verbose] > │ and method1 (v0 : UH0) : (struct (float * float) []) = │
00:00:17 #1738 [Verbose] > │ let v1 : uint64 = 0UL │
00:00:17 #1739 [Verbose] > │ let v2 : uint64 = method2(v0, v1) │
00:00:17 #1740 [Verbose] > │ let v3 : (struct (float * float) []) = Array.zeroCreate<struct (float * │
00:00:17 #1741 [Verbose] > │ float)> (System.Convert.ToInt32(v2)) │
00:00:17 #1742 [Verbose] > │ let v4 : uint64 = 0UL │
00:00:17 #1743 [Verbose] > │ let v5 : uint64 = method3(v3, v0, v4) │
00:00:17 #1744 [Verbose] > │ v3 │
00:00:17 #1745 [Verbose] > │ and method4 (v0 : uint64, v1 : Mut0) : bool = │
00:00:17 #1746 [Verbose] > │ let v2 : uint64 = v1.l0 │
00:00:17 #1747 [Verbose] > │ let v3 : bool = v2 < v0 │
00:00:17 #1748 [Verbose] > │ v3 │
00:00:17 #1749 [Verbose] > │ and closure1 () (v0 : float) : float = │
00:00:17 #1750 [Verbose] > │ let v1 : float = v0 + 1.0 │
00:00:17 #1751 [Verbose] > │ v1 │
00:00:17 #1752 [Verbose] > │ and method6 (v0 : UH1, v1 : uint64) : uint64 = │
00:00:17 #1753 [Verbose] > │ match v0 with │
00:00:17 #1754 [Verbose] > │ | UH1_0(v2, v3, v4, v5) -> (* Cons *) │
00:00:17 #1755 [Verbose] > │ let v6 : uint64 = v1 + 1UL │
00:00:17 #1756 [Verbose] > │ method6(v5, v6) │
00:00:17 #1757 [Verbose] > │ | UH1_1 -> (* Nil *) │
00:00:17 #1758 [Verbose] > │ v1 │
00:00:17 #1759 [Verbose] > │ and method7 (v0 : (struct (int32 * string * (float -> float)) []), v1 : UH1, │
00:00:17 #1760 [Verbose] > │ v2 : uint64) : uint64 = │
00:00:17 #1761 [Verbose] > │ match v1 with │
00:00:17 #1762 [Verbose] > │ | UH1_0(v3, v4, v5, v6) -> (* Cons *) │
00:00:17 #1763 [Verbose] > │ v0.[int v2] <- struct (v3, v4, v5) │
00:00:17 #1764 [Verbose] > │ let v7 : uint64 = v2 + 1UL │
00:00:17 #1765 [Verbose] > │ method7(v0, v6, v7) │
00:00:17 #1766 [Verbose] > │ | UH1_1 -> (* Nil *) │
00:00:17 #1767 [Verbose] > │ v2 │
00:00:17 #1768 [Verbose] > │ and method5 (v0 : UH1) : (struct (int32 * string * (float -> float)) []) = │
00:00:17 #1769 [Verbose] > │ let v1 : uint64 = 0UL │
00:00:17 #1770 [Verbose] > │ let v2 : uint64 = method6(v0, v1) │
00:00:17 #1771 [Verbose] > │ let v3 : (struct (int32 * string * (float -> float)) []) = │
00:00:17 #1772 [Verbose] > │ Array.zeroCreate<struct (int32 * string * (float -> float))> │
00:00:17 #1773 [Verbose] > │ (System.Convert.ToInt32(v2)) │
00:00:17 #1774 [Verbose] > │ let v4 : uint64 = 0UL │
00:00:17 #1775 [Verbose] > │ let v5 : uint64 = method7(v3, v0, v4) │
00:00:17 #1776 [Verbose] > │ v3 │
00:00:17 #1777 [Verbose] > │ and method8 (v0 : Mut1) : bool = │
00:00:17 #1778 [Verbose] > │ let v1 : int32 = v0.l0 │
00:00:17 #1779 [Verbose] > │ let v2 : bool = v1 < 2000001 │
00:00:17 #1780 [Verbose] > │ v2 │
00:00:17 #1781 [Verbose] > │ and closure2 (v0 : float, v1 : (float -> float)) (v2 : int32) : float = │
00:00:17 #1782 [Verbose] > │ v1 v0 │
00:00:17 #1783 [Verbose] > │ and method9 (v0 : float, v1 : (float []), v2 : uint64) : bool = │
00:00:17 #1784 [Verbose] > │ let v3 : uint64 = System.Convert.ToUInt64 v1.Length │
00:00:17 #1785 [Verbose] > │ let v4 : bool = v2 < v3 │
00:00:17 #1786 [Verbose] > │ if v4 then │
00:00:17 #1787 [Verbose] > │ let v5 : float = v1.[int v2] │
00:00:17 #1788 [Verbose] > │ let v6 : bool = v0 = v5 │
00:00:17 #1789 [Verbose] > │ if v6 then │
00:00:17 #1790 [Verbose] > │ let v7 : uint64 = v2 + 1UL │
00:00:17 #1791 [Verbose] > │ method9(v0, v1, v7) │
00:00:17 #1792 [Verbose] > │ else │
00:00:17 #1793 [Verbose] > │ false │
00:00:17 #1794 [Verbose] > │ else │
00:00:17 #1795 [Verbose] > │ true │
00:00:17 #1796 [Verbose] > │ and method10 (v0 : uint64, v1 : Mut2) : bool = │
00:00:17 #1797 [Verbose] > │ let v2 : uint64 = v1.l0 │
00:00:17 #1798 [Verbose] > │ let v3 : bool = v2 < v0 │
00:00:17 #1799 [Verbose] > │ v3 │
00:00:17 #1800 [Verbose] > │ and method11 (v0 : UH3, v1 : UH3) : UH3 = │
00:00:17 #1801 [Verbose] > │ match v0 with │
00:00:17 #1802 [Verbose] > │ | UH3_0(v2, v3, v4) -> (* Cons *) │
00:00:17 #1803 [Verbose] > │ let v5 : UH3 = UH3_0(v2, v3, v1) │
00:00:17 #1804 [Verbose] > │ method11(v4, v5) │
00:00:17 #1805 [Verbose] > │ | UH3_1 -> (* Nil *) │
00:00:17 #1806 [Verbose] > │ v1 │
00:00:17 #1807 [Verbose] > │ and method13 (v0 : UH3, v1 : int32) : int32 = │
00:00:17 #1808 [Verbose] > │ match v0 with │
00:00:17 #1809 [Verbose] > │ | UH3_0(v2, v3, v4) -> (* Cons *) │
00:00:17 #1810 [Verbose] > │ let v5 : int32 = v1 + 1 │
00:00:17 #1811 [Verbose] > │ method13(v4, v5) │
00:00:17 #1812 [Verbose] > │ | UH3_1 -> (* Nil *) │
00:00:17 #1813 [Verbose] > │ v1 │
00:00:17 #1814 [Verbose] > │ and method14 (v0 : (struct (int64 * int64) []), v1 : UH3, v2 : int32) : │
00:00:17 #1815 [Verbose] > │ int32 = │
00:00:17 #1816 [Verbose] > │ match v1 with │
00:00:17 #1817 [Verbose] > │ | UH3_0(v3, v4, v5) -> (* Cons *) │
00:00:17 #1818 [Verbose] > │ v0.[int v2] <- struct (v3, v4) │
00:00:17 #1819 [Verbose] > │ let v6 : int32 = v2 + 1 │
00:00:17 #1820 [Verbose] > │ method14(v0, v5, v6) │
00:00:17 #1821 [Verbose] > │ | UH3_1 -> (* Nil *) │
00:00:17 #1822 [Verbose] > │ v2 │
00:00:17 #1823 [Verbose] > │ and method12 (v0 : UH3) : (struct (int64 * int64) []) = │
00:00:17 #1824 [Verbose] > │ let v1 : int32 = 0 │
00:00:17 #1825 [Verbose] > │ let v2 : int32 = method13(v0, v1) │
00:00:17 #1826 [Verbose] > │ let v3 : (struct (int64 * int64) []) = Array.zeroCreate<struct (int64 * │
00:00:17 #1827 [Verbose] > │ int64)> (v2) │
00:00:17 #1828 [Verbose] > │ let v4 : int32 = 0 │
00:00:17 #1829 [Verbose] > │ let v5 : int32 = method14(v3, v0, v4) │
00:00:17 #1830 [Verbose] > │ v3 │
00:00:17 #1831 [Verbose] > │ and method15 (v0 : int32, v1 : Mut1) : bool = │
00:00:17 #1832 [Verbose] > │ let v2 : int32 = v1.l0 │
00:00:17 #1833 [Verbose] > │ let v3 : bool = v2 < v0 │
00:00:17 #1834 [Verbose] > │ v3 │
00:00:17 #1835 [Verbose] > │ and closure3 () struct (v0 : int64, v1 : int64) : int64 = │
00:00:17 #1836 [Verbose] > │ v1 │
00:00:17 #1837 [Verbose] > │ and method17 (v0 : UH4, v1 : uint64) : uint64 = │
00:00:17 #1838 [Verbose] > │ match v0 with │
00:00:17 #1839 [Verbose] > │ | UH4_0(v2, v3, v4) -> (* Cons *) │
00:00:17 #1840 [Verbose] > │ let v5 : uint64 = v1 + 1UL │
00:00:17 #1841 [Verbose] > │ method17(v4, v5) │
00:00:17 #1842 [Verbose] > │ | UH4_1 -> (* Nil *) │
00:00:17 #1843 [Verbose] > │ v1 │
00:00:17 #1844 [Verbose] > │ and method18 (v0 : (struct (UH2 * US0) []), v1 : UH4, v2 : uint64) : uint64 │
00:00:17 #1845 [Verbose] > │ = │
00:00:17 #1846 [Verbose] > │ match v1 with │
00:00:17 #1847 [Verbose] > │ | UH4_0(v3, v4, v5) -> (* Cons *) │
00:00:17 #1848 [Verbose] > │ v0.[int v2] <- struct (v3, v4) │
00:00:17 #1849 [Verbose] > │ let v6 : uint64 = v2 + 1UL │
00:00:17 #1850 [Verbose] > │ method18(v0, v5, v6) │
00:00:17 #1851 [Verbose] > │ | UH4_1 -> (* Nil *) │
00:00:17 #1852 [Verbose] > │ v2 │
00:00:17 #1853 [Verbose] > │ and method16 (v0 : UH4) : (struct (UH2 * US0) []) = │
00:00:17 #1854 [Verbose] > │ let v1 : uint64 = 0UL │
00:00:17 #1855 [Verbose] > │ let v2 : uint64 = method17(v0, v1) │
00:00:17 #1856 [Verbose] > │ let v3 : (struct (UH2 * US0) []) = Array.zeroCreate<struct (UH2 * US0)> │
00:00:17 #1857 [Verbose] > │ (System.Convert.ToInt32(v2)) │
00:00:17 #1858 [Verbose] > │ let v4 : uint64 = 0UL │
00:00:17 #1859 [Verbose] > │ let v5 : uint64 = method18(v3, v0, v4) │
00:00:17 #1860 [Verbose] > │ v3 │
00:00:17 #1861 [Verbose] > │ and method20 (v0 : UH2, v1 : uint64) : uint64 = │
00:00:17 #1862 [Verbose] > │ match v0 with │
00:00:17 #1863 [Verbose] > │ | UH2_0(v2, v3) -> (* Cons *) │
00:00:17 #1864 [Verbose] > │ let v4 : uint64 = v1 + 1UL │
00:00:17 #1865 [Verbose] > │ method20(v3, v4) │
00:00:17 #1866 [Verbose] > │ | UH2_1 -> (* Nil *) │
00:00:17 #1867 [Verbose] > │ v1 │
00:00:17 #1868 [Verbose] > │ and method21 (v0 : (string []), v1 : UH2, v2 : uint64) : uint64 = │
00:00:17 #1869 [Verbose] > │ match v1 with │
00:00:17 #1870 [Verbose] > │ | UH2_0(v3, v4) -> (* Cons *) │
00:00:17 #1871 [Verbose] > │ v0.[int v2] <- v3 │
00:00:17 #1872 [Verbose] > │ let v5 : uint64 = v2 + 1UL │
00:00:17 #1873 [Verbose] > │ method21(v0, v4, v5) │
00:00:17 #1874 [Verbose] > │ | UH2_1 -> (* Nil *) │
00:00:17 #1875 [Verbose] > │ v2 │
00:00:17 #1876 [Verbose] > │ and method19 (v0 : UH2) : (string []) = │
00:00:17 #1877 [Verbose] > │ let v1 : uint64 = 0UL │
00:00:17 #1878 [Verbose] > │ let v2 : uint64 = method20(v0, v1) │
00:00:17 #1879 [Verbose] > │ let v3 : (string []) = Array.zeroCreate<string> │
00:00:17 #1880 [Verbose] > │ (System.Convert.ToInt32(v2)) │
00:00:17 #1881 [Verbose] > │ let v4 : uint64 = 0UL │
00:00:17 #1882 [Verbose] > │ let v5 : uint64 = method21(v3, v0, v4) │
00:00:17 #1883 [Verbose] > │ v3 │
00:00:17 #1884 [Verbose] > │ and closure4 () (v0 : int64) : US1 = │
00:00:17 #1885 [Verbose] > │ US1_1(v0) │
00:00:17 #1886 [Verbose] > │ and method22 (v0 : uint64, v1 : Mut3) : bool = │
00:00:17 #1887 [Verbose] > │ let v2 : uint64 = v1.l0 │
00:00:17 #1888 [Verbose] > │ let v3 : bool = v2 < v0 │
00:00:17 #1889 [Verbose] > │ v3 │
00:00:17 #1890 [Verbose] > │ and method23 (v0 : UH5, v1 : UH5) : UH5 = │
00:00:17 #1891 [Verbose] > │ match v0 with │
00:00:17 #1892 [Verbose] > │ | UH5_0(v2, v3, v4) -> (* Cons *) │
00:00:17 #1893 [Verbose] > │ let v5 : UH5 = UH5_0(v2, v3, v1) │
00:00:17 #1894 [Verbose] > │ method23(v4, v5) │
00:00:17 #1895 [Verbose] > │ | UH5_1 -> (* Nil *) │
00:00:17 #1896 [Verbose] > │ v1 │
00:00:17 #1897 [Verbose] > │ and method25 (v0 : UH5, v1 : int32) : int32 = │
00:00:17 #1898 [Verbose] > │ match v0 with │
00:00:17 #1899 [Verbose] > │ | UH5_0(v2, v3, v4) -> (* Cons *) │
00:00:17 #1900 [Verbose] > │ let v5 : int32 = v1 + 1 │
00:00:17 #1901 [Verbose] > │ method25(v4, v5) │
00:00:17 #1902 [Verbose] > │ | UH5_1 -> (* Nil *) │
00:00:17 #1903 [Verbose] > │ v1 │
00:00:17 #1904 [Verbose] > │ and method26 (v0 : (struct (int32 * int64) []), v1 : UH5, v2 : int32) : │
00:00:17 #1905 [Verbose] > │ int32 = │
00:00:17 #1906 [Verbose] > │ match v1 with │
00:00:17 #1907 [Verbose] > │ | UH5_0(v3, v4, v5) -> (* Cons *) │
00:00:17 #1908 [Verbose] > │ v0.[int v2] <- struct (v3, v4) │
00:00:17 #1909 [Verbose] > │ let v6 : int32 = v2 + 1 │
00:00:17 #1910 [Verbose] > │ method26(v0, v5, v6) │
00:00:17 #1911 [Verbose] > │ | UH5_1 -> (* Nil *) │
00:00:17 #1912 [Verbose] > │ v2 │
00:00:17 #1913 [Verbose] > │ and method24 (v0 : UH5) : (struct (int32 * int64) []) = │
00:00:17 #1914 [Verbose] > │ let v1 : int32 = 0 │
00:00:17 #1915 [Verbose] > │ let v2 : int32 = method25(v0, v1) │
00:00:17 #1916 [Verbose] > │ let v3 : (struct (int32 * int64) []) = Array.zeroCreate<struct (int32 * │
00:00:17 #1917 [Verbose] > │ int64)> (v2) │
00:00:17 #1918 [Verbose] > │ let v4 : int32 = 0 │
00:00:17 #1919 [Verbose] > │ let v5 : int32 = method26(v3, v0, v4) │
00:00:17 #1920 [Verbose] > │ v3 │
00:00:17 #1921 [Verbose] > │ and method27 (v0 : UH2, v1 : UH6, v2 : int32) : struct (UH6 * int32) = │
00:00:17 #1922 [Verbose] > │ match v0 with │
00:00:17 #1923 [Verbose] > │ | UH2_0(v3, v4) -> (* Cons *) │
00:00:17 #1924 [Verbose] > │ let v5 : int32 = v2 + 1 │
00:00:17 #1925 [Verbose] > │ let v6 : UH6 = UH6_0(v2, v3, v1) │
00:00:17 #1926 [Verbose] > │ method27(v4, v6, v5) │
00:00:17 #1927 [Verbose] > │ | UH2_1 -> (* Nil *) │
00:00:17 #1928 [Verbose] > │ struct (v1, v2) │
00:00:17 #1929 [Verbose] > │ and method28 (v0 : UH6, v1 : UH6) : UH6 = │
00:00:17 #1930 [Verbose] > │ match v0 with │
00:00:17 #1931 [Verbose] > │ | UH6_0(v2, v3, v4) -> (* Cons *) │
00:00:17 #1932 [Verbose] > │ let v5 : UH6 = UH6_0(v2, v3, v1) │
00:00:17 #1933 [Verbose] > │ method28(v4, v5) │
00:00:17 #1934 [Verbose] > │ | UH6_1 -> (* Nil *) │
00:00:17 #1935 [Verbose] > │ v1 │
00:00:17 #1936 [Verbose] > │ and method29 (v0 : Map<int32, int64>, v1 : UH6, v2 : UH2) : UH2 = │
00:00:17 #1937 [Verbose] > │ match v1 with │
00:00:17 #1938 [Verbose] > │ | UH6_0(v3, v4, v5) -> (* Cons *) │
00:00:17 #1939 [Verbose] > │ let v6 : UH2 = method29(v0, v5, v2) │
00:00:17 #1940 [Verbose] > │ let v7 : int64 = v0.[v3] │
00:00:17 #1941 [Verbose] > │ let v8 : int32 = int32 v7 │
00:00:17 #1942 [Verbose] > │ let v9 : string = v4.PadRight v8 │
00:00:17 #1943 [Verbose] > │ UH2_0(v9, v6) │
00:00:17 #1944 [Verbose] > │ | UH6_1 -> (* Nil *) │
00:00:17 #1945 [Verbose] > │ v2 │
00:00:17 #1946 [Verbose] > │ and method31 (v0 : UH2, v1 : int32) : int32 = │
00:00:17 #1947 [Verbose] > │ match v0 with │
00:00:17 #1948 [Verbose] > │ | UH2_0(v2, v3) -> (* Cons *) │
00:00:17 #1949 [Verbose] > │ let v4 : int32 = v1 + 1 │
00:00:17 #1950 [Verbose] > │ method31(v3, v4) │
00:00:17 #1951 [Verbose] > │ | UH2_1 -> (* Nil *) │
00:00:17 #1952 [Verbose] > │ v1 │
00:00:17 #1953 [Verbose] > │ and method32 (v0 : (string []), v1 : UH2, v2 : int32) : int32 = │
00:00:17 #1954 [Verbose] > │ match v1 with │
00:00:17 #1955 [Verbose] > │ | UH2_0(v3, v4) -> (* Cons *) │
00:00:17 #1956 [Verbose] > │ v0.[int v2] <- v3 │
00:00:17 #1957 [Verbose] > │ let v5 : int32 = v2 + 1 │
00:00:17 #1958 [Verbose] > │ method32(v0, v4, v5) │
00:00:17 #1959 [Verbose] > │ | UH2_1 -> (* Nil *) │
00:00:17 #1960 [Verbose] > │ v2 │
00:00:17 #1961 [Verbose] > │ and method30 (v0 : UH2) : (string []) = │
00:00:17 #1962 [Verbose] > │ let v1 : int32 = 0 │
00:00:17 #1963 [Verbose] > │ let v2 : int32 = method31(v0, v1) │
00:00:17 #1964 [Verbose] > │ let v3 : (string []) = Array.zeroCreate<string> (v2) │
00:00:17 #1965 [Verbose] > │ let v4 : int32 = 0 │
00:00:17 #1966 [Verbose] > │ let v5 : int32 = method32(v3, v0, v4) │
00:00:17 #1967 [Verbose] > │ v3 │
00:00:17 #1968 [Verbose] > │ and method34 (v0 : UH5, v1 : uint64) : uint64 = │
00:00:17 #1969 [Verbose] > │ match v0 with │
00:00:17 #1970 [Verbose] > │ | UH5_0(v2, v3, v4) -> (* Cons *) │
00:00:17 #1971 [Verbose] > │ let v5 : uint64 = v1 + 1UL │
00:00:17 #1972 [Verbose] > │ method34(v4, v5) │
00:00:17 #1973 [Verbose] > │ | UH5_1 -> (* Nil *) │
00:00:17 #1974 [Verbose] > │ v1 │
00:00:17 #1975 [Verbose] > │ and method35 (v0 : (struct (int32 * int64) []), v1 : UH5, v2 : uint64) : │
00:00:17 #1976 [Verbose] > │ uint64 = │
00:00:17 #1977 [Verbose] > │ match v1 with │
00:00:17 #1978 [Verbose] > │ | UH5_0(v3, v4, v5) -> (* Cons *) │
00:00:17 #1979 [Verbose] > │ v0.[int v2] <- struct (v3, v4) │
00:00:17 #1980 [Verbose] > │ let v6 : uint64 = v2 + 1UL │
00:00:17 #1981 [Verbose] > │ method35(v0, v5, v6) │
00:00:17 #1982 [Verbose] > │ | UH5_1 -> (* Nil *) │
00:00:17 #1983 [Verbose] > │ v2 │
00:00:17 #1984 [Verbose] > │ and method33 (v0 : UH5) : (struct (int32 * int64) []) = │
00:00:17 #1985 [Verbose] > │ let v1 : uint64 = 0UL │
00:00:17 #1986 [Verbose] > │ let v2 : uint64 = method34(v0, v1) │
00:00:17 #1987 [Verbose] > │ let v3 : (struct (int32 * int64) []) = Array.zeroCreate<struct (int32 * │
00:00:17 #1988 [Verbose] > │ int64)> (System.Convert.ToInt32(v2)) │
00:00:17 #1989 [Verbose] > │ let v4 : uint64 = 0UL │
00:00:17 #1990 [Verbose] > │ let v5 : uint64 = method35(v3, v0, v4) │
00:00:17 #1991 [Verbose] > │ v3 │
00:00:17 #1992 [Verbose] > │ and closure5 () struct (v0 : int32, v1 : int64) : int64 = │
00:00:17 #1993 [Verbose] > │ v1 │
00:00:17 #1994 [Verbose] > │ and closure0 () () : unit = │
00:00:17 #1995 [Verbose] > │ let v0 : (unit -> unit) = closure0() │
00:00:17 #1996 [Verbose] > │ let v1 : string = nameof v0 │
00:00:17 #1997 [Verbose] > │ let v2 : string = "" │
00:00:17 #1998 [Verbose] > │ System.Console.WriteLine v2 │
00:00:17 #1999 [Verbose] > │ System.Console.WriteLine v2 │
00:00:17 #2000 [Verbose] > │ let v3 : string = $"Test: {v1}" │
00:00:17 #2001 [Verbose] > │ System.Console.WriteLine v3 │
00:00:17 #2002 [Verbose] > │ let v4 : float = 0.0 │
00:00:17 #2003 [Verbose] > │ let v5 : float = 1.0 │
00:00:17 #2004 [Verbose] > │ let v6 : float = 2.0 │
00:00:17 #2005 [Verbose] > │ let v7 : float = 3.0 │
00:00:17 #2006 [Verbose] > │ let v8 : float = 5.0 │
00:00:17 #2007 [Verbose] > │ let v9 : float = 6.0 │
00:00:17 #2008 [Verbose] > │ let v10 : UH0 = UH0_1 │
00:00:17 #2009 [Verbose] > │ let v11 : UH0 = UH0_0(v8, v9, v10) │
00:00:17 #2010 [Verbose] > │ let v12 : UH0 = UH0_0(v6, v7, v11) │
00:00:17 #2011 [Verbose] > │ let v13 : UH0 = UH0_0(v4, v5, v12) │
00:00:17 #2012 [Verbose] > │ let v14 : (struct (float * float) []) = method1(v13) │
00:00:17 #2013 [Verbose] > │ let v15 : uint64 = System.Convert.ToUInt64 v14.Length │
00:00:17 #2014 [Verbose] > │ let v16 : (struct (string * string * string * (int64 [])) []) = │
00:00:17 #2015 [Verbose] > │ Array.zeroCreate<struct (string * string * string * (int64 []))> │
00:00:17 #2016 [Verbose] > │ (System.Convert.ToInt32(v15)) │
00:00:17 #2017 [Verbose] > │ let v17 : Mut0 = {l0 = 0UL} : Mut0 │
00:00:17 #2018 [Verbose] > │ while method4(v15, v17) do │
00:00:17 #2019 [Verbose] > │ let v19 : uint64 = v17.l0 │
00:00:17 #2020 [Verbose] > │ let struct (v20 : float, v21 : float) = v14.[int v19] │
00:00:17 #2021 [Verbose] > │ let v22 : string = $"%A{v20}" │
00:00:17 #2022 [Verbose] > │ System.Console.WriteLine v2 │
00:00:17 #2023 [Verbose] > │ let v23 : string = $"Solution: {v22} " │
00:00:17 #2024 [Verbose] > │ System.Console.WriteLine v23 │
00:00:17 #2025 [Verbose] > │ let v24 : int32 = 0 │
00:00:17 #2026 [Verbose] > │ let v25 : string = "A" │
00:00:17 #2027 [Verbose] > │ let v26 : (float -> float) = closure1() │
00:00:17 #2028 [Verbose] > │ let v27 : UH1 = UH1_1 │
00:00:17 #2029 [Verbose] > │ let v28 : UH1 = UH1_0(v24, v25, v26, v27) │
00:00:17 #2030 [Verbose] > │ let v29 : (struct (int32 * string * (float -> float)) []) = │
00:00:17 #2031 [Verbose] > │ method5(v28) │
00:00:17 #2032 [Verbose] > │ let v30 : uint64 = System.Convert.ToUInt64 v29.Length │
00:00:17 #2033 [Verbose] > │ let v31 : (struct (float * int64) []) = Array.zeroCreate<struct │
00:00:17 #2034 [Verbose] > │ (float * int64)> (System.Convert.ToInt32(v30)) │
00:00:17 #2035 [Verbose] > │ let v32 : Mut0 = {l0 = 0UL} : Mut0 │
00:00:17 #2036 [Verbose] > │ while method4(v30, v32) do │
00:00:17 #2037 [Verbose] > │ let v34 : uint64 = v32.l0 │
00:00:17 #2038 [Verbose] > │ let struct (v35 : int32, v36 : string, v37 : (float -> float)) = │
00:00:17 #2039 [Verbose] > │ v29.[int v34] │
00:00:17 #2040 [Verbose] > │ let mutable result = None │
00:00:17 #2041 [Verbose] > │ #if FABLE_COMPILER_RUST │
00:00:17 #2042 [Verbose] > │ #if !WASM │
00:00:17 #2043 [Verbose] > │ () │
00:00:17 #2044 [Verbose] > │ #else │
00:00:17 #2045 [Verbose] > │ () │
00:00:17 #2046 [Verbose] > │ #endif │
00:00:17 #2047 [Verbose] > │ #else │
00:00:17 #2048 [Verbose] > │ System.GC.Collect () │
00:00:17 #2049 [Verbose] > │ () │
00:00:17 #2050 [Verbose] > │ #endif │
00:00:17 #2051 [Verbose] > │ |> fun x -> result <- Some x │
00:00:17 #2052 [Verbose] > │ result |> Option.get │
00:00:17 #2053 [Verbose] > │ let v38 : (unit -> System.Diagnostics.Stopwatch) = │
00:00:17 #2054 [Verbose] > │ System.Diagnostics.Stopwatch │
00:00:17 #2055 [Verbose] > │ let v39 : System.Diagnostics.Stopwatch = v38 () │
00:00:17 #2056 [Verbose] > │ v39.Start () │
00:00:17 #2057 [Verbose] > │ let v40 : int64 = v39.ElapsedMilliseconds │
00:00:17 #2058 [Verbose] > │ let v41 : (int32 []) = Array.zeroCreate<int32> (2000001) │
00:00:17 #2059 [Verbose] > │ let v42 : Mut1 = {l0 = 0} : Mut1 │
00:00:17 #2060 [Verbose] > │ while method8(v42) do │
00:00:17 #2061 [Verbose] > │ let v44 : int32 = v42.l0 │
00:00:17 #2062 [Verbose] > │ v41.[int v44] <- v44 │
00:00:17 #2063 [Verbose] > │ let v45 : int32 = v44 + 1 │
00:00:17 #2064 [Verbose] > │ v42.l0 <- v45 │
00:00:17 #2065 [Verbose] > │ () │
00:00:17 #2066 [Verbose] > │ let v46 : (int32 -> float) = closure2(v20, v37) │
00:00:17 #2067 [Verbose] > │ let v47 : (float []) = v41 |> Array.Parallel.map v46 │
00:00:17 #2068 [Verbose] > │ let v48 : int32 = v47.Length │
00:00:17 #2069 [Verbose] > │ let v49 : int32 = v48 - 1 │
00:00:17 #2070 [Verbose] > │ let v50 : float = v47.[int v49] │
00:00:17 #2071 [Verbose] > │ let v51 : int64 = v39.ElapsedMilliseconds │
00:00:17 #2072 [Verbose] > │ let v52 : int64 = v51 - v40 │
00:00:17 #2073 [Verbose] > │ let v53 : string = $"Test case {v35 + 1}. {v36}. Time: {v52} " │
00:00:17 #2074 [Verbose] > │ System.Console.WriteLine v53 │
00:00:17 #2075 [Verbose] > │ v31.[int v34] <- struct (v50, v52) │
00:00:17 #2076 [Verbose] > │ let v54 : uint64 = v34 + 1UL │
00:00:17 #2077 [Verbose] > │ v32.l0 <- v54 │
00:00:17 #2078 [Verbose] > │ () │
00:00:17 #2079 [Verbose] > │ let v55 : uint64 = System.Convert.ToUInt64 v31.Length │
00:00:17 #2080 [Verbose] > │ let v56 : (float []) = Array.zeroCreate<float> │
00:00:17 #2081 [Verbose] > │ (System.Convert.ToInt32(v55)) │
00:00:17 #2082 [Verbose] > │ let v57 : Mut0 = {l0 = 0UL} : Mut0 │
00:00:17 #2083 [Verbose] > │ while method4(v55, v57) do │
00:00:17 #2084 [Verbose] > │ let v59 : uint64 = v57.l0 │
00:00:17 #2085 [Verbose] > │ let struct (v60 : float, v61 : int64) = v31.[int v59] │
00:00:17 #2086 [Verbose] > │ v56.[int v59] <- v60 │
00:00:17 #2087 [Verbose] > │ let v62 : uint64 = v59 + 1UL │
00:00:17 #2088 [Verbose] > │ v57.l0 <- v62 │
00:00:17 #2089 [Verbose] > │ () │
00:00:17 #2090 [Verbose] > │ let v63 : uint64 = System.Convert.ToUInt64 v56.Length │
00:00:17 #2091 [Verbose] > │ let v64 : bool = v63 <= 1UL │
00:00:17 #2092 [Verbose] > │ if v64 then │
00:00:17 #2093 [Verbose] > │ () │
00:00:17 #2094 [Verbose] > │ else │
00:00:17 #2095 [Verbose] > │ let v65 : float = v56.[int 0UL] │
00:00:17 #2096 [Verbose] > │ let v66 : uint64 = 0UL │
00:00:17 #2097 [Verbose] > │ let v67 : bool = method9(v65, v56, v66) │
00:00:17 #2098 [Verbose] > │ if v67 then │
00:00:17 #2099 [Verbose] > │ () │
00:00:17 #2100 [Verbose] > │ else │
00:00:17 #2101 [Verbose] > │ let v68 : string = $"Challenge error: {v56}" │
00:00:17 #2102 [Verbose] > │ failwith<unit> v68 │
00:00:17 #2103 [Verbose] > │ let v69 : string = $"%A{v21}" │
00:00:17 #2104 [Verbose] > │ let v70 : (float []) = Array.zeroCreate<float> │
00:00:17 #2105 [Verbose] > │ (System.Convert.ToInt32(v55)) │
00:00:17 #2106 [Verbose] > │ let v71 : Mut0 = {l0 = 0UL} : Mut0 │
00:00:17 #2107 [Verbose] > │ while method4(v55, v71) do │
00:00:17 #2108 [Verbose] > │ let v73 : uint64 = v71.l0 │
00:00:17 #2109 [Verbose] > │ let struct (v74 : float, v75 : int64) = v31.[int v73] │
00:00:17 #2110 [Verbose] > │ v70.[int v73] <- v74 │
00:00:17 #2111 [Verbose] > │ let v76 : uint64 = v73 + 1UL │
00:00:17 #2112 [Verbose] > │ v71.l0 <- v76 │
00:00:17 #2113 [Verbose] > │ () │
00:00:17 #2114 [Verbose] > │ let v77 : float = v70.[int 0UL] │
00:00:17 #2115 [Verbose] > │ let v78 : string = $"%A{v77}" │
00:00:17 #2116 [Verbose] > │ let v79 : (int64 []) = Array.zeroCreate<int64> │
00:00:17 #2117 [Verbose] > │ (System.Convert.ToInt32(v55)) │
00:00:17 #2118 [Verbose] > │ let v80 : Mut0 = {l0 = 0UL} : Mut0 │
00:00:17 #2119 [Verbose] > │ while method4(v55, v80) do │
00:00:17 #2120 [Verbose] > │ let v82 : uint64 = v80.l0 │
00:00:17 #2121 [Verbose] > │ let struct (v83 : float, v84 : int64) = v31.[int v82] │
00:00:17 #2122 [Verbose] > │ v79.[int v82] <- v84 │
00:00:17 #2123 [Verbose] > │ let v85 : uint64 = v82 + 1UL │
00:00:17 #2124 [Verbose] > │ v80.l0 <- v85 │
00:00:17 #2125 [Verbose] > │ () │
00:00:17 #2126 [Verbose] > │ v16.[int v19] <- struct (v69, v22, v78, v79) │
00:00:17 #2127 [Verbose] > │ let v86 : uint64 = v19 + 1UL │
00:00:17 #2128 [Verbose] > │ v17.l0 <- v86 │
00:00:17 #2129 [Verbose] > │ () │
00:00:17 #2130 [Verbose] > │ let v87 : uint64 = System.Convert.ToUInt64 v16.Length │
00:00:17 #2131 [Verbose] > │ let v88 : (struct (UH2 * US0) []) = Array.zeroCreate<struct (UH2 * US0)> │
00:00:17 #2132 [Verbose] > │ (System.Convert.ToInt32(v87)) │
00:00:17 #2133 [Verbose] > │ let v89 : Mut0 = {l0 = 0UL} : Mut0 │
00:00:17 #2134 [Verbose] > │ while method4(v87, v89) do │
00:00:17 #2135 [Verbose] > │ let v91 : uint64 = v89.l0 │
00:00:17 #2136 [Verbose] > │ let struct (v92 : string, v93 : string, v94 : string, v95 : (int64 [ │
00:00:17 #2137 [Verbose] > │ ])) = v16.[int v91] │
00:00:17 #2138 [Verbose] > │ let v96 : uint64 = System.Convert.ToUInt64 v95.Length │
00:00:17 #2139 [Verbose] > │ let v97 : UH3 = UH3_1 │
00:00:17 #2140 [Verbose] > │ let v98 : Mut2 = {l0 = 0UL; l1 = v97; l2 = 0L} : Mut2 │
00:00:17 #2141 [Verbose] > │ while method10(v96, v98) do │
00:00:17 #2142 [Verbose] > │ let v100 : uint64 = v98.l0 │
00:00:17 #2143 [Verbose] > │ let struct (v101 : UH3, v102 : int64) = v98.l1, v98.l2 │
00:00:17 #2144 [Verbose] > │ let v103 : int64 = v95.[int v100] │
00:00:17 #2145 [Verbose] > │ let v104 : int64 = v102 + 1L │
00:00:17 #2146 [Verbose] > │ let v105 : uint64 = v100 + 1UL │
00:00:17 #2147 [Verbose] > │ let v106 : UH3 = UH3_0(v102, v103, v101) │
00:00:17 #2148 [Verbose] > │ v98.l0 <- v105 │
00:00:17 #2149 [Verbose] > │ v98.l1 <- v106 │
00:00:17 #2150 [Verbose] > │ v98.l2 <- v104 │
00:00:17 #2151 [Verbose] > │ () │
00:00:17 #2152 [Verbose] > │ let struct (v107 : UH3, v108 : int64) = v98.l1, v98.l2 │
00:00:17 #2153 [Verbose] > │ let v109 : UH3 = UH3_1 │
00:00:17 #2154 [Verbose] > │ let v110 : UH3 = method11(v107, v109) │
00:00:17 #2155 [Verbose] > │ let v111 : (struct (int64 * int64) []) = method12(v110) │
00:00:17 #2156 [Verbose] > │ let v112 : int32 = v111.Length │
00:00:17 #2157 [Verbose] > │ let v113 : (struct (int64 * int64) []) = Array.zeroCreate<struct │
00:00:17 #2158 [Verbose] > │ (int64 * int64)> (v112) │
00:00:17 #2159 [Verbose] > │ let v114 : Mut1 = {l0 = 0} : Mut1 │
00:00:17 #2160 [Verbose] > │ while method15(v112, v114) do │
00:00:17 #2161 [Verbose] > │ let v116 : int32 = v114.l0 │
00:00:17 #2162 [Verbose] > │ let struct (v117 : int64, v118 : int64) = v111.[int v116] │
00:00:17 #2163 [Verbose] > │ let v119 : int64 = v117 + 1L │
00:00:17 #2164 [Verbose] > │ v113.[int v116] <- struct (v119, v118) │
00:00:17 #2165 [Verbose] > │ let v120 : int32 = v116 + 1 │
00:00:17 #2166 [Verbose] > │ v114.l0 <- v120 │
00:00:17 #2167 [Verbose] > │ () │
00:00:17 #2168 [Verbose] > │ let v121 : (struct (int64 * int64) -> int64) = closure3() │
00:00:17 #2169 [Verbose] > │ let v122 : (struct (int64 * int64) []) = v113 |> Array.sortBy v121 │
00:00:17 #2170 [Verbose] > │ let struct (v123 : int64, v124 : int64) = v122.[int 0] │
00:00:17 #2171 [Verbose] > │ let v125 : string = $"%A{struct (v123, v124)}" │
00:00:17 #2172 [Verbose] > │ let v126 : bool = v92 = v94 │
00:00:17 #2173 [Verbose] > │ let v131 : US0 = │
00:00:17 #2174 [Verbose] > │ if v126 then │
00:00:17 #2175 [Verbose] > │ let v127 : System.ConsoleColor = │
00:00:17 #2176 [Verbose] > │ System.ConsoleColor.DarkGreen │
00:00:17 #2177 [Verbose] > │ US0_1(v127) │
00:00:17 #2178 [Verbose] > │ else │
00:00:17 #2179 [Verbose] > │ let v129 : System.ConsoleColor = System.ConsoleColor.DarkRed │
00:00:17 #2180 [Verbose] > │ US0_1(v129) │
00:00:17 #2181 [Verbose] > │ let v132 : UH2 = UH2_1 │
00:00:17 #2182 [Verbose] > │ let v133 : UH2 = UH2_0(v125, v132) │
00:00:17 #2183 [Verbose] > │ let v134 : UH2 = UH2_0(v94, v133) │
00:00:17 #2184 [Verbose] > │ let v135 : UH2 = UH2_0(v92, v134) │
00:00:17 #2185 [Verbose] > │ let v136 : UH2 = UH2_0(v93, v135) │
00:00:17 #2186 [Verbose] > │ v88.[int v91] <- struct (v136, v131) │
00:00:17 #2187 [Verbose] > │ let v137 : uint64 = v91 + 1UL │
00:00:17 #2188 [Verbose] > │ v89.l0 <- v137 │
00:00:17 #2189 [Verbose] > │ () │
00:00:17 #2190 [Verbose] > │ let v138 : string = "Input" │
00:00:17 #2191 [Verbose] > │ let v139 : string = "Expected" │
00:00:17 #2192 [Verbose] > │ let v140 : string = "Result" │
00:00:17 #2193 [Verbose] > │ let v141 : string = "Best" │
00:00:17 #2194 [Verbose] > │ let v142 : UH2 = UH2_1 │
00:00:17 #2195 [Verbose] > │ let v143 : UH2 = UH2_0(v141, v142) │
00:00:17 #2196 [Verbose] > │ let v144 : UH2 = UH2_0(v140, v143) │
00:00:17 #2197 [Verbose] > │ let v145 : UH2 = UH2_0(v139, v144) │
00:00:17 #2198 [Verbose] > │ let v146 : UH2 = UH2_0(v138, v145) │
00:00:17 #2199 [Verbose] > │ let v147 : US0 = US0_0 │
00:00:17 #2200 [Verbose] > │ let v148 : string = "---" │
00:00:17 #2201 [Verbose] > │ let v149 : UH2 = UH2_1 │
00:00:17 #2202 [Verbose] > │ let v150 : UH2 = UH2_0(v148, v149) │
00:00:17 #2203 [Verbose] > │ let v151 : UH2 = UH2_0(v148, v150) │
00:00:17 #2204 [Verbose] > │ let v152 : UH2 = UH2_0(v148, v151) │
00:00:17 #2205 [Verbose] > │ let v153 : UH2 = UH2_0(v148, v152) │
00:00:17 #2206 [Verbose] > │ let v154 : US0 = US0_0 │
00:00:17 #2207 [Verbose] > │ let v155 : UH4 = UH4_1 │
00:00:17 #2208 [Verbose] > │ let v156 : UH4 = UH4_0(v153, v154, v155) │
00:00:17 #2209 [Verbose] > │ let v157 : UH4 = UH4_0(v146, v147, v156) │
00:00:17 #2210 [Verbose] > │ let v158 : (struct (UH2 * US0) []) = method16(v157) │
00:00:17 #2211 [Verbose] > │ let v159 : uint64 = System.Convert.ToUInt64 v158.Length │
00:00:17 #2212 [Verbose] > │ let v160 : uint64 = System.Convert.ToUInt64 v88.Length │
00:00:17 #2213 [Verbose] > │ let v161 : uint64 = v159 + v160 │
00:00:17 #2214 [Verbose] > │ let v162 : (struct (UH2 * US0) []) = Array.zeroCreate<struct (UH2 * │
00:00:17 #2215 [Verbose] > │ US0)> (System.Convert.ToInt32(v161)) │
00:00:17 #2216 [Verbose] > │ let v163 : Mut0 = {l0 = 0UL} : Mut0 │
00:00:17 #2217 [Verbose] > │ while method4(v161, v163) do │
00:00:17 #2218 [Verbose] > │ let v165 : uint64 = v163.l0 │
00:00:17 #2219 [Verbose] > │ let v166 : bool = v165 < v159 │
00:00:17 #2220 [Verbose] > │ let struct (v172 : UH2, v173 : US0) = │
00:00:17 #2221 [Verbose] > │ if v166 then │
00:00:17 #2222 [Verbose] > │ let struct (v167 : UH2, v168 : US0) = v158.[int v165] │
00:00:17 #2223 [Verbose] > │ struct (v167, v168) │
00:00:17 #2224 [Verbose] > │ else │
00:00:17 #2225 [Verbose] > │ let v169 : uint64 = v165 - v159 │
00:00:17 #2226 [Verbose] > │ let struct (v170 : UH2, v171 : US0) = v88.[int v169] │
00:00:17 #2227 [Verbose] > │ struct (v170, v171) │
00:00:17 #2228 [Verbose] > │ v162.[int v165] <- struct (v172, v173) │
00:00:17 #2229 [Verbose] > │ let v174 : uint64 = v165 + 1UL │
00:00:17 #2230 [Verbose] > │ v163.l0 <- v174 │
00:00:17 #2231 [Verbose] > │ () │
00:00:17 #2232 [Verbose] > │ let v175 : uint64 = System.Convert.ToUInt64 v162.Length │
00:00:17 #2233 [Verbose] > │ let v176 : ((string []) []) = Array.zeroCreate<(string [])> │
00:00:17 #2234 [Verbose] > │ (System.Convert.ToInt32(v175)) │
00:00:17 #2235 [Verbose] > │ let v177 : Mut0 = {l0 = 0UL} : Mut0 │
00:00:17 #2236 [Verbose] > │ while method4(v175, v177) do │
00:00:17 #2237 [Verbose] > │ let v179 : uint64 = v177.l0 │
00:00:17 #2238 [Verbose] > │ let struct (v180 : UH2, v181 : US0) = v162.[int v179] │
00:00:17 #2239 [Verbose] > │ let v182 : (string []) = method19(v180) │
00:00:17 #2240 [Verbose] > │ v176.[int v179] <- v182 │
00:00:17 #2241 [Verbose] > │ let v183 : uint64 = v179 + 1UL │
00:00:17 #2242 [Verbose] > │ v177.l0 <- v183 │
00:00:17 #2243 [Verbose] > │ () │
00:00:17 #2244 [Verbose] > │ let v184 : ((string []) []) = v176 |> Array.transpose │
00:00:17 #2245 [Verbose] > │ let v185 : uint64 = System.Convert.ToUInt64 v184.Length │
00:00:17 #2246 [Verbose] > │ let v186 : (int64 []) = Array.zeroCreate<int64> │
00:00:17 #2247 [Verbose] > │ (System.Convert.ToInt32(v185)) │
00:00:17 #2248 [Verbose] > │ let v187 : Mut0 = {l0 = 0UL} : Mut0 │
00:00:17 #2249 [Verbose] > │ while method4(v185, v187) do │
00:00:17 #2250 [Verbose] > │ let v189 : uint64 = v187.l0 │
00:00:17 #2251 [Verbose] > │ let v190 : (string []) = v184.[int v189] │
00:00:17 #2252 [Verbose] > │ let v191 : uint64 = System.Convert.ToUInt64 v190.Length │
00:00:17 #2253 [Verbose] > │ let v192 : (int64 []) = Array.zeroCreate<int64> │
00:00:17 #2254 [Verbose] > │ (System.Convert.ToInt32(v191)) │
00:00:17 #2255 [Verbose] > │ let v193 : Mut0 = {l0 = 0UL} : Mut0 │
00:00:17 #2256 [Verbose] > │ while method4(v191, v193) do │
00:00:17 #2257 [Verbose] > │ let v195 : uint64 = v193.l0 │
00:00:17 #2258 [Verbose] > │ let v196 : string = v190.[int v195] │
00:00:17 #2259 [Verbose] > │ let v197 : int64 = System.Convert.ToInt64 v196.Length │
00:00:17 #2260 [Verbose] > │ v192.[int v195] <- v197 │
00:00:17 #2261 [Verbose] > │ let v198 : uint64 = v195 + 1UL │
00:00:17 #2262 [Verbose] > │ v193.l0 <- v198 │
00:00:17 #2263 [Verbose] > │ () │
00:00:17 #2264 [Verbose] > │ let v199 : (int64 []) = v192 |> Array.sortDescending │
00:00:17 #2265 [Verbose] > │ let v200 : int64 option = v199 |> Array.tryItem 0 │
00:00:17 #2266 [Verbose] > │ let v201 : (int64 -> US1) = closure4() │
00:00:17 #2267 [Verbose] > │ let v202 : US1 = US1_0 │
00:00:17 #2268 [Verbose] > │ let v203 : US1 = v200 |> Option.map v201 |> Option.defaultValue v202 │
00:00:17 #2269 [Verbose] > │ let v206 : int64 = │
00:00:17 #2270 [Verbose] > │ match v203 with │
00:00:17 #2271 [Verbose] > │ | US1_0 -> (* None *) │
00:00:17 #2272 [Verbose] > │ 0L │
00:00:17 #2273 [Verbose] > │ | US1_1(v204) -> (* Some *) │
00:00:17 #2274 [Verbose] > │ v204 │
00:00:17 #2275 [Verbose] > │ v186.[int v189] <- v206 │
00:00:17 #2276 [Verbose] > │ let v207 : uint64 = v189 + 1UL │
00:00:17 #2277 [Verbose] > │ v187.l0 <- v207 │
00:00:17 #2278 [Verbose] > │ () │
00:00:17 #2279 [Verbose] > │ let v208 : uint64 = System.Convert.ToUInt64 v186.Length │
00:00:17 #2280 [Verbose] > │ let v209 : UH5 = UH5_1 │
00:00:17 #2281 [Verbose] > │ let v210 : Mut3 = {l0 = 0UL; l1 = v209; l2 = 0} : Mut3 │
00:00:17 #2282 [Verbose] > │ while method22(v208, v210) do │
00:00:17 #2283 [Verbose] > │ let v212 : uint64 = v210.l0 │
00:00:17 #2284 [Verbose] > │ let struct (v213 : UH5, v214 : int32) = v210.l1, v210.l2 │
00:00:17 #2285 [Verbose] > │ let v215 : int64 = v186.[int v212] │
00:00:17 #2286 [Verbose] > │ let v216 : int32 = v214 + 1 │
00:00:17 #2287 [Verbose] > │ let v217 : uint64 = v212 + 1UL │
00:00:17 #2288 [Verbose] > │ let v218 : UH5 = UH5_0(v214, v215, v213) │
00:00:17 #2289 [Verbose] > │ v210.l0 <- v217 │
00:00:17 #2290 [Verbose] > │ v210.l1 <- v218 │
00:00:17 #2291 [Verbose] > │ v210.l2 <- v216 │
00:00:17 #2292 [Verbose] > │ () │
00:00:17 #2293 [Verbose] > │ let struct (v219 : UH5, v220 : int32) = v210.l1, v210.l2 │
00:00:17 #2294 [Verbose] > │ let v221 : UH5 = UH5_1 │
00:00:17 #2295 [Verbose] > │ let v222 : UH5 = method23(v219, v221) │
00:00:17 #2296 [Verbose] > │ let v223 : (struct (int32 * int64) []) = method24(v222) │
00:00:17 #2297 [Verbose] > │ let v224 : Map<int32, int64> = v223 |> Array.map (fun (struct (a, b)) -> │
00:00:17 #2298 [Verbose] > │ a, b) |> Map.ofArray │
00:00:17 #2299 [Verbose] > │ let v225 : (struct ((string []) * US0) []) = Array.zeroCreate<struct │
00:00:17 #2300 [Verbose] > │ ((string []) * US0)> (System.Convert.ToInt32(v175)) │
00:00:17 #2301 [Verbose] > │ let v226 : Mut0 = {l0 = 0UL} : Mut0 │
00:00:17 #2302 [Verbose] > │ while method4(v175, v226) do │
00:00:17 #2303 [Verbose] > │ let v228 : uint64 = v226.l0 │
00:00:17 #2304 [Verbose] > │ let struct (v229 : UH2, v230 : US0) = v162.[int v228] │
00:00:17 #2305 [Verbose] > │ let v231 : UH6 = UH6_1 │
00:00:17 #2306 [Verbose] > │ let v232 : int32 = 0 │
00:00:17 #2307 [Verbose] > │ let struct (v233 : UH6, v234 : int32) = method27(v229, v231, v232) │
00:00:17 #2308 [Verbose] > │ let v235 : UH6 = UH6_1 │
00:00:17 #2309 [Verbose] > │ let v236 : UH6 = method28(v233, v235) │
00:00:17 #2310 [Verbose] > │ let v237 : UH2 = UH2_1 │
00:00:17 #2311 [Verbose] > │ let v238 : UH2 = method29(v224, v236, v237) │
00:00:17 #2312 [Verbose] > │ let v239 : (string []) = method30(v238) │
00:00:17 #2313 [Verbose] > │ v225.[int v228] <- struct (v239, v230) │
00:00:17 #2314 [Verbose] > │ let v240 : uint64 = v228 + 1UL │
00:00:17 #2315 [Verbose] > │ v226.l0 <- v240 │
00:00:17 #2316 [Verbose] > │ () │
00:00:17 #2317 [Verbose] > │ System.Console.WriteLine v2 │
00:00:17 #2318 [Verbose] > │ let v241 : uint64 = System.Convert.ToUInt64 v225.Length │
00:00:17 #2319 [Verbose] > │ let v242 : Mut0 = {l0 = 0UL} : Mut0 │
00:00:17 #2320 [Verbose] > │ while method4(v241, v242) do │
00:00:17 #2321 [Verbose] > │ let v244 : uint64 = v242.l0 │
00:00:17 #2322 [Verbose] > │ let struct (v245 : (string []), v246 : US0) = v225.[int v244] │
00:00:17 #2323 [Verbose] > │ match v246 with │
00:00:17 #2324 [Verbose] > │ | US0_0 -> (* None *) │
00:00:17 #2325 [Verbose] > │ let mutable result = None │
00:00:17 #2326 [Verbose] > │ #if FABLE_COMPILER_RUST │
00:00:17 #2327 [Verbose] > │ #if !WASM │
00:00:17 #2328 [Verbose] > │ () │
00:00:17 #2329 [Verbose] > │ #else │
00:00:17 #2330 [Verbose] > │ () │
00:00:17 #2331 [Verbose] > │ #endif │
00:00:17 #2332 [Verbose] > │ #else │
00:00:17 #2333 [Verbose] > │ System.Console.ResetColor () │
00:00:17 #2334 [Verbose] > │ () │
00:00:17 #2335 [Verbose] > │ #endif │
00:00:17 #2336 [Verbose] > │ |> fun x -> result <- Some x │
00:00:17 #2337 [Verbose] > │ result |> Option.get │
00:00:17 #2338 [Verbose] > │ () │
00:00:17 #2339 [Verbose] > │ | US0_1(v247) -> (* Some *) │
00:00:17 #2340 [Verbose] > │ let mutable result = None │
00:00:17 #2341 [Verbose] > │ #if FABLE_COMPILER_RUST │
00:00:17 #2342 [Verbose] > │ #if !WASM │
00:00:17 #2343 [Verbose] > │ () │
00:00:17 #2344 [Verbose] > │ #else │
00:00:17 #2345 [Verbose] > │ () │
00:00:17 #2346 [Verbose] > │ #endif │
00:00:17 #2347 [Verbose] > │ #else │
00:00:17 #2348 [Verbose] > │ System.Console.ForegroundColor <- v247 │
00:00:17 #2349 [Verbose] > │ () │
00:00:17 #2350 [Verbose] > │ #endif │
00:00:17 #2351 [Verbose] > │ |> fun x -> result <- Some x │
00:00:17 #2352 [Verbose] > │ result |> Option.get │
00:00:17 #2353 [Verbose] > │ () │
00:00:17 #2354 [Verbose] > │ let v248 : string = "\t| " │
00:00:17 #2355 [Verbose] > │ let v249 : string = System.String.Join (v248, v245) │
00:00:17 #2356 [Verbose] > │ System.Console.WriteLine v249 │
00:00:17 #2357 [Verbose] > │ let mutable result = None │
00:00:17 #2358 [Verbose] > │ #if FABLE_COMPILER_RUST │
00:00:17 #2359 [Verbose] > │ #if !WASM │
00:00:17 #2360 [Verbose] > │ () │
00:00:17 #2361 [Verbose] > │ #else │
00:00:17 #2362 [Verbose] > │ () │
00:00:17 #2363 [Verbose] > │ #endif │
00:00:17 #2364 [Verbose] > │ #else │
00:00:17 #2365 [Verbose] > │ System.Console.ResetColor () │
00:00:17 #2366 [Verbose] > │ () │
00:00:17 #2367 [Verbose] > │ #endif │
00:00:17 #2368 [Verbose] > │ |> fun x -> result <- Some x │
00:00:17 #2369 [Verbose] > │ result |> Option.get │
00:00:17 #2370 [Verbose] > │ let v250 : uint64 = v244 + 1UL │
00:00:17 #2371 [Verbose] > │ v242.l0 <- v250 │
00:00:17 #2372 [Verbose] > │ () │
00:00:17 #2373 [Verbose] > │ let v251 : ((float []) []) = Array.zeroCreate<(float [])> │
00:00:17 #2374 [Verbose] > │ (System.Convert.ToInt32(v87)) │
00:00:17 #2375 [Verbose] > │ let v252 : Mut0 = {l0 = 0UL} : Mut0 │
00:00:17 #2376 [Verbose] > │ while method4(v87, v252) do │
00:00:17 #2377 [Verbose] > │ let v254 : uint64 = v252.l0 │
00:00:17 #2378 [Verbose] > │ let struct (v255 : string, v256 : string, v257 : string, v258 : │
00:00:17 #2379 [Verbose] > │ (int64 [])) = v16.[int v254] │
00:00:17 #2380 [Verbose] > │ let v259 : (int64 -> float) = float │
00:00:17 #2381 [Verbose] > │ let v260 : uint64 = System.Convert.ToUInt64 v258.Length │
00:00:17 #2382 [Verbose] > │ let v261 : (float []) = Array.zeroCreate<float> │
00:00:17 #2383 [Verbose] > │ (System.Convert.ToInt32(v260)) │
00:00:17 #2384 [Verbose] > │ let v262 : Mut0 = {l0 = 0UL} : Mut0 │
00:00:17 #2385 [Verbose] > │ while method4(v260, v262) do │
00:00:17 #2386 [Verbose] > │ let v264 : uint64 = v262.l0 │
00:00:17 #2387 [Verbose] > │ let v265 : int64 = v258.[int v264] │
00:00:17 #2388 [Verbose] > │ let v266 : float = v259 v265 │
00:00:17 #2389 [Verbose] > │ v261.[int v264] <- v266 │
00:00:17 #2390 [Verbose] > │ let v267 : uint64 = v264 + 1UL │
00:00:17 #2391 [Verbose] > │ v262.l0 <- v267 │
00:00:17 #2392 [Verbose] > │ () │
00:00:17 #2393 [Verbose] > │ v251.[int v254] <- v261 │
00:00:17 #2394 [Verbose] > │ let v268 : uint64 = v254 + 1UL │
00:00:17 #2395 [Verbose] > │ v252.l0 <- v268 │
00:00:17 #2396 [Verbose] > │ () │
00:00:17 #2397 [Verbose] > │ let v269 : ((float []) []) = v251 |> Array.transpose │
00:00:17 #2398 [Verbose] > │ let v270 : uint64 = System.Convert.ToUInt64 v269.Length │
00:00:17 #2399 [Verbose] > │ let v271 : (float []) = Array.zeroCreate<float> │
00:00:17 #2400 [Verbose] > │ (System.Convert.ToInt32(v270)) │
00:00:17 #2401 [Verbose] > │ let v272 : Mut0 = {l0 = 0UL} : Mut0 │
00:00:17 #2402 [Verbose] > │ while method4(v270, v272) do │
00:00:17 #2403 [Verbose] > │ let v274 : uint64 = v272.l0 │
00:00:17 #2404 [Verbose] > │ let v275 : (float []) = v269.[int v274] │
00:00:17 #2405 [Verbose] > │ let v276 : float = v275 |> Array.average │
00:00:17 #2406 [Verbose] > │ v271.[int v274] <- v276 │
00:00:17 #2407 [Verbose] > │ let v277 : uint64 = v274 + 1UL │
00:00:17 #2408 [Verbose] > │ v272.l0 <- v277 │
00:00:17 #2409 [Verbose] > │ () │
00:00:17 #2410 [Verbose] > │ let v278 : (float -> int64) = int64 │
00:00:17 #2411 [Verbose] > │ let v279 : uint64 = System.Convert.ToUInt64 v271.Length │
00:00:17 #2412 [Verbose] > │ let v280 : (int64 []) = Array.zeroCreate<int64> │
00:00:17 #2413 [Verbose] > │ (System.Convert.ToInt32(v279)) │
00:00:17 #2414 [Verbose] > │ let v281 : Mut0 = {l0 = 0UL} : Mut0 │
00:00:17 #2415 [Verbose] > │ while method4(v279, v281) do │
00:00:17 #2416 [Verbose] > │ let v283 : uint64 = v281.l0 │
00:00:17 #2417 [Verbose] > │ let v284 : float = v271.[int v283] │
00:00:17 #2418 [Verbose] > │ let v285 : int64 = v278 v284 │
00:00:17 #2419 [Verbose] > │ v280.[int v283] <- v285 │
00:00:17 #2420 [Verbose] > │ let v286 : uint64 = v283 + 1UL │
00:00:17 #2421 [Verbose] > │ v281.l0 <- v286 │
00:00:17 #2422 [Verbose] > │ () │
00:00:17 #2423 [Verbose] > │ let v287 : uint64 = System.Convert.ToUInt64 v280.Length │
00:00:17 #2424 [Verbose] > │ let v288 : UH5 = UH5_1 │
00:00:17 #2425 [Verbose] > │ let v289 : Mut3 = {l0 = 0UL; l1 = v288; l2 = 0} : Mut3 │
00:00:17 #2426 [Verbose] > │ while method22(v287, v289) do │
00:00:17 #2427 [Verbose] > │ let v291 : uint64 = v289.l0 │
00:00:17 #2428 [Verbose] > │ let struct (v292 : UH5, v293 : int32) = v289.l1, v289.l2 │
00:00:17 #2429 [Verbose] > │ let v294 : int64 = v280.[int v291] │
00:00:17 #2430 [Verbose] > │ let v295 : int32 = v293 + 1 │
00:00:17 #2431 [Verbose] > │ let v296 : uint64 = v291 + 1UL │
00:00:17 #2432 [Verbose] > │ let v297 : UH5 = UH5_0(v293, v294, v292) │
00:00:17 #2433 [Verbose] > │ v289.l0 <- v296 │
00:00:17 #2434 [Verbose] > │ v289.l1 <- v297 │
00:00:17 #2435 [Verbose] > │ v289.l2 <- v295 │
00:00:17 #2436 [Verbose] > │ () │
00:00:17 #2437 [Verbose] > │ let struct (v298 : UH5, v299 : int32) = v289.l1, v289.l2 │
00:00:17 #2438 [Verbose] > │ let v300 : UH5 = UH5_1 │
00:00:17 #2439 [Verbose] > │ let v301 : UH5 = method23(v298, v300) │
00:00:17 #2440 [Verbose] > │ let v302 : (struct (int32 * int64) []) = method33(v301) │
00:00:17 #2441 [Verbose] > │ System.Console.WriteLine v2 │
00:00:17 #2442 [Verbose] > │ let v303 : string = "Average Ranking " │
00:00:17 #2443 [Verbose] > │ System.Console.WriteLine v303 │
00:00:17 #2444 [Verbose] > │ let v304 : (struct (int32 * int64) -> int64) = closure5() │
00:00:17 #2445 [Verbose] > │ let v305 : (struct (int32 * int64) []) = v302 |> Array.sortBy v304 │
00:00:17 #2446 [Verbose] > │ let v306 : uint64 = System.Convert.ToUInt64 v305.Length │
00:00:17 #2447 [Verbose] > │ let v307 : Mut0 = {l0 = 0UL} : Mut0 │
00:00:17 #2448 [Verbose] > │ while method4(v306, v307) do │
00:00:17 #2449 [Verbose] > │ let v309 : uint64 = v307.l0 │
00:00:17 #2450 [Verbose] > │ let struct (v310 : int32, v311 : int64) = v305.[int v309] │
00:00:17 #2451 [Verbose] > │ let v312 : string = $"Test case %d{v310 + 1}. Average Time: %A{v311} │
00:00:17 #2452 [Verbose] > │ " │
00:00:17 #2453 [Verbose] > │ System.Console.WriteLine v312 │
00:00:17 #2454 [Verbose] > │ let v313 : uint64 = v309 + 1UL │
00:00:17 #2455 [Verbose] > │ v307.l0 <- v313 │
00:00:17 #2456 [Verbose] > │ () │
00:00:17 #2457 [Verbose] > │ () │
00:00:17 #2458 [Verbose] > │ and method0 () : unit = │
00:00:17 #2459 [Verbose] > │ let v0 : (unit -> unit) = closure0() │
00:00:17 #2460 [Verbose] > │ let v1 : string = nameof v0 │
00:00:17 #2461 [Verbose] > │ let v2 : string = "" │
00:00:17 #2462 [Verbose] > │ System.Console.WriteLine v2 │
00:00:17 #2463 [Verbose] > │ System.Console.WriteLine v2 │
00:00:17 #2464 [Verbose] > │ let v3 : string = $"Test: {v1}" │
00:00:17 #2465 [Verbose] > │ System.Console.WriteLine v3 │
00:00:17 #2466 [Verbose] > │ let v4 : float = 0.0 │
00:00:17 #2467 [Verbose] > │ let v5 : float = 1.0 │
00:00:17 #2468 [Verbose] > │ let v6 : float = 2.0 │
00:00:17 #2469 [Verbose] > │ let v7 : float = 3.0 │
00:00:17 #2470 [Verbose] > │ let v8 : float = 5.0 │
00:00:17 #2471 [Verbose] > │ let v9 : float = 6.0 │
00:00:17 #2472 [Verbose] > │ let v10 : UH0 = UH0_1 │
00:00:17 #2473 [Verbose] > │ let v11 : UH0 = UH0_0(v8, v9, v10) │
00:00:17 #2474 [Verbose] > │ let v12 : UH0 = UH0_0(v6, v7, v11) │
00:00:17 #2475 [Verbose] > │ let v13 : UH0 = UH0_0(v4, v5, v12) │
00:00:17 #2476 [Verbose] > │ let v14 : (struct (float * float) []) = method1(v13) │
00:00:17 #2477 [Verbose] > │ let v15 : uint64 = System.Convert.ToUInt64 v14.Length │
00:00:17 #2478 [Verbose] > │ let v16 : (struct (string * string * string * (int64 [])) []) = │
00:00:17 #2479 [Verbose] > │ Array.zeroCreate<struct (string * string * string * (int64 []))> │
00:00:17 #2480 [Verbose] > │ (System.Convert.ToInt32(v15)) │
00:00:17 #2481 [Verbose] > │ let v17 : Mut0 = {l0 = 0UL} : Mut0 │
00:00:17 #2482 [Verbose] > │ while method4(v15, v17) do │
00:00:17 #2483 [Verbose] > │ let v19 : uint64 = v17.l0 │
00:00:17 #2484 [Verbose] > │ let struct (v20 : float, v21 : float) = v14.[int v19] │
00:00:17 #2485 [Verbose] > │ let v22 : string = $"%A{v20}" │
00:00:17 #2486 [Verbose] > │ System.Console.WriteLine v2 │
00:00:17 #2487 [Verbose] > │ let v23 : string = $"Solution: {v22} " │
00:00:17 #2488 [Verbose] > │ System.Console.WriteLine v23 │
00:00:17 #2489 [Verbose] > │ let v24 : int32 = 0 │
00:00:17 #2490 [Verbose] > │ let v25 : string = "A" │
00:00:17 #2491 [Verbose] > │ let v26 : (float -> float) = closure1() │
00:00:17 #2492 [Verbose] > │ let v27 : UH1 = UH1_1 │
00:00:17 #2493 [Verbose] > │ let v28 : UH1 = UH1_0(v24, v25, v26, v27) │
00:00:17 #2494 [Verbose] > │ let v29 : (struct (int32 * string * (float -> float)) []) = │
00:00:17 #2495 [Verbose] > │ method5(v28) │
00:00:17 #2496 [Verbose] > │ let v30 : uint64 = System.Convert.ToUInt64 v29.Length │
00:00:17 #2497 [Verbose] > │ let v31 : (struct (float * int64) []) = Array.zeroCreate<struct │
00:00:17 #2498 [Verbose] > │ (float * int64)> (System.Convert.ToInt32(v30)) │
00:00:17 #2499 [Verbose] > │ let v32 : Mut0 = {l0 = 0UL} : Mut0 │
00:00:17 #2500 [Verbose] > │ while method4(v30, v32) do │
00:00:17 #2501 [Verbose] > │ let v34 : uint64 = v32.l0 │
00:00:17 #2502 [Verbose] > │ let struct (v35 : int32, v36 : string, v37 : (float -> float)) = │
00:00:17 #2503 [Verbose] > │ v29.[int v34] │
00:00:17 #2504 [Verbose] > │ let mutable result = None │
00:00:17 #2505 [Verbose] > │ #if FABLE_COMPILER_RUST │
00:00:17 #2506 [Verbose] > │ #if !WASM │
00:00:17 #2507 [Verbose] > │ () │
00:00:17 #2508 [Verbose] > │ #else │
00:00:17 #2509 [Verbose] > │ () │
00:00:17 #2510 [Verbose] > │ #endif │
00:00:17 #2511 [Verbose] > │ #else │
00:00:17 #2512 [Verbose] > │ System.GC.Collect () │
00:00:17 #2513 [Verbose] > │ () │
00:00:17 #2514 [Verbose] > │ #endif │
00:00:17 #2515 [Verbose] > │ |> fun x -> result <- Some x │
00:00:17 #2516 [Verbose] > │ result |> Option.get │
00:00:17 #2517 [Verbose] > │ let v38 : (unit -> System.Diagnostics.Stopwatch) = │
00:00:17 #2518 [Verbose] > │ System.Diagnostics.Stopwatch │
00:00:17 #2519 [Verbose] > │ let v39 : System.Diagnostics.Stopwatch = v38 () │
00:00:17 #2520 [Verbose] > │ v39.Start () │
00:00:17 #2521 [Verbose] > │ let v40 : int64 = v39.ElapsedMilliseconds │
00:00:17 #2522 [Verbose] > │ let v41 : (int32 []) = Array.zeroCreate<int32> (2000001) │
00:00:17 #2523 [Verbose] > │ let v42 : Mut1 = {l0 = 0} : Mut1 │
00:00:17 #2524 [Verbose] > │ while method8(v42) do │
00:00:17 #2525 [Verbose] > │ let v44 : int32 = v42.l0 │
00:00:17 #2526 [Verbose] > │ v41.[int v44] <- v44 │
00:00:17 #2527 [Verbose] > │ let v45 : int32 = v44 + 1 │
00:00:17 #2528 [Verbose] > │ v42.l0 <- v45 │
00:00:17 #2529 [Verbose] > │ () │
00:00:17 #2530 [Verbose] > │ let v46 : (int32 -> float) = closure2(v20, v37) │
00:00:17 #2531 [Verbose] > │ let v47 : (float []) = v41 |> Array.Parallel.map v46 │
00:00:17 #2532 [Verbose] > │ let v48 : int32 = v47.Length │
00:00:17 #2533 [Verbose] > │ let v49 : int32 = v48 - 1 │
00:00:17 #2534 [Verbose] > │ let v50 : float = v47.[int v49] │
00:00:17 #2535 [Verbose] > │ let v51 : int64 = v39.ElapsedMilliseconds │
00:00:17 #2536 [Verbose] > │ let v52 : int64 = v51 - v40 │
00:00:17 #2537 [Verbose] > │ let v53 : string = $"Test case {v35 + 1}. {v36}. Time: {v52} " │
00:00:17 #2538 [Verbose] > │ System.Console.WriteLine v53 │
00:00:17 #2539 [Verbose] > │ v31.[int v34] <- struct (v50, v52) │
00:00:17 #2540 [Verbose] > │ let v54 : uint64 = v34 + 1UL │
00:00:17 #2541 [Verbose] > │ v32.l0 <- v54 │
00:00:17 #2542 [Verbose] > │ () │
00:00:17 #2543 [Verbose] > │ let v55 : uint64 = System.Convert.ToUInt64 v31.Length │
00:00:17 #2544 [Verbose] > │ let v56 : (float []) = Array.zeroCreate<float> │
00:00:17 #2545 [Verbose] > │ (System.Convert.ToInt32(v55)) │
00:00:17 #2546 [Verbose] > │ let v57 : Mut0 = {l0 = 0UL} : Mut0 │
00:00:17 #2547 [Verbose] > │ while method4(v55, v57) do │
00:00:17 #2548 [Verbose] > │ let v59 : uint64 = v57.l0 │
00:00:17 #2549 [Verbose] > │ let struct (v60 : float, v61 : int64) = v31.[int v59] │
00:00:17 #2550 [Verbose] > │ v56.[int v59] <- v60 │
00:00:17 #2551 [Verbose] > │ let v62 : uint64 = v59 + 1UL │
00:00:17 #2552 [Verbose] > │ v57.l0 <- v62 │
00:00:17 #2553 [Verbose] > │ () │
00:00:17 #2554 [Verbose] > │ let v63 : uint64 = System.Convert.ToUInt64 v56.Length │
00:00:17 #2555 [Verbose] > │ let v64 : bool = v63 <= 1UL │
00:00:17 #2556 [Verbose] > │ if v64 then │
00:00:17 #2557 [Verbose] > │ () │
00:00:17 #2558 [Verbose] > │ else │
00:00:17 #2559 [Verbose] > │ let v65 : float = v56.[int 0UL] │
00:00:17 #2560 [Verbose] > │ let v66 : uint64 = 0UL │
00:00:17 #2561 [Verbose] > │ let v67 : bool = method9(v65, v56, v66) │
00:00:17 #2562 [Verbose] > │ if v67 then │
00:00:17 #2563 [Verbose] > │ () │
00:00:17 #2564 [Verbose] > │ else │
00:00:17 #2565 [Verbose] > │ let v68 : string = $"Challenge error: {v56}" │
00:00:17 #2566 [Verbose] > │ failwith<unit> v68 │
00:00:17 #2567 [Verbose] > │ let v69 : string = $"%A{v21}" │
00:00:17 #2568 [Verbose] > │ let v70 : (float []) = Array.zeroCreate<float> │
00:00:17 #2569 [Verbose] > │ (System.Convert.ToInt32(v55)) │
00:00:17 #2570 [Verbose] > │ let v71 : Mut0 = {l0 = 0UL} : Mut0 │
00:00:17 #2571 [Verbose] > │ while method4(v55, v71) do │
00:00:17 #2572 [Verbose] > │ let v73 : uint64 = v71.l0 │
00:00:17 #2573 [Verbose] > │ let struct (v74 : float, v75 : int64) = v31.[int v73] │
00:00:17 #2574 [Verbose] > │ v70.[int v73] <- v74 │
00:00:17 #2575 [Verbose] > │ let v76 : uint64 = v73 + 1UL │
00:00:17 #2576 [Verbose] > │ v71.l0 <- v76 │
00:00:17 #2577 [Verbose] > │ () │
00:00:17 #2578 [Verbose] > │ let v77 : float = v70.[int 0UL] │
00:00:17 #2579 [Verbose] > │ let v78 : string = $"%A{v77}" │
00:00:17 #2580 [Verbose] > │ let v79 : (int64 []) = Array.zeroCreate<int64> │
00:00:17 #2581 [Verbose] > │ (System.Convert.ToInt32(v55)) │
00:00:17 #2582 [Verbose] > │ let v80 : Mut0 = {l0 = 0UL} : Mut0 │
00:00:17 #2583 [Verbose] > │ while method4(v55, v80) do │
00:00:17 #2584 [Verbose] > │ let v82 : uint64 = v80.l0 │
00:00:17 #2585 [Verbose] > │ let struct (v83 : float, v84 : int64) = v31.[int v82] │
00:00:17 #2586 [Verbose] > │ v79.[int v82] <- v84 │
00:00:17 #2587 [Verbose] > │ let v85 : uint64 = v82 + 1UL │
00:00:17 #2588 [Verbose] > │ v80.l0 <- v85 │
00:00:17 #2589 [Verbose] > │ () │
00:00:17 #2590 [Verbose] > │ v16.[int v19] <- struct (v69, v22, v78, v79) │
00:00:17 #2591 [Verbose] > │ let v86 : uint64 = v19 + 1UL │
00:00:17 #2592 [Verbose] > │ v17.l0 <- v86 │
00:00:17 #2593 [Verbose] > │ () │
00:00:17 #2594 [Verbose] > │ let v87 : uint64 = System.Convert.ToUInt64 v16.Length │
00:00:17 #2595 [Verbose] > │ let v88 : (struct (UH2 * US0) []) = Array.zeroCreate<struct (UH2 * US0)> │
00:00:17 #2596 [Verbose] > │ (System.Convert.ToInt32(v87)) │
00:00:17 #2597 [Verbose] > │ let v89 : Mut0 = {l0 = 0UL} : Mut0 │
00:00:17 #2598 [Verbose] > │ while method4(v87, v89) do │
00:00:17 #2599 [Verbose] > │ let v91 : uint64 = v89.l0 │
00:00:17 #2600 [Verbose] > │ let struct (v92 : string, v93 : string, v94 : string, v95 : (int64 [ │
00:00:17 #2601 [Verbose] > │ ])) = v16.[int v91] │
00:00:17 #2602 [Verbose] > │ let v96 : uint64 = System.Convert.ToUInt64 v95.Length │
00:00:17 #2603 [Verbose] > │ let v97 : UH3 = UH3_1 │
00:00:17 #2604 [Verbose] > │ let v98 : Mut2 = {l0 = 0UL; l1 = v97; l2 = 0L} : Mut2 │
00:00:17 #2605 [Verbose] > │ while method10(v96, v98) do │
00:00:17 #2606 [Verbose] > │ let v100 : uint64 = v98.l0 │
00:00:17 #2607 [Verbose] > │ let struct (v101 : UH3, v102 : int64) = v98.l1, v98.l2 │
00:00:17 #2608 [Verbose] > │ let v103 : int64 = v95.[int v100] │
00:00:17 #2609 [Verbose] > │ let v104 : int64 = v102 + 1L │
00:00:17 #2610 [Verbose] > │ let v105 : uint64 = v100 + 1UL │
00:00:17 #2611 [Verbose] > │ let v106 : UH3 = UH3_0(v102, v103, v101) │
00:00:17 #2612 [Verbose] > │ v98.l0 <- v105 │
00:00:17 #2613 [Verbose] > │ v98.l1 <- v106 │
00:00:17 #2614 [Verbose] > │ v98.l2 <- v104 │
00:00:17 #2615 [Verbose] > │ () │
00:00:17 #2616 [Verbose] > │ let struct (v107 : UH3, v108 : int64) = v98.l1, v98.l2 │
00:00:17 #2617 [Verbose] > │ let v109 : UH3 = UH3_1 │
00:00:17 #2618 [Verbose] > │ let v110 : UH3 = method11(v107, v109) │
00:00:17 #2619 [Verbose] > │ let v111 : (struct (int64 * int64) []) = method12(v110) │
00:00:17 #2620 [Verbose] > │ let v112 : int32 = v111.Length │
00:00:17 #2621 [Verbose] > │ let v113 : (struct (int64 * int64) []) = Array.zeroCreate<struct │
00:00:17 #2622 [Verbose] > │ (int64 * int64)> (v112) │
00:00:17 #2623 [Verbose] > │ let v114 : Mut1 = {l0 = 0} : Mut1 │
00:00:17 #2624 [Verbose] > │ while method15(v112, v114) do │
00:00:17 #2625 [Verbose] > │ let v116 : int32 = v114.l0 │
00:00:17 #2626 [Verbose] > │ let struct (v117 : int64, v118 : int64) = v111.[int v116] │
00:00:17 #2627 [Verbose] > │ let v119 : int64 = v117 + 1L │
00:00:17 #2628 [Verbose] > │ v113.[int v116] <- struct (v119, v118) │
00:00:17 #2629 [Verbose] > │ let v120 : int32 = v116 + 1 │
00:00:17 #2630 [Verbose] > │ v114.l0 <- v120 │
00:00:17 #2631 [Verbose] > │ () │
00:00:17 #2632 [Verbose] > │ let v121 : (struct (int64 * int64) -> int64) = closure3() │
00:00:17 #2633 [Verbose] > │ let v122 : (struct (int64 * int64) []) = v113 |> Array.sortBy v121 │
00:00:17 #2634 [Verbose] > │ let struct (v123 : int64, v124 : int64) = v122.[int 0] │
00:00:17 #2635 [Verbose] > │ let v125 : string = $"%A{struct (v123, v124)}" │
00:00:17 #2636 [Verbose] > │ let v126 : bool = v92 = v94 │
00:00:17 #2637 [Verbose] > │ let v131 : US0 = │
00:00:17 #2638 [Verbose] > │ if v126 then │
00:00:17 #2639 [Verbose] > │ let v127 : System.ConsoleColor = │
00:00:17 #2640 [Verbose] > │ System.ConsoleColor.DarkGreen │
00:00:17 #2641 [Verbose] > │ US0_1(v127) │
00:00:17 #2642 [Verbose] > │ else │
00:00:17 #2643 [Verbose] > │ let v129 : System.ConsoleColor = System.ConsoleColor.DarkRed │
00:00:17 #2644 [Verbose] > │ US0_1(v129) │
00:00:17 #2645 [Verbose] > │ let v132 : UH2 = UH2_1 │
00:00:17 #2646 [Verbose] > │ let v133 : UH2 = UH2_0(v125, v132) │
00:00:17 #2647 [Verbose] > │ let v134 : UH2 = UH2_0(v94, v133) │
00:00:17 #2648 [Verbose] > │ let v135 : UH2 = UH2_0(v92, v134) │
00:00:17 #2649 [Verbose] > │ let v136 : UH2 = UH2_0(v93, v135) │
00:00:17 #2650 [Verbose] > │ v88.[int v91] <- struct (v136, v131) │
00:00:17 #2651 [Verbose] > │ let v137 : uint64 = v91 + 1UL │
00:00:17 #2652 [Verbose] > │ v89.l0 <- v137 │
00:00:17 #2653 [Verbose] > │ () │
00:00:17 #2654 [Verbose] > │ let v138 : string = "Input" │
00:00:17 #2655 [Verbose] > │ let v139 : string = "Expected" │
00:00:17 #2656 [Verbose] > │ let v140 : string = "Result" │
00:00:17 #2657 [Verbose] > │ let v141 : string = "Best" │
00:00:17 #2658 [Verbose] > │ let v142 : UH2 = UH2_1 │
00:00:17 #2659 [Verbose] > │ let v143 : UH2 = UH2_0(v141, v142) │
00:00:17 #2660 [Verbose] > │ let v144 : UH2 = UH2_0(v140, v143) │
00:00:17 #2661 [Verbose] > │ let v145 : UH2 = UH2_0(v139, v144) │
00:00:17 #2662 [Verbose] > │ let v146 : UH2 = UH2_0(v138, v145) │
00:00:17 #2663 [Verbose] > │ let v147 : US0 = US0_0 │
00:00:17 #2664 [Verbose] > │ let v148 : string = "---" │
00:00:17 #2665 [Verbose] > │ let v149 : UH2 = UH2_1 │
00:00:17 #2666 [Verbose] > │ let v150 : UH2 = UH2_0(v148, v149) │
00:00:17 #2667 [Verbose] > │ let v151 : UH2 = UH2_0(v148, v150) │
00:00:17 #2668 [Verbose] > │ let v152 : UH2 = UH2_0(v148, v151) │
00:00:17 #2669 [Verbose] > │ let v153 : UH2 = UH2_0(v148, v152) │
00:00:17 #2670 [Verbose] > │ let v154 : US0 = US0_0 │
00:00:17 #2671 [Verbose] > │ let v155 : UH4 = UH4_1 │
00:00:17 #2672 [Verbose] > │ let v156 : UH4 = UH4_0(v153, v154, v155) │
00:00:17 #2673 [Verbose] > │ let v157 : UH4 = UH4_0(v146, v147, v156) │
00:00:17 #2674 [Verbose] > │ let v158 : (struct (UH2 * US0) []) = method16(v157) │
00:00:17 #2675 [Verbose] > │ let v159 : uint64 = System.Convert.ToUInt64 v158.Length │
00:00:17 #2676 [Verbose] > │ let v160 : uint64 = System.Convert.ToUInt64 v88.Length │
00:00:17 #2677 [Verbose] > │ let v161 : uint64 = v159 + v160 │
00:00:17 #2678 [Verbose] > │ let v162 : (struct (UH2 * US0) []) = Array.zeroCreate<struct (UH2 * │
00:00:17 #2679 [Verbose] > │ US0)> (System.Convert.ToInt32(v161)) │
00:00:17 #2680 [Verbose] > │ let v163 : Mut0 = {l0 = 0UL} : Mut0 │
00:00:17 #2681 [Verbose] > │ while method4(v161, v163) do │
00:00:17 #2682 [Verbose] > │ let v165 : uint64 = v163.l0 │
00:00:17 #2683 [Verbose] > │ let v166 : bool = v165 < v159 │
00:00:17 #2684 [Verbose] > │ let struct (v172 : UH2, v173 : US0) = │
00:00:17 #2685 [Verbose] > │ if v166 then │
00:00:17 #2686 [Verbose] > │ let struct (v167 : UH2, v168 : US0) = v158.[int v165] │
00:00:17 #2687 [Verbose] > │ struct (v167, v168) │
00:00:17 #2688 [Verbose] > │ else │
00:00:17 #2689 [Verbose] > │ let v169 : uint64 = v165 - v159 │
00:00:17 #2690 [Verbose] > │ let struct (v170 : UH2, v171 : US0) = v88.[int v169] │
00:00:17 #2691 [Verbose] > │ struct (v170, v171) │
00:00:17 #2692 [Verbose] > │ v162.[int v165] <- struct (v172, v173) │
00:00:17 #2693 [Verbose] > │ let v174 : uint64 = v165 + 1UL │
00:00:17 #2694 [Verbose] > │ v163.l0 <- v174 │
00:00:17 #2695 [Verbose] > │ () │
00:00:17 #2696 [Verbose] > │ let v175 : uint64 = System.Convert.ToUInt64 v162.Length │
00:00:17 #2697 [Verbose] > │ let v176 : ((string []) []) = Array.zeroCreate<(string [])> │
00:00:17 #2698 [Verbose] > │ (System.Convert.ToInt32(v175)) │
00:00:17 #2699 [Verbose] > │ let v177 : Mut0 = {l0 = 0UL} : Mut0 │
00:00:17 #2700 [Verbose] > │ while method4(v175, v177) do │
00:00:17 #2701 [Verbose] > │ let v179 : uint64 = v177.l0 │
00:00:17 #2702 [Verbose] > │ let struct (v180 : UH2, v181 : US0) = v162.[int v179] │
00:00:17 #2703 [Verbose] > │ let v182 : (string []) = method19(v180) │
00:00:17 #2704 [Verbose] > │ v176.[int v179] <- v182 │
00:00:17 #2705 [Verbose] > │ let v183 : uint64 = v179 + 1UL │
00:00:17 #2706 [Verbose] > │ v177.l0 <- v183 │
00:00:17 #2707 [Verbose] > │ () │
00:00:17 #2708 [Verbose] > │ let v184 : ((string []) []) = v176 |> Array.transpose │
00:00:17 #2709 [Verbose] > │ let v185 : uint64 = System.Convert.ToUInt64 v184.Length │
00:00:17 #2710 [Verbose] > │ let v186 : (int64 []) = Array.zeroCreate<int64> │
00:00:17 #2711 [Verbose] > │ (System.Convert.ToInt32(v185)) │
00:00:17 #2712 [Verbose] > │ let v187 : Mut0 = {l0 = 0UL} : Mut0 │
00:00:17 #2713 [Verbose] > │ while method4(v185, v187) do │
00:00:17 #2714 [Verbose] > │ let v189 : uint64 = v187.l0 │
00:00:17 #2715 [Verbose] > │ let v190 : (string []) = v184.[int v189] │
00:00:17 #2716 [Verbose] > │ let v191 : uint64 = System.Convert.ToUInt64 v190.Length │
00:00:17 #2717 [Verbose] > │ let v192 : (int64 []) = Array.zeroCreate<int64> │
00:00:17 #2718 [Verbose] > │ (System.Convert.ToInt32(v191)) │
00:00:17 #2719 [Verbose] > │ let v193 : Mut0 = {l0 = 0UL} : Mut0 │
00:00:17 #2720 [Verbose] > │ while method4(v191, v193) do │
00:00:17 #2721 [Verbose] > │ let v195 : uint64 = v193.l0 │
00:00:17 #2722 [Verbose] > │ let v196 : string = v190.[int v195] │
00:00:17 #2723 [Verbose] > │ let v197 : int64 = System.Convert.ToInt64 v196.Length │
00:00:17 #2724 [Verbose] > │ v192.[int v195] <- v197 │
00:00:17 #2725 [Verbose] > │ let v198 : uint64 = v195 + 1UL │
00:00:17 #2726 [Verbose] > │ v193.l0 <- v198 │
00:00:17 #2727 [Verbose] > │ () │
00:00:17 #2728 [Verbose] > │ let v199 : (int64 []) = v192 |> Array.sortDescending │
00:00:17 #2729 [Verbose] > │ let v200 : int64 option = v199 |> Array.tryItem 0 │
00:00:17 #2730 [Verbose] > │ let v201 : (int64 -> US1) = closure4() │
00:00:17 #2731 [Verbose] > │ let v202 : US1 = US1_0 │
00:00:17 #2732 [Verbose] > │ let v203 : US1 = v200 |> Option.map v201 |> Option.defaultValue v202 │
00:00:17 #2733 [Verbose] > │ let v206 : int64 = │
00:00:17 #2734 [Verbose] > │ match v203 with │
00:00:17 #2735 [Verbose] > │ | US1_0 -> (* None *) │
00:00:17 #2736 [Verbose] > │ 0L │
00:00:17 #2737 [Verbose] > │ | US1_1(v204) -> (* Some *) │
00:00:17 #2738 [Verbose] > │ v204 │
00:00:17 #2739 [Verbose] > │ v186.[int v189] <- v206 │
00:00:17 #2740 [Verbose] > │ let v207 : uint64 = v189 + 1UL │
00:00:17 #2741 [Verbose] > │ v187.l0 <- v207 │
00:00:17 #2742 [Verbose] > │ () │
00:00:17 #2743 [Verbose] > │ let v208 : uint64 = System.Convert.ToUInt64 v186.Length │
00:00:17 #2744 [Verbose] > │ let v209 : UH5 = UH5_1 │
00:00:17 #2745 [Verbose] > │ let v210 : Mut3 = {l0 = 0UL; l1 = v209; l2 = 0} : Mut3 │
00:00:17 #2746 [Verbose] > │ while method22(v208, v210) do │
00:00:17 #2747 [Verbose] > │ let v212 : uint64 = v210.l0 │
00:00:17 #2748 [Verbose] > │ let struct (v213 : UH5, v214 : int32) = v210.l1, v210.l2 │
00:00:17 #2749 [Verbose] > │ let v215 : int64 = v186.[int v212] │
00:00:17 #2750 [Verbose] > │ let v216 : int32 = v214 + 1 │
00:00:17 #2751 [Verbose] > │ let v217 : uint64 = v212 + 1UL │
00:00:17 #2752 [Verbose] > │ let v218 : UH5 = UH5_0(v214, v215, v213) │
00:00:17 #2753 [Verbose] > │ v210.l0 <- v217 │
00:00:17 #2754 [Verbose] > │ v210.l1 <- v218 │
00:00:17 #2755 [Verbose] > │ v210.l2 <- v216 │
00:00:17 #2756 [Verbose] > │ () │
00:00:17 #2757 [Verbose] > │ let struct (v219 : UH5, v220 : int32) = v210.l1, v210.l2 │
00:00:17 #2758 [Verbose] > │ let v221 : UH5 = UH5_1 │
00:00:17 #2759 [Verbose] > │ let v222 : UH5 = method23(v219, v221) │
00:00:17 #2760 [Verbose] > │ let v223 : (struct (int32 * int64) []) = method24(v222) │
00:00:17 #2761 [Verbose] > │ let v224 : Map<int32, int64> = v223 |> Array.map (fun (struct (a, b)) -> │
00:00:17 #2762 [Verbose] > │ a, b) |> Map.ofArray │
00:00:17 #2763 [Verbose] > │ let v225 : (struct ((string []) * US0) []) = Array.zeroCreate<struct │
00:00:17 #2764 [Verbose] > │ ((string []) * US0)> (System.Convert.ToInt32(v175)) │
00:00:17 #2765 [Verbose] > │ let v226 : Mut0 = {l0 = 0UL} : Mut0 │
00:00:17 #2766 [Verbose] > │ while method4(v175, v226) do │
00:00:17 #2767 [Verbose] > │ let v228 : uint64 = v226.l0 │
00:00:17 #2768 [Verbose] > │ let struct (v229 : UH2, v230 : US0) = v162.[int v228] │
00:00:17 #2769 [Verbose] > │ let v231 : UH6 = UH6_1 │
00:00:17 #2770 [Verbose] > │ let v232 : int32 = 0 │
00:00:17 #2771 [Verbose] > │ let struct (v233 : UH6, v234 : int32) = method27(v229, v231, v232) │
00:00:17 #2772 [Verbose] > │ let v235 : UH6 = UH6_1 │
00:00:17 #2773 [Verbose] > │ let v236 : UH6 = method28(v233, v235) │
00:00:17 #2774 [Verbose] > │ let v237 : UH2 = UH2_1 │
00:00:17 #2775 [Verbose] > │ let v238 : UH2 = method29(v224, v236, v237) │
00:00:17 #2776 [Verbose] > │ let v239 : (string []) = method30(v238) │
00:00:17 #2777 [Verbose] > │ v225.[int v228] <- struct (v239, v230) │
00:00:17 #2778 [Verbose] > │ let v240 : uint64 = v228 + 1UL │
00:00:17 #2779 [Verbose] > │ v226.l0 <- v240 │
00:00:17 #2780 [Verbose] > │ () │
00:00:17 #2781 [Verbose] > │ System.Console.WriteLine v2 │
00:00:17 #2782 [Verbose] > │ let v241 : uint64 = System.Convert.ToUInt64 v225.Length │
00:00:17 #2783 [Verbose] > │ let v242 : Mut0 = {l0 = 0UL} : Mut0 │
00:00:17 #2784 [Verbose] > │ while method4(v241, v242) do │
00:00:17 #2785 [Verbose] > │ let v244 : uint64 = v242.l0 │
00:00:17 #2786 [Verbose] > │ let struct (v245 : (string []), v246 : US0) = v225.[int v244] │
00:00:17 #2787 [Verbose] > │ match v246 with │
00:00:17 #2788 [Verbose] > │ | US0_0 -> (* None *) │
00:00:17 #2789 [Verbose] > │ let mutable result = None │
00:00:17 #2790 [Verbose] > │ #if FABLE_COMPILER_RUST │
00:00:17 #2791 [Verbose] > │ #if !WASM │
00:00:17 #2792 [Verbose] > │ () │
00:00:17 #2793 [Verbose] > │ #else │
00:00:17 #2794 [Verbose] > │ () │
00:00:17 #2795 [Verbose] > │ #endif │
00:00:17 #2796 [Verbose] > │ #else │
00:00:17 #2797 [Verbose] > │ System.Console.ResetColor () │
00:00:17 #2798 [Verbose] > │ () │
00:00:17 #2799 [Verbose] > │ #endif │
00:00:17 #2800 [Verbose] > │ |> fun x -> result <- Some x │
00:00:17 #2801 [Verbose] > │ result |> Option.get │
00:00:17 #2802 [Verbose] > │ () │
00:00:17 #2803 [Verbose] > │ | US0_1(v247) -> (* Some *) │
00:00:17 #2804 [Verbose] > │ let mutable result = None │
00:00:17 #2805 [Verbose] > │ #if FABLE_COMPILER_RUST │
00:00:17 #2806 [Verbose] > │ #if !WASM │
00:00:17 #2807 [Verbose] > │ () │
00:00:17 #2808 [Verbose] > │ #else │
00:00:17 #2809 [Verbose] > │ () │
00:00:17 #2810 [Verbose] > │ #endif │
00:00:17 #2811 [Verbose] > │ #else │
00:00:17 #2812 [Verbose] > │ System.Console.ForegroundColor <- v247 │
00:00:17 #2813 [Verbose] > │ () │
00:00:17 #2814 [Verbose] > │ #endif │
00:00:17 #2815 [Verbose] > │ |> fun x -> result <- Some x │
00:00:17 #2816 [Verbose] > │ result |> Option.get │
00:00:17 #2817 [Verbose] > │ () │
00:00:17 #2818 [Verbose] > │ let v248 : string = "\t| " │
00:00:17 #2819 [Verbose] > │ let v249 : string = System.String.Join (v248, v245) │
00:00:17 #2820 [Verbose] > │ System.Console.WriteLine v249 │
00:00:17 #2821 [Verbose] > │ let mutable result = None │
00:00:17 #2822 [Verbose] > │ #if FABLE_COMPILER_RUST │
00:00:17 #2823 [Verbose] > │ #if !WASM │
00:00:17 #2824 [Verbose] > │ () │
00:00:17 #2825 [Verbose] > │ #else │
00:00:17 #2826 [Verbose] > │ () │
00:00:17 #2827 [Verbose] > │ #endif │
00:00:17 #2828 [Verbose] > │ #else │
00:00:17 #2829 [Verbose] > │ System.Console.ResetColor () │
00:00:17 #2830 [Verbose] > │ () │
00:00:17 #2831 [Verbose] > │ #endif │
00:00:17 #2832 [Verbose] > │ |> fun x -> result <- Some x │
00:00:17 #2833 [Verbose] > │ result |> Option.get │
00:00:17 #2834 [Verbose] > │ let v250 : uint64 = v244 + 1UL │
00:00:17 #2835 [Verbose] > │ v242.l0 <- v250 │
00:00:17 #2836 [Verbose] > │ () │
00:00:17 #2837 [Verbose] > │ let v251 : ((float []) []) = Array.zeroCreate<(float [])> │
00:00:17 #2838 [Verbose] > │ (System.Convert.ToInt32(v87)) │
00:00:17 #2839 [Verbose] > │ let v252 : Mut0 = {l0 = 0UL} : Mut0 │
00:00:17 #2840 [Verbose] > │ while method4(v87, v252) do │
00:00:17 #2841 [Verbose] > │ let v254 : uint64 = v252.l0 │
00:00:17 #2842 [Verbose] > │ let struct (v255 : string, v256 : string, v257 : string, v258 : │
00:00:17 #2843 [Verbose] > │ (int64 [])) = v16.[int v254] │
00:00:17 #2844 [Verbose] > │ let v259 : (int64 -> float) = float │
00:00:17 #2845 [Verbose] > │ let v260 : uint64 = System.Convert.ToUInt64 v258.Length │
00:00:17 #2846 [Verbose] > │ let v261 : (float []) = Array.zeroCreate<float> │
00:00:17 #2847 [Verbose] > │ (System.Convert.ToInt32(v260)) │
00:00:17 #2848 [Verbose] > │ let v262 : Mut0 = {l0 = 0UL} : Mut0 │
00:00:17 #2849 [Verbose] > │ while method4(v260, v262) do │
00:00:17 #2850 [Verbose] > │ let v264 : uint64 = v262.l0 │
00:00:17 #2851 [Verbose] > │ let v265 : int64 = v258.[int v264] │
00:00:17 #2852 [Verbose] > │ let v266 : float = v259 v265 │
00:00:17 #2853 [Verbose] > │ v261.[int v264] <- v266 │
00:00:17 #2854 [Verbose] > │ let v267 : uint64 = v264 + 1UL │
00:00:17 #2855 [Verbose] > │ v262.l0 <- v267 │
00:00:17 #2856 [Verbose] > │ () │
00:00:17 #2857 [Verbose] > │ v251.[int v254] <- v261 │
00:00:17 #2858 [Verbose] > │ let v268 : uint64 = v254 + 1UL │
00:00:17 #2859 [Verbose] > │ v252.l0 <- v268 │
00:00:17 #2860 [Verbose] > │ () │
00:00:17 #2861 [Verbose] > │ let v269 : ((float []) []) = v251 |> Array.transpose │
00:00:17 #2862 [Verbose] > │ let v270 : uint64 = System.Convert.ToUInt64 v269.Length │
00:00:17 #2863 [Verbose] > │ let v271 : (float []) = Array.zeroCreate<float> │
00:00:17 #2864 [Verbose] > │ (System.Convert.ToInt32(v270)) │
00:00:17 #2865 [Verbose] > │ let v272 : Mut0 = {l0 = 0UL} : Mut0 │
00:00:17 #2866 [Verbose] > │ while method4(v270, v272) do │
00:00:17 #2867 [Verbose] > │ let v274 : uint64 = v272.l0 │
00:00:17 #2868 [Verbose] > │ let v275 : (float []) = v269.[int v274] │
00:00:17 #2869 [Verbose] > │ let v276 : float = v275 |> Array.average │
00:00:17 #2870 [Verbose] > │ v271.[int v274] <- v276 │
00:00:17 #2871 [Verbose] > │ let v277 : uint64 = v274 + 1UL │
00:00:17 #2872 [Verbose] > │ v272.l0 <- v277 │
00:00:17 #2873 [Verbose] > │ () │
00:00:17 #2874 [Verbose] > │ let v278 : (float -> int64) = int64 │
00:00:17 #2875 [Verbose] > │ let v279 : uint64 = System.Convert.ToUInt64 v271.Length │
00:00:17 #2876 [Verbose] > │ let v280 : (int64 []) = Array.zeroCreate<int64> │
00:00:17 #2877 [Verbose] > │ (System.Convert.ToInt32(v279)) │
00:00:17 #2878 [Verbose] > │ let v281 : Mut0 = {l0 = 0UL} : Mut0 │
00:00:17 #2879 [Verbose] > │ while method4(v279, v281) do │
00:00:17 #2880 [Verbose] > │ let v283 : uint64 = v281.l0 │
00:00:17 #2881 [Verbose] > │ let v284 : float = v271.[int v283] │
00:00:17 #2882 [Verbose] > │ let v285 : int64 = v278 v284 │
00:00:17 #2883 [Verbose] > │ v280.[int v283] <- v285 │
00:00:17 #2884 [Verbose] > │ let v286 : uint64 = v283 + 1UL │
00:00:17 #2885 [Verbose] > │ v281.l0 <- v286 │
00:00:17 #2886 [Verbose] > │ () │
00:00:17 #2887 [Verbose] > │ let v287 : uint64 = System.Convert.ToUInt64 v280.Length │
00:00:17 #2888 [Verbose] > │ let v288 : UH5 = UH5_1 │
00:00:17 #2889 [Verbose] > │ let v289 : Mut3 = {l0 = 0UL; l1 = v288; l2 = 0} : Mut3 │
00:00:17 #2890 [Verbose] > │ while method22(v287, v289) do │
00:00:17 #2891 [Verbose] > │ let v291 : uint64 = v289.l0 │
00:00:17 #2892 [Verbose] > │ let struct (v292 : UH5, v293 : int32) = v289.l1, v289.l2 │
00:00:17 #2893 [Verbose] > │ let v294 : int64 = v280.[int v291] │
00:00:17 #2894 [Verbose] > │ let v295 : int32 = v293 + 1 │
00:00:17 #2895 [Verbose] > │ let v296 : uint64 = v291 + 1UL │
00:00:17 #2896 [Verbose] > │ let v297 : UH5 = UH5_0(v293, v294, v292) │
00:00:17 #2897 [Verbose] > │ v289.l0 <- v296 │
00:00:17 #2898 [Verbose] > │ v289.l1 <- v297 │
00:00:17 #2899 [Verbose] > │ v289.l2 <- v295 │
00:00:17 #2900 [Verbose] > │ () │
00:00:17 #2901 [Verbose] > │ let struct (v298 : UH5, v299 : int32) = v289.l1, v289.l2 │
00:00:17 #2902 [Verbose] > │ let v300 : UH5 = UH5_1 │
00:00:17 #2903 [Verbose] > │ let v301 : UH5 = method23(v298, v300) │
00:00:17 #2904 [Verbose] > │ let v302 : (struct (int32 * int64) []) = method33(v301) │
00:00:17 #2905 [Verbose] > │ System.Console.WriteLine v2 │
00:00:17 #2906 [Verbose] > │ let v303 : string = "Average Ranking " │
00:00:17 #2907 [Verbose] > │ System.Console.WriteLine v303 │
00:00:17 #2908 [Verbose] > │ let v304 : (struct (int32 * int64) -> int64) = closure5() │
00:00:17 #2909 [Verbose] > │ let v305 : (struct (int32 * int64) []) = v302 |> Array.sortBy v304 │
00:00:17 #2910 [Verbose] > │ let v306 : uint64 = System.Convert.ToUInt64 v305.Length │
00:00:17 #2911 [Verbose] > │ let v307 : Mut0 = {l0 = 0UL} : Mut0 │
00:00:17 #2912 [Verbose] > │ while method4(v306, v307) do │
00:00:17 #2913 [Verbose] > │ let v309 : uint64 = v307.l0 │
00:00:17 #2914 [Verbose] > │ let struct (v310 : int32, v311 : int64) = v305.[int v309] │
00:00:17 #2915 [Verbose] > │ let v312 : string = $"Test case %d{v310 + 1}. Average Time: %A{v311} │
00:00:17 #2916 [Verbose] > │ " │
00:00:17 #2917 [Verbose] > │ System.Console.WriteLine v312 │
00:00:17 #2918 [Verbose] > │ let v313 : uint64 = v309 + 1UL │
00:00:17 #2919 [Verbose] > │ v307.l0 <- v313 │
00:00:17 #2920 [Verbose] > │ () │
00:00:17 #2921 [Verbose] > │ () │
00:00:17 #2922 [Verbose] > │ method0() │
00:00:17 #2923 [Verbose] > │ │
00:00:17 #2924 [Verbose] > │ │
00:00:17 #2925 [Verbose] > │ │
00:00:17 #2926 [Verbose] > │ Test: v0 │
00:00:17 #2927 [Verbose] > │ │
00:00:17 #2928 [Verbose] > │ Solution: 0.0 │
00:00:17 #2929 [Verbose] > │ Test case 1. A. Time: 20 │
00:00:17 #2930 [Verbose] > │ │
00:00:17 #2931 [Verbose] > │ Solution: 2.0 │
00:00:17 #2932 [Verbose] > │ Test case 1. A. Time: 10 │
00:00:17 #2933 [Verbose] > │ │
00:00:17 #2934 [Verbose] > │ Solution: 5.0 │
00:00:17 #2935 [Verbose] > │ Test case 1. A. Time: 9 │
00:00:17 #2936 [Verbose] > │ │
00:00:17 #2937 [Verbose] > │ Input | Expected | Result | Best │
00:00:17 #2938 [Verbose] > │ --- | --- | --- | --- │
00:00:17 #2939 [Verbose] > │ 0.0 | 1.0 | 1.0 | struct (1L, 20L) │
00:00:17 #2940 [Verbose] > │ 2.0 | 3.0 | 3.0 | struct (1L, 10L) │
00:00:17 #2941 [Verbose] > │ 5.0 | 6.0 | 6.0 | struct (1L, 9L) │
00:00:17 #2942 [Verbose] > │ │
00:00:17 #2943 [Verbose] > │ Average Ranking │
00:00:17 #2944 [Verbose] > │ Test case 1. Average Time: 13L │
00:00:17 #2945 [Verbose] > │ │
00:00:17 #2946 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:18 #2947 [Verbose] > [NbConvertApp] Converting notebook benchmark.dib.ipynb to html
00:00:18 #2948 [Verbose] > /opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:00:18 #2949 [Verbose] > validate(nb)
00:00:18 #2950 [Verbose] > /opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:00:18 #2951 [Verbose] > return _pygments_highlight(
00:00:19 #2952 [Verbose] > [NbConvertApp] Writing 406166 bytes to benchmark.dib.html
00:00:19 #2953 [Debug] executeAsync / exitCode: 0 / output.Length: 289457
00:00:19 #2954 [Debug] main / executeCommand / exitCode: 0
00:00:00 #1 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #2 [Debug] executeAsync / options: { Command =
"dotnet "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 --default-int i32 --default-float f64"
WorkingDirectory = None
CancellationToken = Some System.Threading.CancellationToken
OnLine = Some <fun:main@464-1020> }
00:00:00 #3 [Verbose] > pwd: /home/runner/work/polyglot/polyglot/lib/spiral
00:00:00 #4 [Verbose] > dll_path: /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release
00:00:00 #5 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #6 [Verbose] waitForPortAccess / port: 13805 / retry: 0
00:00:00 #7 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #8 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #9 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #10 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #11 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #12 [Verbose] > Starting the Spiral Server. It is bound to: http://localhost:13805
00:00:00 #13 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #14 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #15 [Debug] sendJson / port: 13805 / json: {"Ping":true} / result.Length:
00:00:00 #16 [Verbose] awaitCompiler / Ping / result: Some(null) / port: 13805 / retry: 0
00:00:00 #17 [Verbose] > Server bound to: http://localhost:13805
00:00:00 #18 [Debug] executeAsync / options: { Command = "pwsh -c "../../scripts/invoke-dib.ps1 stream.dib""
WorkingDirectory = None
CancellationToken = Some System.Threading.CancellationToken
OnLine = None }
00:00:02 #19 [Verbose] >
00:00:02 #20 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:02 #21 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:02 #22 [Verbose] > │ # stream │
00:00:02 #23 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:02 #24 [Verbose] >
00:00:02 #25 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:02 #26 [Verbose] > // // test
00:00:02 #27 [Verbose] >
00:00:02 #28 [Verbose] > open testing
00:00:03 #29 [Verbose] > Building /tmp/!dotnet-repl/20240320-1228-4096-9670-9f0dd724ccbe/main.spi
00:00:05 #30 [Verbose] >
00:00:05 #31 [Verbose] > ╭─[ 3.45s - stdout ]───────────────────────────────────────────────────────────╮
00:00:05 #32 [Verbose] > │ () │
00:00:05 #33 [Verbose] > │ │
00:00:05 #34 [Verbose] > │ │
00:00:05 #35 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:05 #36 [Verbose] >
00:00:05 #37 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:05 #38 [Verbose] > union rec stream t =
00:00:05 #39 [Verbose] > | StreamCons : t * (() -> stream t)
00:00:05 #40 [Verbose] > | StreamNil
00:00:05 #41 [Verbose] > Building /tmp/!dotnet-repl/20240320-1228-4338-3865-3bbb73c0f332/main.spi
00:00:05 #42 [Verbose] >
00:00:05 #43 [Verbose] > ╭─[ 217.54ms - stdout ]────────────────────────────────────────────────────────╮
00:00:05 #44 [Verbose] > │ () │
00:00:05 #45 [Verbose] > │ │
00:00:05 #46 [Verbose] > │ │
00:00:05 #47 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:05 #48 [Verbose] >
00:00:05 #49 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:05 #50 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:05 #51 [Verbose] > │ ## fold │
00:00:05 #52 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:05 #53 [Verbose] >
00:00:05 #54 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:05 #55 [Verbose] > inl fold fn init s =
00:00:05 #56 [Verbose] > inl rec body acc = function
00:00:05 #57 [Verbose] > | StreamCons (st, fn') => loop (fn acc st) (fn' ())
00:00:05 #58 [Verbose] > | StreamNil => acc
00:00:05 #59 [Verbose] > and inl loop acc = join_body body acc
00:00:05 #60 [Verbose] > loop init s
00:00:06 #61 [Verbose] > Building /tmp/!dotnet-repl/20240320-1228-4360-6060-6be4da1bea9d/main.spi
00:00:06 #62 [Verbose] >
00:00:06 #63 [Verbose] > ╭─[ 155.95ms - stdout ]────────────────────────────────────────────────────────╮
00:00:06 #64 [Verbose] > │ () │
00:00:06 #65 [Verbose] > │ │
00:00:06 #66 [Verbose] > │ │
00:00:06 #67 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #68 [Verbose] >
00:00:06 #69 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:06 #70 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:06 #71 [Verbose] > │ ## fold_back │
00:00:06 #72 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #73 [Verbose] >
00:00:06 #74 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 #75 [Verbose] > inl fold_back fn s init =
00:00:06 #76 [Verbose] > inl rec body acc = function
00:00:06 #77 [Verbose] > | StreamCons (st, fn') => fn st (loop acc (fn' ()))
00:00:06 #78 [Verbose] > | StreamNil => acc
00:00:06 #79 [Verbose] > and inl loop acc = join_body body acc
00:00:06 #80 [Verbose] > loop init s
00:00:06 #81 [Verbose] > Building /tmp/!dotnet-repl/20240320-1228-4376-7610-7bbb401c8b9a/main.spi
00:00:06 #82 [Verbose] >
00:00:06 #83 [Verbose] > ╭─[ 167.02ms - stdout ]────────────────────────────────────────────────────────╮
00:00:06 #84 [Verbose] > │ () │
00:00:06 #85 [Verbose] > │ │
00:00:06 #86 [Verbose] > │ │
00:00:06 #87 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #88 [Verbose] >
00:00:06 #89 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:06 #90 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:06 #91 [Verbose] > │ ## to_list │
00:00:06 #92 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #93 [Verbose] >
00:00:06 #94 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 #95 [Verbose] > inl to_list s =
00:00:06 #96 [Verbose] > (s, [[]])
00:00:06 #97 [Verbose] > ||> fold_back fun x acc =>
00:00:06 #98 [Verbose] > x :: acc
00:00:06 #99 [Verbose] > Building /tmp/!dotnet-repl/20240320-1228-4392-9277-9a79aad2ae74/main.spi
00:00:06 #100 [Verbose] >
00:00:06 #101 [Verbose] > ╭─[ 150.66ms - stdout ]────────────────────────────────────────────────────────╮
00:00:06 #102 [Verbose] > │ () │
00:00:06 #103 [Verbose] > │ │
00:00:06 #104 [Verbose] > │ │
00:00:06 #105 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #106 [Verbose] >
00:00:06 #107 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:06 #108 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:06 #109 [Verbose] > │ ## rev │
00:00:06 #110 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #111 [Verbose] >
00:00:06 #112 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 #113 [Verbose] > inl rev s =
00:00:06 #114 [Verbose] > (StreamNil, s)
00:00:06 #115 [Verbose] > ||> fold fun s x =>
00:00:06 #116 [Verbose] > StreamCons (x, fun () => s)
00:00:06 #117 [Verbose] > Building /tmp/!dotnet-repl/20240320-1228-4407-0793-04d8182aedc7/main.spi
00:00:06 #118 [Verbose] >
00:00:06 #119 [Verbose] > ╭─[ 143.09ms - stdout ]────────────────────────────────────────────────────────╮
00:00:06 #120 [Verbose] > │ () │
00:00:06 #121 [Verbose] > │ │
00:00:06 #122 [Verbose] > │ │
00:00:06 #123 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #124 [Verbose] >
00:00:06 #125 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:06 #126 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:06 #127 [Verbose] > │ ## from_list │
00:00:06 #128 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #129 [Verbose] >
00:00:06 #130 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 #131 [Verbose] > inl from_list list =
00:00:06 #132 [Verbose] > (list, StreamNil)
00:00:06 #133 [Verbose] > ||> listm.foldBack fun x acc =>
00:00:06 #134 [Verbose] > StreamCons (x, fun () => acc)
00:00:06 #135 [Verbose] > Building /tmp/!dotnet-repl/20240320-1228-4422-2243-243bf6e06fbc/main.spi
00:00:06 #136 [Verbose] >
00:00:06 #137 [Verbose] > ╭─[ 154.25ms - stdout ]────────────────────────────────────────────────────────╮
00:00:06 #138 [Verbose] > │ () │
00:00:06 #139 [Verbose] > │ │
00:00:06 #140 [Verbose] > │ │
00:00:06 #141 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #142 [Verbose] >
00:00:06 #143 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 #144 [Verbose] > // // test
00:00:06 #145 [Verbose] >
00:00:06 #146 [Verbose] > listm.init 3i32 id
00:00:06 #147 [Verbose] > |> from_list
00:00:06 #148 [Verbose] > |> rev
00:00:06 #149 [Verbose] > |> to_list
00:00:06 #150 [Verbose] > |> _assert_eq [[ 2; 1; 0 ]]
00:00:06 #151 [Verbose] > Building /tmp/!dotnet-repl/20240320-1228-4437-3794-3f9990e61419/main.spi
00:00:07 #152 [Verbose] >
00:00:07 #153 [Verbose] > ╭─[ 911.53ms - stdout ]────────────────────────────────────────────────────────╮
00:00:07 #154 [Verbose] > │ type UH0 = │
00:00:07 #155 [Verbose] > │ | UH0_0 of int32 * UH0 │
00:00:07 #156 [Verbose] > │ | UH0_1 │
00:00:07 #157 [Verbose] > │ let rec method0 () : unit = │
00:00:07 #158 [Verbose] > │ let v18 : UH0 = UH0_1 │
00:00:07 #159 [Verbose] > │ let v19 : UH0 = UH0_0(0, v18) │
00:00:07 #160 [Verbose] > │ let v20 : UH0 = UH0_0(1, v19) │
00:00:07 #161 [Verbose] > │ let v21 : UH0 = UH0_0(2, v20) │
00:00:07 #162 [Verbose] > │ let v22 : UH0 = UH0_1 │
00:00:07 #163 [Verbose] > │ let v23 : UH0 = UH0_0(0, v22) │
00:00:07 #164 [Verbose] > │ let v24 : UH0 = UH0_0(1, v23) │
00:00:07 #165 [Verbose] > │ let v25 : UH0 = UH0_0(2, v24) │
00:00:07 #166 [Verbose] > │ let v26 : string = $"__expect / actual: %A{v21} / expected: %A{v25}" │
00:00:07 #167 [Verbose] > │ () │
00:00:07 #168 [Verbose] > │ method0() │
00:00:07 #169 [Verbose] > │ │
00:00:07 #170 [Verbose] > │ │
00:00:07 #171 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #172 [Verbose] >
00:00:07 #173 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:07 #174 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:07 #175 [Verbose] > │ ## try_item │
00:00:07 #176 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #177 [Verbose] >
00:00:07 #178 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:07 #179 [Verbose] > inl try_item i s =
00:00:07 #180 [Verbose] > inl rec body i = function
00:00:07 #181 [Verbose] > | StreamCons (x, _) when i <= 0 => Some x
00:00:07 #182 [Verbose] > | StreamCons (_, fn) => loop (i - 1) (fn ())
00:00:07 #183 [Verbose] > | StreamNil => None
00:00:07 #184 [Verbose] > and inl loop acc s' =
00:00:07 #185 [Verbose] > match var_is acc, var_is s' with
00:00:07 #186 [Verbose] > | false, false => body acc s'
00:00:07 #187 [Verbose] > | _ =>
00:00:07 #188 [Verbose] > inl acc = dyn acc
00:00:07 #189 [Verbose] > inl s' = dyn s'
00:00:07 #190 [Verbose] > join body acc s'
00:00:07 #191 [Verbose] > loop i s
00:00:07 #192 [Verbose] >
00:00:07 #193 [Verbose] > inl item i =
00:00:07 #194 [Verbose] > try_item i >> optionm.value
00:00:07 #195 [Verbose] > Building /tmp/!dotnet-repl/20240320-1228-4529-2951-2814dd58686b/main.spi
00:00:07 #196 [Verbose] >
00:00:07 #197 [Verbose] > ╭─[ 132.76ms - stdout ]────────────────────────────────────────────────────────╮
00:00:07 #198 [Verbose] > │ () │
00:00:07 #199 [Verbose] > │ │
00:00:07 #200 [Verbose] > │ │
00:00:07 #201 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #202 [Verbose] >
00:00:07 #203 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:07 #204 [Verbose] > // // test
00:00:07 #205 [Verbose] >
00:00:07 #206 [Verbose] > listm.init 10i32 id
00:00:07 #207 [Verbose] > |> from_list
00:00:07 #208 [Verbose] > |> item 9i32
00:00:07 #209 [Verbose] > |> _assert_eq 9
00:00:07 #210 [Verbose] > Building /tmp/!dotnet-repl/20240320-1228-4542-4262-4ca90faff23c/main.spi
00:00:07 #211 [Verbose] >
00:00:07 #212 [Verbose] > ╭─[ 143.24ms - stdout ]────────────────────────────────────────────────────────╮
00:00:07 #213 [Verbose] > │ let rec method0 () : unit = │
00:00:07 #214 [Verbose] > │ let v0 : string = $"__expect / actual: %A{9} / expected: %A{9}" │
00:00:07 #215 [Verbose] > │ () │
00:00:07 #216 [Verbose] > │ method0() │
00:00:07 #217 [Verbose] > │ │
00:00:07 #218 [Verbose] > │ │
00:00:07 #219 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #220 [Verbose] >
00:00:07 #221 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:07 #222 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:07 #223 [Verbose] > │ ## new_infinite_stream │
00:00:07 #224 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #225 [Verbose] >
00:00:07 #226 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:07 #227 [Verbose] > inl new_infinite_stream fn =
00:00:07 #228 [Verbose] > inl rec loop n =
00:00:07 #229 [Verbose] > StreamCons (fn n, fun () => loop (n + 1))
00:00:07 #230 [Verbose] > loop 0
00:00:07 #231 [Verbose] >
00:00:07 #232 [Verbose] > inl new_infinite_stream_ fn =
00:00:07 #233 [Verbose] > let rec loop n =
00:00:07 #234 [Verbose] > StreamCons (fn n, fun () => loop (n + 1))
00:00:07 #235 [Verbose] > loop 0
00:00:07 #236 [Verbose] > Building /tmp/!dotnet-repl/20240320-1228-4557-5711-503ff39c65e1/main.spi
00:00:08 #237 [Verbose] >
00:00:08 #238 [Verbose] > ╭─[ 126.15ms - stdout ]────────────────────────────────────────────────────────╮
00:00:08 #239 [Verbose] > │ () │
00:00:08 #240 [Verbose] > │ │
00:00:08 #241 [Verbose] > │ │
00:00:08 #242 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #243 [Verbose] >
00:00:08 #244 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:08 #245 [Verbose] > // // test
00:00:08 #246 [Verbose] >
00:00:08 #247 [Verbose] > new_infinite_stream print_and_return
00:00:08 #248 [Verbose] > |> item 4i32
00:00:08 #249 [Verbose] > |> _assert_eq 4i32
00:00:08 #250 [Verbose] > Building /tmp/!dotnet-repl/20240320-1228-4569-6971-63985920fbd4/main.spi
00:00:08 #251 [Verbose] >
00:00:08 #252 [Verbose] > ╭─[ 161.32ms - stdout ]────────────────────────────────────────────────────────╮
00:00:08 #253 [Verbose] > │ let rec method0 () : unit = │
00:00:08 #254 [Verbose] > │ printfn $"print_and_return / x: {0}" │
00:00:08 #255 [Verbose] > │ printfn $"print_and_return / x: {1}" │
00:00:08 #256 [Verbose] > │ printfn $"print_and_return / x: {2}" │
00:00:08 #257 [Verbose] > │ printfn $"print_and_return / x: {3}" │
00:00:08 #258 [Verbose] > │ printfn $"print_and_return / x: {4}" │
00:00:08 #259 [Verbose] > │ let v0 : string = $"__expect / actual: %A{4} / expected: %A{4}" │
00:00:08 #260 [Verbose] > │ () │
00:00:08 #261 [Verbose] > │ method0() │
00:00:08 #262 [Verbose] > │ │
00:00:08 #263 [Verbose] > │ print_and_return / x: 0 │
00:00:08 #264 [Verbose] > │ print_and_return / x: 1 │
00:00:08 #265 [Verbose] > │ print_and_return / x: 2 │
00:00:08 #266 [Verbose] > │ print_and_return / x: 3 │
00:00:08 #267 [Verbose] > │ print_and_return / x: 4 │
00:00:08 #268 [Verbose] > │ │
00:00:08 #269 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #270 [Verbose] >
00:00:08 #271 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:08 #272 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:08 #273 [Verbose] > │ ## new_finite_stream │
00:00:08 #274 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #275 [Verbose] >
00:00:08 #276 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:08 #277 [Verbose] > inl new_finite_stream fn max =
00:00:08 #278 [Verbose] > inl rec loop n =
00:00:08 #279 [Verbose] > if n >= max
00:00:08 #280 [Verbose] > then StreamNil
00:00:08 #281 [Verbose] > else StreamCons (fn n, fun () => loop (n + 1))
00:00:08 #282 [Verbose] > loop 0
00:00:08 #283 [Verbose] > Building /tmp/!dotnet-repl/20240320-1228-4586-8621-88b68da5a1bd/main.spi
00:00:08 #284 [Verbose] >
00:00:08 #285 [Verbose] > ╭─[ 132.86ms - stdout ]────────────────────────────────────────────────────────╮
00:00:08 #286 [Verbose] > │ () │
00:00:08 #287 [Verbose] > │ │
00:00:08 #288 [Verbose] > │ │
00:00:08 #289 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #290 [Verbose] >
00:00:08 #291 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:08 #292 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:08 #293 [Verbose] > │ ## memoize │
00:00:08 #294 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #295 [Verbose] >
00:00:08 #296 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:08 #297 [Verbose] > union memoized_stream t =
00:00:08 #298 [Verbose] > | NotComputed : () -> stream t
00:00:08 #299 [Verbose] > | Computed : stream t
00:00:08 #300 [Verbose] >
00:00:08 #301 [Verbose] > inl memoize s =
00:00:08 #302 [Verbose] > inl rec body s =
00:00:08 #303 [Verbose] > inl state = mut (NotComputed s)
00:00:08 #304 [Verbose] > fun () =>
00:00:08 #305 [Verbose] > match *state with
00:00:08 #306 [Verbose] > | Computed x => x
00:00:08 #307 [Verbose] > | NotComputed fn =>
00:00:08 #308 [Verbose] > inl new_state =
00:00:08 #309 [Verbose] > match fn () with
00:00:08 #310 [Verbose] > | StreamNil => StreamNil
00:00:08 #311 [Verbose] > | StreamCons (x, fn) => StreamCons (x, loop fn)
00:00:08 #312 [Verbose] > state <- Computed new_state
00:00:08 #313 [Verbose] > new_state
00:00:08 #314 [Verbose] > and inl loop s' = join_body_unit body s s'
00:00:08 #315 [Verbose] > loop (fun () => s)
00:00:08 #316 [Verbose] > Building /tmp/!dotnet-repl/20240320-1228-4599-9947-93195ab22bd0/main.spi
00:00:08 #317 [Verbose] >
00:00:08 #318 [Verbose] > ╭─[ 135.06ms - stdout ]────────────────────────────────────────────────────────╮
00:00:08 #319 [Verbose] > │ () │
00:00:08 #320 [Verbose] > │ │
00:00:08 #321 [Verbose] > │ │
00:00:08 #322 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #323 [Verbose] >
00:00:08 #324 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:08 #325 [Verbose] > // // test
00:00:08 #326 [Verbose] >
00:00:08 #327 [Verbose] > inl memo_stream = new_finite_stream print_and_return 10 |> memoize
00:00:08 #328 [Verbose] >
00:00:08 #329 [Verbose] > memo_stream ()
00:00:08 #330 [Verbose] > |> item 3i32
00:00:08 #331 [Verbose] > |> _assert_eq 3i32
00:00:08 #332 [Verbose] >
00:00:08 #333 [Verbose] > memo_stream ()
00:00:08 #334 [Verbose] > |> item 5i32
00:00:08 #335 [Verbose] > |> _assert_eq 5i32
00:00:08 #336 [Verbose] > Building /tmp/!dotnet-repl/20240320-1228-4612-1299-1e37ba917b7b/main.spi
00:00:08 #337 [Verbose] >
00:00:09 #338 [Verbose] > ╭─[ 511.23ms - stdout ]────────────────────────────────────────────────────────╮
00:00:09 #339 [Verbose] > │ type UH0 = │
00:00:09 #340 [Verbose] > │ | UH0_0 of int32 * (unit -> UH0) │
00:00:09 #341 [Verbose] > │ | UH0_1 │
00:00:09 #342 [Verbose] > │ and [<Struct>] US0 = │
00:00:09 #343 [Verbose] > │ | US0_0 of f0_0 : UH0 │
00:00:09 #344 [Verbose] > │ | US0_1 of f1_0 : (unit -> UH0) │
00:00:09 #345 [Verbose] > │ and Mut0 = {mutable l0 : US0} │
00:00:09 #346 [Verbose] > │ and [<Struct>] US1 = │
00:00:09 #347 [Verbose] > │ | US1_0 │
00:00:09 #348 [Verbose] > │ | US1_1 of f1_0 : int32 │
00:00:09 #349 [Verbose] > │ let rec closure10 () () : UH0 = │
00:00:09 #350 [Verbose] > │ UH0_1 │
00:00:09 #351 [Verbose] > │ and closure9 () () : UH0 = │
00:00:09 #352 [Verbose] > │ printfn $"print_and_return / x: {9}" │
00:00:09 #353 [Verbose] > │ let v0 : (unit -> UH0) = closure10() │
00:00:09 #354 [Verbose] > │ UH0_0(9, v0) │
00:00:09 #355 [Verbose] > │ and closure8 () () : UH0 = │
00:00:09 #356 [Verbose] > │ printfn $"print_and_return / x: {8}" │
00:00:09 #357 [Verbose] > │ let v0 : (unit -> UH0) = closure9() │
00:00:09 #358 [Verbose] > │ UH0_0(8, v0) │
00:00:09 #359 [Verbose] > │ and closure7 () () : UH0 = │
00:00:09 #360 [Verbose] > │ printfn $"print_and_return / x: {7}" │
00:00:09 #361 [Verbose] > │ let v0 : (unit -> UH0) = closure8() │
00:00:09 #362 [Verbose] > │ UH0_0(7, v0) │
00:00:09 #363 [Verbose] > │ and closure6 () () : UH0 = │
00:00:09 #364 [Verbose] > │ printfn $"print_and_return / x: {6}" │
00:00:09 #365 [Verbose] > │ let v0 : (unit -> UH0) = closure7() │
00:00:09 #366 [Verbose] > │ UH0_0(6, v0) │
00:00:09 #367 [Verbose] > │ and closure5 () () : UH0 = │
00:00:09 #368 [Verbose] > │ printfn $"print_and_return / x: {5}" │
00:00:09 #369 [Verbose] > │ let v0 : (unit -> UH0) = closure6() │
00:00:09 #370 [Verbose] > │ UH0_0(5, v0) │
00:00:09 #371 [Verbose] > │ and closure4 () () : UH0 = │
00:00:09 #372 [Verbose] > │ printfn $"print_and_return / x: {4}" │
00:00:09 #373 [Verbose] > │ let v0 : (unit -> UH0) = closure5() │
00:00:09 #374 [Verbose] > │ UH0_0(4, v0) │
00:00:09 #375 [Verbose] > │ and closure3 () () : UH0 = │
00:00:09 #376 [Verbose] > │ printfn $"print_and_return / x: {3}" │
00:00:09 #377 [Verbose] > │ let v0 : (unit -> UH0) = closure4() │
00:00:09 #378 [Verbose] > │ UH0_0(3, v0) │
00:00:09 #379 [Verbose] > │ and closure2 () () : UH0 = │
00:00:09 #380 [Verbose] > │ printfn $"print_and_return / x: {2}" │
00:00:09 #381 [Verbose] > │ let v0 : (unit -> UH0) = closure3() │
00:00:09 #382 [Verbose] > │ UH0_0(2, v0) │
00:00:09 #383 [Verbose] > │ and closure1 () () : UH0 = │
00:00:09 #384 [Verbose] > │ printfn $"print_and_return / x: {1}" │
00:00:09 #385 [Verbose] > │ let v0 : (unit -> UH0) = closure2() │
00:00:09 #386 [Verbose] > │ UH0_0(1, v0) │
00:00:09 #387 [Verbose] > │ and closure0 () () : UH0 = │
00:00:09 #388 [Verbose] > │ let v0 : (unit -> UH0) = closure1() │
00:00:09 #389 [Verbose] > │ UH0_0(0, v0) │
00:00:09 #390 [Verbose] > │ and closure11 (v0 : Mut0) () : UH0 = │
00:00:09 #391 [Verbose] > │ let v1 : US0 = v0.l0 │
00:00:09 #392 [Verbose] > │ match v1 with │
00:00:09 #393 [Verbose] > │ | US0_0(v2) -> (* Computed *) │
00:00:09 #394 [Verbose] > │ v2 │
00:00:09 #395 [Verbose] > │ | US0_1(v3) -> (* NotComputed *) │
00:00:09 #396 [Verbose] > │ let v4 : UH0 = v3 () │
00:00:09 #397 [Verbose] > │ let v13 : UH0 = │
00:00:09 #398 [Verbose] > │ match v4 with │
00:00:09 #399 [Verbose] > │ | UH0_0(v6, v7) -> (* StreamCons *) │
00:00:09 #400 [Verbose] > │ let v8 : US0 = US0_1(v7) │
00:00:09 #401 [Verbose] > │ let v9 : Mut0 = {l0 = v8} : Mut0 │
00:00:09 #402 [Verbose] > │ let v10 : (unit -> UH0) = closure11(v9) │
00:00:09 #403 [Verbose] > │ UH0_0(v6, v10) │
00:00:09 #404 [Verbose] > │ | UH0_1 -> (* StreamNil *) │
00:00:09 #405 [Verbose] > │ UH0_1 │
00:00:09 #406 [Verbose] > │ let v14 : US0 = US0_0(v13) │
00:00:09 #407 [Verbose] > │ v0.l0 <- v14 │
00:00:09 #408 [Verbose] > │ v13 │
00:00:09 #409 [Verbose] > │ and method1 (v0 : int32, v1 : UH0) : US1 = │
00:00:09 #410 [Verbose] > │ match v1 with │
00:00:09 #411 [Verbose] > │ | UH0_0(v2, v3) -> (* StreamCons *) │
00:00:09 #412 [Verbose] > │ let v4 : bool = v0 <= 0 │
00:00:09 #413 [Verbose] > │ if v4 then │
00:00:09 #414 [Verbose] > │ US1_1(v2) │
00:00:09 #415 [Verbose] > │ else │
00:00:09 #416 [Verbose] > │ let v6 : int32 = v0 - 1 │
00:00:09 #417 [Verbose] > │ let v7 : UH0 = v3 () │
00:00:09 #418 [Verbose] > │ method1(v6, v7) │
00:00:09 #419 [Verbose] > │ | UH0_1 -> (* StreamNil *) │
00:00:09 #420 [Verbose] > │ US1_0 │
00:00:09 #421 [Verbose] > │ and method2 (v0 : bool) : bool = │
00:00:09 #422 [Verbose] > │ v0 │
00:00:09 #423 [Verbose] > │ and method0 () : unit = │
00:00:09 #424 [Verbose] > │ printfn $"print_and_return / x: {0}" │
00:00:09 #425 [Verbose] > │ let v0 : (unit -> UH0) = closure0() │
00:00:09 #426 [Verbose] > │ let v1 : US0 = US0_1(v0) │
00:00:09 #427 [Verbose] > │ let v2 : Mut0 = {l0 = v1} : Mut0 │
00:00:09 #428 [Verbose] > │ let v3 : US0 = v2.l0 │
00:00:09 #429 [Verbose] > │ let v18 : UH0 = │
00:00:09 #430 [Verbose] > │ match v3 with │
00:00:09 #431 [Verbose] > │ | US0_0(v4) -> (* Computed *) │
00:00:09 #432 [Verbose] > │ v4 │
00:00:09 #433 [Verbose] > │ | US0_1(v5) -> (* NotComputed *) │
00:00:09 #434 [Verbose] > │ let v6 : UH0 = v5 () │
00:00:09 #435 [Verbose] > │ let v15 : UH0 = │
00:00:09 #436 [Verbose] > │ match v6 with │
00:00:09 #437 [Verbose] > │ | UH0_0(v8, v9) -> (* StreamCons *) │
00:00:09 #438 [Verbose] > │ let v10 : US0 = US0_1(v9) │
00:00:09 #439 [Verbose] > │ let v11 : Mut0 = {l0 = v10} : Mut0 │
00:00:09 #440 [Verbose] > │ let v12 : (unit -> UH0) = closure11(v11) │
00:00:09 #441 [Verbose] > │ UH0_0(v8, v12) │
00:00:09 #442 [Verbose] > │ | UH0_1 -> (* StreamNil *) │
00:00:09 #443 [Verbose] > │ UH0_1 │
00:00:09 #444 [Verbose] > │ let v16 : US0 = US0_0(v15) │
00:00:09 #445 [Verbose] > │ v2.l0 <- v16 │
00:00:09 #446 [Verbose] > │ v15 │
00:00:09 #447 [Verbose] > │ let v19 : int32 = 3 │
00:00:09 #448 [Verbose] > │ let v20 : US1 = method1(v19, v18) │
00:00:09 #449 [Verbose] > │ let v24 : int32 = │
00:00:09 #450 [Verbose] > │ match v20 with │
00:00:09 #451 [Verbose] > │ | US1_0 -> (* None *) │
00:00:09 #452 [Verbose] > │ failwith<int32> "Option does not have a value." │
00:00:09 #453 [Verbose] > │ | US1_1(v21) -> (* Some *) │
00:00:09 #454 [Verbose] > │ v21 │
00:00:09 #455 [Verbose] > │ let v25 : bool = v24 = 3 │
00:00:09 #456 [Verbose] > │ let v27 : bool = │
00:00:09 #457 [Verbose] > │ if v25 then │
00:00:09 #458 [Verbose] > │ true │
00:00:09 #459 [Verbose] > │ else │
00:00:09 #460 [Verbose] > │ method2(v25) │
00:00:09 #461 [Verbose] > │ let v28 : string = $"__expect / actual: %A{v24} / expected: %A{3}" │
00:00:09 #462 [Verbose] > │ let v29 : bool = v27 = false │
00:00:09 #463 [Verbose] > │ if v29 then │
00:00:09 #464 [Verbose] > │ failwith<unit> v28 │
00:00:09 #465 [Verbose] > │ let v30 : US0 = v2.l0 │
00:00:09 #466 [Verbose] > │ let v45 : UH0 = │
00:00:09 #467 [Verbose] > │ match v30 with │
00:00:09 #468 [Verbose] > │ | US0_0(v31) -> (* Computed *) │
00:00:09 #469 [Verbose] > │ v31 │
00:00:09 #470 [Verbose] > │ | US0_1(v32) -> (* NotComputed *) │
00:00:09 #471 [Verbose] > │ let v33 : UH0 = v32 () │
00:00:09 #472 [Verbose] > │ let v42 : UH0 = │
00:00:09 #473 [Verbose] > │ match v33 with │
00:00:09 #474 [Verbose] > │ | UH0_0(v35, v36) -> (* StreamCons *) │
00:00:09 #475 [Verbose] > │ let v37 : US0 = US0_1(v36) │
00:00:09 #476 [Verbose] > │ let v38 : Mut0 = {l0 = v37} : Mut0 │
00:00:09 #477 [Verbose] > │ let v39 : (unit -> UH0) = closure11(v38) │
00:00:09 #478 [Verbose] > │ UH0_0(v35, v39) │
00:00:09 #479 [Verbose] > │ | UH0_1 -> (* StreamNil *) │
00:00:09 #480 [Verbose] > │ UH0_1 │
00:00:09 #481 [Verbose] > │ let v43 : US0 = US0_0(v42) │
00:00:09 #482 [Verbose] > │ v2.l0 <- v43 │
00:00:09 #483 [Verbose] > │ v42 │
00:00:09 #484 [Verbose] > │ let v46 : int32 = 5 │
00:00:09 #485 [Verbose] > │ let v47 : US1 = method1(v46, v45) │
00:00:09 #486 [Verbose] > │ let v51 : int32 = │
00:00:09 #487 [Verbose] > │ match v47 with │
00:00:09 #488 [Verbose] > │ | US1_0 -> (* None *) │
00:00:09 #489 [Verbose] > │ failwith<int32> "Option does not have a value." │
00:00:09 #490 [Verbose] > │ | US1_1(v48) -> (* Some *) │
00:00:09 #491 [Verbose] > │ v48 │
00:00:09 #492 [Verbose] > │ let v52 : bool = v51 = 5 │
00:00:09 #493 [Verbose] > │ let v54 : bool = │
00:00:09 #494 [Verbose] > │ if v52 then │
00:00:09 #495 [Verbose] > │ true │
00:00:09 #496 [Verbose] > │ else │
00:00:09 #497 [Verbose] > │ method2(v52) │
00:00:09 #498 [Verbose] > │ let v55 : string = $"__expect / actual: %A{v51} / expected: %A{5}" │
00:00:09 #499 [Verbose] > │ let v56 : bool = v54 = false │
00:00:09 #500 [Verbose] > │ if v56 then │
00:00:09 #501 [Verbose] > │ failwith<unit> v55 │
00:00:09 #502 [Verbose] > │ method0() │
00:00:09 #503 [Verbose] > │ │
00:00:09 #504 [Verbose] > │ print_and_return / x: 0 │
00:00:09 #505 [Verbose] > │ print_and_return / x: 1 │
00:00:09 #506 [Verbose] > │ print_and_return / x: 2 │
00:00:09 #507 [Verbose] > │ print_and_return / x: 3 │
00:00:09 #508 [Verbose] > │ print_and_return / x: 4 │
00:00:09 #509 [Verbose] > │ print_and_return / x: 5 │
00:00:09 #510 [Verbose] > │ │
00:00:09 #511 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #512 [Verbose] >
00:00:09 #513 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:09 #514 [Verbose] > // // test
00:00:09 #515 [Verbose] >
00:00:09 #516 [Verbose] > inl memo_stream = new_infinite_stream_ print_and_return |> memoize
00:00:09 #517 [Verbose] >
00:00:09 #518 [Verbose] > memo_stream ()
00:00:09 #519 [Verbose] > |> item 3i32
00:00:09 #520 [Verbose] > |> _assert_eq 3i32
00:00:09 #521 [Verbose] >
00:00:09 #522 [Verbose] > memo_stream ()
00:00:09 #523 [Verbose] > |> item 5i32
00:00:09 #524 [Verbose] > |> _assert_eq 5i32
00:00:09 #525 [Verbose] > Building /tmp/!dotnet-repl/20240320-1228-4665-6503-6f5a4ab2c7f4/main.spi
00:00:09 #526 [Verbose] >
00:00:09 #527 [Verbose] > ╭─[ 217.15ms - stdout ]────────────────────────────────────────────────────────╮
00:00:09 #528 [Verbose] > │ type UH0 = │
00:00:09 #529 [Verbose] > │ | UH0_0 of int32 * (unit -> UH0) │
00:00:09 #530 [Verbose] > │ | UH0_1 │
00:00:09 #531 [Verbose] > │ and [<Struct>] US0 = │
00:00:09 #532 [Verbose] > │ | US0_0 of f0_0 : UH0 │
00:00:09 #533 [Verbose] > │ | US0_1 of f1_0 : (unit -> UH0) │
00:00:09 #534 [Verbose] > │ and Mut0 = {mutable l0 : US0} │
00:00:09 #535 [Verbose] > │ and [<Struct>] US1 = │
00:00:09 #536 [Verbose] > │ | US1_0 │
00:00:09 #537 [Verbose] > │ | US1_1 of f1_0 : int32 │
00:00:09 #538 [Verbose] > │ let rec closure0 (v0 : int32) () : UH0 = │
00:00:09 #539 [Verbose] > │ let v1 : int32 = v0 + 1 │
00:00:09 #540 [Verbose] > │ method1(v1) │
00:00:09 #541 [Verbose] > │ and method1 (v0 : int32) : UH0 = │
00:00:09 #542 [Verbose] > │ printfn $"print_and_return / x: {v0}" │
00:00:09 #543 [Verbose] > │ let v1 : (unit -> UH0) = closure0(v0) │
00:00:09 #544 [Verbose] > │ UH0_0(v0, v1) │
00:00:09 #545 [Verbose] > │ and closure1 (v0 : UH0) () : UH0 = │
00:00:09 #546 [Verbose] > │ v0 │
00:00:09 #547 [Verbose] > │ and closure2 (v0 : UH0, v1 : Mut0) () : UH0 = │
00:00:09 #548 [Verbose] > │ let v2 : US0 = v1.l0 │
00:00:09 #549 [Verbose] > │ match v2 with │
00:00:09 #550 [Verbose] > │ | US0_0(v3) -> (* Computed *) │
00:00:09 #551 [Verbose] > │ v3 │
00:00:09 #552 [Verbose] > │ | US0_1(v4) -> (* NotComputed *) │
00:00:09 #553 [Verbose] > │ let v5 : UH0 = v4 () │
00:00:09 #554 [Verbose] > │ let v12 : UH0 = │
00:00:09 #555 [Verbose] > │ match v5 with │
00:00:09 #556 [Verbose] > │ | UH0_0(v7, v8) -> (* StreamCons *) │
00:00:09 #557 [Verbose] > │ let v9 : (unit -> UH0) = method2(v0, v8) │
00:00:09 #558 [Verbose] > │ UH0_0(v7, v9) │
00:00:09 #559 [Verbose] > │ | UH0_1 -> (* StreamNil *) │
00:00:09 #560 [Verbose] > │ UH0_1 │
00:00:09 #561 [Verbose] > │ let v13 : US0 = US0_0(v12) │
00:00:09 #562 [Verbose] > │ v1.l0 <- v13 │
00:00:09 #563 [Verbose] > │ v12 │
00:00:09 #564 [Verbose] > │ and method2 (v0 : UH0, v1 : (unit -> UH0)) : (unit -> UH0) = │
00:00:09 #565 [Verbose] > │ let v2 : US0 = US0_1(v1) │
00:00:09 #566 [Verbose] > │ let v3 : Mut0 = {l0 = v2} : Mut0 │
00:00:09 #567 [Verbose] > │ closure2(v0, v3) │
00:00:09 #568 [Verbose] > │ and method3 (v0 : int32, v1 : UH0) : US1 = │
00:00:09 #569 [Verbose] > │ match v1 with │
00:00:09 #570 [Verbose] > │ | UH0_0(v2, v3) -> (* StreamCons *) │
00:00:09 #571 [Verbose] > │ let v4 : bool = v0 <= 0 │
00:00:09 #572 [Verbose] > │ if v4 then │
00:00:09 #573 [Verbose] > │ US1_1(v2) │
00:00:09 #574 [Verbose] > │ else │
00:00:09 #575 [Verbose] > │ let v6 : int32 = v0 - 1 │
00:00:09 #576 [Verbose] > │ let v7 : UH0 = v3 () │
00:00:09 #577 [Verbose] > │ method3(v6, v7) │
00:00:09 #578 [Verbose] > │ | UH0_1 -> (* StreamNil *) │
00:00:09 #579 [Verbose] > │ US1_0 │
00:00:09 #580 [Verbose] > │ and method4 (v0 : bool) : bool = │
00:00:09 #581 [Verbose] > │ v0 │
00:00:09 #582 [Verbose] > │ and method0 () : unit = │
00:00:09 #583 [Verbose] > │ let v0 : int32 = 0 │
00:00:09 #584 [Verbose] > │ let v1 : UH0 = method1(v0) │
00:00:09 #585 [Verbose] > │ let v2 : (unit -> UH0) = closure1(v1) │
00:00:09 #586 [Verbose] > │ let v3 : (unit -> UH0) = method2(v1, v2) │
00:00:09 #587 [Verbose] > │ let v4 : UH0 = v3 () │
00:00:09 #588 [Verbose] > │ let v5 : int32 = 3 │
00:00:09 #589 [Verbose] > │ let v6 : US1 = method3(v5, v4) │
00:00:09 #590 [Verbose] > │ let v10 : int32 = │
00:00:09 #591 [Verbose] > │ match v6 with │
00:00:09 #592 [Verbose] > │ | US1_0 -> (* None *) │
00:00:09 #593 [Verbose] > │ failwith<int32> "Option does not have a value." │
00:00:09 #594 [Verbose] > │ | US1_1(v7) -> (* Some *) │
00:00:09 #595 [Verbose] > │ v7 │
00:00:09 #596 [Verbose] > │ let v11 : bool = v10 = 3 │
00:00:09 #597 [Verbose] > │ let v13 : bool = │
00:00:09 #598 [Verbose] > │ if v11 then │
00:00:09 #599 [Verbose] > │ true │
00:00:09 #600 [Verbose] > │ else │
00:00:09 #601 [Verbose] > │ method4(v11) │
00:00:09 #602 [Verbose] > │ let v14 : string = $"__expect / actual: %A{v10} / expected: %A{3}" │
00:00:09 #603 [Verbose] > │ let v15 : bool = v13 = false │
00:00:09 #604 [Verbose] > │ if v15 then │
00:00:09 #605 [Verbose] > │ failwith<unit> v14 │
00:00:09 #606 [Verbose] > │ let v16 : UH0 = v3 () │
00:00:09 #607 [Verbose] > │ let v17 : int32 = 5 │
00:00:09 #608 [Verbose] > │ let v18 : US1 = method3(v17, v16) │
00:00:09 #609 [Verbose] > │ let v22 : int32 = │
00:00:09 #610 [Verbose] > │ match v18 with │
00:00:09 #611 [Verbose] > │ | US1_0 -> (* None *) │
00:00:09 #612 [Verbose] > │ failwith<int32> "Option does not have a value." │
00:00:09 #613 [Verbose] > │ | US1_1(v19) -> (* Some *) │
00:00:09 #614 [Verbose] > │ v19 │
00:00:09 #615 [Verbose] > │ let v23 : bool = v22 = 5 │
00:00:09 #616 [Verbose] > │ let v25 : bool = │
00:00:09 #617 [Verbose] > │ if v23 then │
00:00:09 #618 [Verbose] > │ true │
00:00:09 #619 [Verbose] > │ else │
00:00:09 #620 [Verbose] > │ method4(v23) │
00:00:09 #621 [Verbose] > │ let v26 : string = $"__expect / actual: %A{v22} / expected: %A{5}" │
00:00:09 #622 [Verbose] > │ let v27 : bool = v25 = false │
00:00:09 #623 [Verbose] > │ if v27 then │
00:00:09 #624 [Verbose] > │ failwith<unit> v26 │
00:00:09 #625 [Verbose] > │ method0() │
00:00:09 #626 [Verbose] > │ │
00:00:09 #627 [Verbose] > │ print_and_return / x: 0 │
00:00:09 #628 [Verbose] > │ print_and_return / x: 1 │
00:00:09 #629 [Verbose] > │ print_and_return / x: 2 │
00:00:09 #630 [Verbose] > │ print_and_return / x: 3 │
00:00:09 #631 [Verbose] > │ print_and_return / x: 4 │
00:00:09 #632 [Verbose] > │ print_and_return / x: 5 │
00:00:09 #633 [Verbose] > │ │
00:00:09 #634 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #635 [Verbose] >
00:00:09 #636 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:09 #637 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:09 #638 [Verbose] > │ ## unfold │
00:00:09 #639 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #640 [Verbose] >
00:00:09 #641 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:09 #642 [Verbose] > inl unfold f x0 =
00:00:09 #643 [Verbose] > inl rec body x =
00:00:09 #644 [Verbose] > match f x with
00:00:09 #645 [Verbose] > | Some (x', y) => StreamCons (x', fun () => loop y)
00:00:09 #646 [Verbose] > | None => StreamNil
00:00:09 #647 [Verbose] > and inl loop x = join_body_unit body x0 x
00:00:09 #648 [Verbose] > loop x0
00:00:09 #649 [Verbose] > Building /tmp/!dotnet-repl/20240320-1228-4687-8740-8d72066690c4/main.spi
00:00:09 #650 [Verbose] >
00:00:09 #651 [Verbose] > ╭─[ 143.15ms - stdout ]────────────────────────────────────────────────────────╮
00:00:09 #652 [Verbose] > │ () │
00:00:09 #653 [Verbose] > │ │
00:00:09 #654 [Verbose] > │ │
00:00:09 #655 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #656 [Verbose] >
00:00:09 #657 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:09 #658 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:09 #659 [Verbose] > │ ## iterate │
00:00:09 #660 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #661 [Verbose] >
00:00:09 #662 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:09 #663 [Verbose] > inl iterate f =
00:00:09 #664 [Verbose] > unfold (fun x => Some (x, f x))
00:00:09 #665 [Verbose] > Building /tmp/!dotnet-repl/20240320-1228-4701-0180-06a1af749734/main.spi
00:00:09 #666 [Verbose] >
00:00:09 #667 [Verbose] > ╭─[ 135.27ms - stdout ]────────────────────────────────────────────────────────╮
00:00:09 #668 [Verbose] > │ () │
00:00:09 #669 [Verbose] > │ │
00:00:09 #670 [Verbose] > │ │
00:00:09 #671 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #672 [Verbose] >
00:00:09 #673 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:09 #674 [Verbose] > // // test
00:00:09 #675 [Verbose] >
00:00:09 #676 [Verbose] > iterate ((*) 2) 1i32
00:00:09 #677 [Verbose] > |> item 10i32
00:00:09 #678 [Verbose] > |> _assert_eq 1024
00:00:09 #679 [Verbose] > Building /tmp/!dotnet-repl/20240320-1228-4715-1537-15a143b24294/main.spi
00:00:09 #680 [Verbose] >
00:00:09 #681 [Verbose] > ╭─[ 135.18ms - stdout ]────────────────────────────────────────────────────────╮
00:00:09 #682 [Verbose] > │ let rec method0 () : unit = │
00:00:09 #683 [Verbose] > │ let v0 : string = $"__expect / actual: %A{1024} / expected: %A{1024}" │
00:00:09 #684 [Verbose] > │ () │
00:00:09 #685 [Verbose] > │ method0() │
00:00:09 #686 [Verbose] > │ │
00:00:09 #687 [Verbose] > │ │
00:00:09 #688 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #689 [Verbose] >
00:00:09 #690 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:09 #691 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:09 #692 [Verbose] > │ ## take_while │
00:00:09 #693 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #694 [Verbose] >
00:00:09 #695 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:09 #696 [Verbose] > inl take_while cond s =
00:00:09 #697 [Verbose] > inl rec body i = function
00:00:09 #698 [Verbose] > | StreamCons (st, fn) when cond st i => StreamCons (st, fun () => loop
00:00:09 #699 [Verbose] > (i + 1) (fn ()))
00:00:09 #700 [Verbose] > | _ => StreamNil
00:00:09 #701 [Verbose] > and inl loop i = join_body body i
00:00:09 #702 [Verbose] > loop 0 s
00:00:09 #703 [Verbose] > Building /tmp/!dotnet-repl/20240320-1228-4729-2905-2a7a32be3a5f/main.spi
00:00:09 #704 [Verbose] >
00:00:09 #705 [Verbose] > ╭─[ 130.89ms - stdout ]────────────────────────────────────────────────────────╮
00:00:09 #706 [Verbose] > │ () │
00:00:09 #707 [Verbose] > │ │
00:00:09 #708 [Verbose] > │ │
00:00:09 #709 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #710 [Verbose] >
00:00:09 #711 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:09 #712 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:09 #713 [Verbose] > │ ## sum │
00:00:09 #714 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #715 [Verbose] >
00:00:09 #716 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:09 #717 [Verbose] > inl sum seq =
00:00:09 #718 [Verbose] > seq |> fold (+) 0
00:00:09 #719 [Verbose] > Building /tmp/!dotnet-repl/20240320-1228-4742-4220-48bb68432aaa/main.spi
00:00:09 #720 [Verbose] >
00:00:09 #721 [Verbose] > ╭─[ 132.56ms - stdout ]────────────────────────────────────────────────────────╮
00:00:09 #722 [Verbose] > │ () │
00:00:09 #723 [Verbose] > │ │
00:00:09 #724 [Verbose] > │ │
00:00:09 #725 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #726 [Verbose] >
00:00:09 #727 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:09 #728 [Verbose] > // // test
00:00:09 #729 [Verbose] >
00:00:09 #730 [Verbose] > listm.init 10i32 id
00:00:09 #731 [Verbose] > |> from_list
00:00:09 #732 [Verbose] > |> sum
00:00:09 #733 [Verbose] > |> _assert_eq 45
00:00:09 #734 [Verbose] > Building /tmp/!dotnet-repl/20240320-1228-4755-5551-5c7bdbde737b/main.spi
00:00:10 #735 [Verbose] >
00:00:10 #736 [Verbose] > ╭─[ 133.06ms - stdout ]────────────────────────────────────────────────────────╮
00:00:10 #737 [Verbose] > │ let rec method0 () : unit = │
00:00:10 #738 [Verbose] > │ let v0 : string = $"__expect / actual: %A{45} / expected: %A{45}" │
00:00:10 #739 [Verbose] > │ () │
00:00:10 #740 [Verbose] > │ method0() │
00:00:10 #741 [Verbose] > │ │
00:00:10 #742 [Verbose] > │ │
00:00:10 #743 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:10 #744 [Verbose] >
00:00:10 #745 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:10 #746 [Verbose] > // // test
00:00:10 #747 [Verbose] >
00:00:10 #748 [Verbose] > new_finite_stream print_and_return 10i32
00:00:10 #749 [Verbose] > |> take_while (fun n (_ : i32) => n < 5)
00:00:10 #750 [Verbose] > |> sum
00:00:10 #751 [Verbose] > |> _assert_eq 10
00:00:10 #752 [Verbose] > Building /tmp/!dotnet-repl/20240320-1228-4768-6889-651b625604f4/main.spi
00:00:10 #753 [Verbose] >
00:00:10 #754 [Verbose] > ╭─[ 141.21ms - stdout ]────────────────────────────────────────────────────────╮
00:00:10 #755 [Verbose] > │ let rec method0 () : unit = │
00:00:10 #756 [Verbose] > │ printfn $"print_and_return / x: {0}" │
00:00:10 #757 [Verbose] > │ printfn $"print_and_return / x: {1}" │
00:00:10 #758 [Verbose] > │ printfn $"print_and_return / x: {2}" │
00:00:10 #759 [Verbose] > │ printfn $"print_and_return / x: {3}" │
00:00:10 #760 [Verbose] > │ printfn $"print_and_return / x: {4}" │
00:00:10 #761 [Verbose] > │ printfn $"print_and_return / x: {5}" │
00:00:10 #762 [Verbose] > │ let v0 : string = $"__expect / actual: %A{10} / expected: %A{10}" │
00:00:10 #763 [Verbose] > │ () │
00:00:10 #764 [Verbose] > │ method0() │
00:00:10 #765 [Verbose] > │ │
00:00:10 #766 [Verbose] > │ print_and_return / x: 0 │
00:00:10 #767 [Verbose] > │ print_and_return / x: 1 │
00:00:10 #768 [Verbose] > │ print_and_return / x: 2 │
00:00:10 #769 [Verbose] > │ print_and_return / x: 3 │
00:00:10 #770 [Verbose] > │ print_and_return / x: 4 │
00:00:10 #771 [Verbose] > │ print_and_return / x: 5 │
00:00:10 #772 [Verbose] > │ │
00:00:10 #773 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:10 #774 [Verbose] >
00:00:10 #775 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:10 #776 [Verbose] > // // test
00:00:10 #777 [Verbose] >
00:00:10 #778 [Verbose] > new_infinite_stream print_and_return
00:00:10 #779 [Verbose] > |> take_while (fun n (_ : i32) => n < 5i32)
00:00:10 #780 [Verbose] > |> sum
00:00:10 #781 [Verbose] > |> _assert_eq 10
00:00:10 #782 [Verbose] > Building /tmp/!dotnet-repl/20240320-1228-4783-8311-81b2285e3d05/main.spi
00:00:10 #783 [Verbose] >
00:00:10 #784 [Verbose] > ╭─[ 149.58ms - stdout ]────────────────────────────────────────────────────────╮
00:00:10 #785 [Verbose] > │ let rec method0 () : unit = │
00:00:10 #786 [Verbose] > │ printfn $"print_and_return / x: {0}" │
00:00:10 #787 [Verbose] > │ printfn $"print_and_return / x: {1}" │
00:00:10 #788 [Verbose] > │ printfn $"print_and_return / x: {2}" │
00:00:10 #789 [Verbose] > │ printfn $"print_and_return / x: {3}" │
00:00:10 #790 [Verbose] > │ printfn $"print_and_return / x: {4}" │
00:00:10 #791 [Verbose] > │ printfn $"print_and_return / x: {5}" │
00:00:10 #792 [Verbose] > │ let v0 : string = $"__expect / actual: %A{10} / expected: %A{10}" │
00:00:10 #793 [Verbose] > │ () │
00:00:10 #794 [Verbose] > │ method0() │
00:00:10 #795 [Verbose] > │ │
00:00:10 #796 [Verbose] > │ print_and_return / x: 0 │
00:00:10 #797 [Verbose] > │ print_and_return / x: 1 │
00:00:10 #798 [Verbose] > │ print_and_return / x: 2 │
00:00:10 #799 [Verbose] > │ print_and_return / x: 3 │
00:00:10 #800 [Verbose] > │ print_and_return / x: 4 │
00:00:10 #801 [Verbose] > │ print_and_return / x: 5 │
00:00:10 #802 [Verbose] > │ │
00:00:10 #803 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:10 #804 [Verbose] >
00:00:10 #805 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:10 #806 [Verbose] > // // test
00:00:10 #807 [Verbose] >
00:00:10 #808 [Verbose] > iterate ((*) 6) 1i32
00:00:10 #809 [Verbose] > |> take_while (fun _ i => i <= 7i32)
00:00:10 #810 [Verbose] > |> to_list
00:00:10 #811 [Verbose] > |> _assert_eq [[ 1i32; 6; 36; 216; 1296; 7776; 46656; 279936 ]]
00:00:10 #812 [Verbose] > Building /tmp/!dotnet-repl/20240320-1228-4798-9817-9f4e3026c32e/main.spi
00:00:10 #813 [Verbose] >
00:00:10 #814 [Verbose] > ╭─[ 169.26ms - stdout ]────────────────────────────────────────────────────────╮
00:00:10 #815 [Verbose] > │ type UH0 = │
00:00:10 #816 [Verbose] > │ | UH0_0 of int32 * UH0 │
00:00:10 #817 [Verbose] > │ | UH0_1 │
00:00:10 #818 [Verbose] > │ let rec method0 () : unit = │
00:00:10 #819 [Verbose] > │ let v63 : UH0 = UH0_1 │
00:00:10 #820 [Verbose] > │ let v64 : UH0 = UH0_0(279936, v63) │
00:00:10 #821 [Verbose] > │ let v65 : UH0 = UH0_0(46656, v64) │
00:00:10 #822 [Verbose] > │ let v66 : UH0 = UH0_0(7776, v65) │
00:00:10 #823 [Verbose] > │ let v67 : UH0 = UH0_0(1296, v66) │
00:00:10 #824 [Verbose] > │ let v68 : UH0 = UH0_0(216, v67) │
00:00:10 #825 [Verbose] > │ let v69 : UH0 = UH0_0(36, v68) │
00:00:10 #826 [Verbose] > │ let v70 : UH0 = UH0_0(6, v69) │
00:00:10 #827 [Verbose] > │ let v71 : UH0 = UH0_0(1, v70) │
00:00:10 #828 [Verbose] > │ let v72 : UH0 = UH0_1 │
00:00:10 #829 [Verbose] > │ let v73 : UH0 = UH0_0(279936, v72) │
00:00:10 #830 [Verbose] > │ let v74 : UH0 = UH0_0(46656, v73) │
00:00:10 #831 [Verbose] > │ let v75 : UH0 = UH0_0(7776, v74) │
00:00:10 #832 [Verbose] > │ let v76 : UH0 = UH0_0(1296, v75) │
00:00:10 #833 [Verbose] > │ let v77 : UH0 = UH0_0(216, v76) │
00:00:10 #834 [Verbose] > │ let v78 : UH0 = UH0_0(36, v77) │
00:00:10 #835 [Verbose] > │ let v79 : UH0 = UH0_0(6, v78) │
00:00:10 #836 [Verbose] > │ let v80 : UH0 = UH0_0(1, v79) │
00:00:10 #837 [Verbose] > │ let v81 : string = $"__expect / actual: %A{v71} / expected: %A{v80}" │
00:00:10 #838 [Verbose] > │ () │
00:00:10 #839 [Verbose] > │ method0() │
00:00:10 #840 [Verbose] > │ │
00:00:10 #841 [Verbose] > │ │
00:00:10 #842 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:10 #843 [Verbose] >
00:00:10 #844 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:10 #845 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:10 #846 [Verbose] > │ ## indexed │
00:00:10 #847 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:10 #848 [Verbose] >
00:00:10 #849 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:10 #850 [Verbose] > inl indexed s =
00:00:10 #851 [Verbose] > ((StreamNil, 0), s)
00:00:10 #852 [Verbose] > ||> fold fun (acc, i) x =>
00:00:10 #853 [Verbose] > StreamCons ((i, x), fun () => acc), i + 1
00:00:10 #854 [Verbose] > |> fst
00:00:10 #855 [Verbose] > |> rev
00:00:10 #856 [Verbose] > Building /tmp/!dotnet-repl/20240320-1228-4815-1540-10789f1ca1c7/main.spi
00:00:10 #857 [Verbose] >
00:00:10 #858 [Verbose] > ╭─[ 138.75ms - stdout ]────────────────────────────────────────────────────────╮
00:00:10 #859 [Verbose] > │ () │
00:00:10 #860 [Verbose] > │ │
00:00:10 #861 [Verbose] > │ │
00:00:10 #862 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:10 #863 [Verbose] >
00:00:10 #864 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:10 #865 [Verbose] > // // test
00:00:10 #866 [Verbose] >
00:00:10 #867 [Verbose] > listm.init 10i32 ((*) 2)
00:00:10 #868 [Verbose] > |> from_list
00:00:10 #869 [Verbose] > |> indexed
00:00:10 #870 [Verbose] > |> item 5i32
00:00:10 #871 [Verbose] > |> _assert_eq (5i32, 10i32)
00:00:10 #872 [Verbose] > Building /tmp/!dotnet-repl/20240320-1228-4829-2930-2be6f76110c3/main.spi
00:00:10 #873 [Verbose] >
00:00:10 #874 [Verbose] > ╭─[ 140.78ms - stdout ]────────────────────────────────────────────────────────╮
00:00:10 #875 [Verbose] > │ let rec method0 () : unit = │
00:00:10 #876 [Verbose] > │ let v0 : string = $"__expect / actual: %A{struct (5, 10)} / expected: │
00:00:10 #877 [Verbose] > │ %A{struct (5, 10)}" │
00:00:10 #878 [Verbose] > │ () │
00:00:10 #879 [Verbose] > │ method0() │
00:00:10 #880 [Verbose] > │ │
00:00:10 #881 [Verbose] > │ │
00:00:10 #882 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:10 #883 [Verbose] >
00:00:10 #884 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:10 #885 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:10 #886 [Verbose] > │ ## map │
00:00:10 #887 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:10 #888 [Verbose] >
00:00:10 #889 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:10 #890 [Verbose] > inl map fn s =
00:00:10 #891 [Verbose] > (s, StreamNil)
00:00:10 #892 [Verbose] > ||> fold_back fun x acc =>
00:00:10 #893 [Verbose] > StreamCons (fn x, fun () => acc)
00:00:10 #894 [Verbose] > Building /tmp/!dotnet-repl/20240320-1228-4843-4352-4253c207ac4c/main.spi
00:00:11 #895 [Verbose] >
00:00:11 #896 [Verbose] > ╭─[ 250.10ms - stdout ]────────────────────────────────────────────────────────╮
00:00:11 #897 [Verbose] > │ () │
00:00:11 #898 [Verbose] > │ │
00:00:11 #899 [Verbose] > │ │
00:00:11 #900 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:11 #901 [Verbose] >
00:00:11 #902 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:11 #903 [Verbose] > // // test
00:00:11 #904 [Verbose] >
00:00:11 #905 [Verbose] > listm.init 10i32 id
00:00:11 #906 [Verbose] > |> from_list
00:00:11 #907 [Verbose] > |> map ((*) 2)
00:00:11 #908 [Verbose] > |> item 5i32
00:00:11 #909 [Verbose] > |> _assert_eq 10i32
00:00:11 #910 [Verbose] > Building /tmp/!dotnet-repl/20240320-1228-4868-6869-6d7756e483bd/main.spi
00:00:11 #911 [Verbose] >
00:00:11 #912 [Verbose] > ╭─[ 136.41ms - stdout ]────────────────────────────────────────────────────────╮
00:00:11 #913 [Verbose] > │ let rec method0 () : unit = │
00:00:11 #914 [Verbose] > │ let v0 : string = $"__expect / actual: %A{10} / expected: %A{10}" │
00:00:11 #915 [Verbose] > │ () │
00:00:11 #916 [Verbose] > │ method0() │
00:00:11 #917 [Verbose] > │ │
00:00:11 #918 [Verbose] > │ │
00:00:11 #919 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:11 #920 [Verbose] >
00:00:11 #921 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:11 #922 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:11 #923 [Verbose] > │ ## zip_with │
00:00:11 #924 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:11 #925 [Verbose] >
00:00:11 #926 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:11 #927 [Verbose] > inl zip_with fn s1 s2 =
00:00:11 #928 [Verbose] > inl rec loop s1 s2 =
00:00:11 #929 [Verbose] > match s1, s2 with
00:00:11 #930 [Verbose] > | StreamCons (st1, fn1), StreamCons (st2, fn2) =>
00:00:11 #931 [Verbose] > StreamCons (fn st1 st2, fun () => loop (fn1 ()) (fn2 ()))
00:00:11 #932 [Verbose] > | StreamNil, _ | _, StreamNil => StreamNil
00:00:11 #933 [Verbose] > loop s1 s2
00:00:11 #934 [Verbose] >
00:00:11 #935 [Verbose] > inl zip_with_ fn s1 s2 =
00:00:11 #936 [Verbose] > let rec loop s1 s2 =
00:00:11 #937 [Verbose] > match s1, s2 with
00:00:11 #938 [Verbose] > | StreamCons (st1, fn1), StreamCons (st2, fn2) =>
00:00:11 #939 [Verbose] > StreamCons (fn st1 st2, fun () => loop (fn1 ()) (fn2 ()))
00:00:11 #940 [Verbose] > | StreamNil, _ | _, StreamNil => StreamNil
00:00:11 #941 [Verbose] > loop s1 s2
00:00:11 #942 [Verbose] > Building /tmp/!dotnet-repl/20240320-1228-4882-8235-8f322a94889e/main.spi
00:00:11 #943 [Verbose] >
00:00:11 #944 [Verbose] > ╭─[ 129.79ms - stdout ]────────────────────────────────────────────────────────╮
00:00:11 #945 [Verbose] > │ () │
00:00:11 #946 [Verbose] > │ │
00:00:11 #947 [Verbose] > │ │
00:00:11 #948 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:11 #949 [Verbose] >
00:00:11 #950 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:11 #951 [Verbose] > // // test
00:00:11 #952 [Verbose] >
00:00:11 #953 [Verbose] > ((listm.init 10i32 id |> from_list), (listm.init 10i32 ((*) 2) |> from_list))
00:00:11 #954 [Verbose] > ||> zip_with (+)
00:00:11 #955 [Verbose] > |> item 2i32
00:00:11 #956 [Verbose] > |> _assert_eq 6
00:00:11 #957 [Verbose] > Building /tmp/!dotnet-repl/20240320-1228-4895-9535-9d7322fa76c1/main.spi
00:00:11 #958 [Verbose] >
00:00:11 #959 [Verbose] > ╭─[ 137.38ms - stdout ]────────────────────────────────────────────────────────╮
00:00:11 #960 [Verbose] > │ let rec method0 () : unit = │
00:00:11 #961 [Verbose] > │ let v0 : string = $"__expect / actual: %A{6} / expected: %A{6}" │
00:00:11 #962 [Verbose] > │ () │
00:00:11 #963 [Verbose] > │ method0() │
00:00:11 #964 [Verbose] > │ │
00:00:11 #965 [Verbose] > │ │
00:00:11 #966 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:11 #967 [Verbose] >
00:00:11 #968 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:11 #969 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:11 #970 [Verbose] > │ ## zip │
00:00:11 #971 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:11 #972 [Verbose] >
00:00:11 #973 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:11 #974 [Verbose] > inl zip s1 s2 =
00:00:11 #975 [Verbose] > zip_with pair s1 s2
00:00:11 #976 [Verbose] >
00:00:11 #977 [Verbose] > inl zip_ s1 s2 =
00:00:11 #978 [Verbose] > zip_with_ pair s1 s2
00:00:11 #979 [Verbose] > Building /tmp/!dotnet-repl/20240320-1228-4909-0918-044057e36ad7/main.spi
00:00:11 #980 [Verbose] >
00:00:11 #981 [Verbose] > ╭─[ 124.90ms - stdout ]────────────────────────────────────────────────────────╮
00:00:11 #982 [Verbose] > │ () │
00:00:11 #983 [Verbose] > │ │
00:00:11 #984 [Verbose] > │ │
00:00:11 #985 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:11 #986 [Verbose] >
00:00:11 #987 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:11 #988 [Verbose] > // // test
00:00:11 #989 [Verbose] >
00:00:11 #990 [Verbose] > ((listm.init 10i32 id |> from_list), (listm.init 10i32 ((*) 2) |> from_list))
00:00:11 #991 [Verbose] > ||> zip
00:00:11 #992 [Verbose] > |> item 5i32
00:00:11 #993 [Verbose] > |> _assert_eq (5, 10)
00:00:11 #994 [Verbose] > Building /tmp/!dotnet-repl/20240320-1228-4921-2168-2af6a8b180a2/main.spi
00:00:11 #995 [Verbose] >
00:00:11 #996 [Verbose] > ╭─[ 136.18ms - stdout ]────────────────────────────────────────────────────────╮
00:00:11 #997 [Verbose] > │ let rec method0 () : unit = │
00:00:11 #998 [Verbose] > │ let v0 : string = $"__expect / actual: %A{struct (5, 10)} / expected: │
00:00:11 #999 [Verbose] > │ %A{struct (5, 10)}" │
00:00:11 #1000 [Verbose] > │ () │
00:00:11 #1001 [Verbose] > │ method0() │
00:00:11 #1002 [Verbose] > │ │
00:00:11 #1003 [Verbose] > │ │
00:00:11 #1004 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:11 #1005 [Verbose] >
00:00:11 #1006 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:11 #1007 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:11 #1008 [Verbose] > │ ## unzip │
00:00:11 #1009 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:11 #1010 [Verbose] >
00:00:11 #1011 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:11 #1012 [Verbose] > inl unzip s =
00:00:11 #1013 [Verbose] > inl rec body s =
00:00:11 #1014 [Verbose] > match s with
00:00:11 #1015 [Verbose] > | StreamCons ((x, y), fn) =>
00:00:11 #1016 [Verbose] > inl xs, ys = loop (fn ())
00:00:11 #1017 [Verbose] > StreamCons (x, fun () => xs), StreamCons (y, fun () => ys)
00:00:11 #1018 [Verbose] > | StreamNil => pair StreamNil StreamNil
00:00:11 #1019 [Verbose] > and inl loop x =
00:00:11 #1020 [Verbose] > if var_is x |> not
00:00:11 #1021 [Verbose] > then body x
00:00:11 #1022 [Verbose] > else
00:00:11 #1023 [Verbose] > inl x = dyn x
00:00:11 #1024 [Verbose] > join body x
00:00:11 #1025 [Verbose] > loop s
00:00:11 #1026 [Verbose] > Building /tmp/!dotnet-repl/20240320-1228-4935-3551-31372f54643c/main.spi
00:00:11 #1027 [Verbose] >
00:00:11 #1028 [Verbose] > ╭─[ 129.91ms - stdout ]────────────────────────────────────────────────────────╮
00:00:11 #1029 [Verbose] > │ () │
00:00:11 #1030 [Verbose] > │ │
00:00:11 #1031 [Verbose] > │ │
00:00:11 #1032 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:11 #1033 [Verbose] >
00:00:11 #1034 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:11 #1035 [Verbose] > // // test
00:00:11 #1036 [Verbose] >
00:00:11 #1037 [Verbose] > listm.init 10i32 id
00:00:11 #1038 [Verbose] > |> listm.map (fun x => x, x)
00:00:11 #1039 [Verbose] > |> from_list
00:00:11 #1040 [Verbose] > |> unzip
00:00:11 #1041 [Verbose] > |> fun x, y =>
00:00:11 #1042 [Verbose] > x |> sum
00:00:11 #1043 [Verbose] > |> _assert_eq 45
00:00:11 #1044 [Verbose] >
00:00:11 #1045 [Verbose] > y |> sum
00:00:11 #1046 [Verbose] > |> _assert_eq 45
00:00:11 #1047 [Verbose] > Building /tmp/!dotnet-repl/20240320-1228-4948-4852-4d7a735ff0e0/main.spi
00:00:11 #1048 [Verbose] >
00:00:11 #1049 [Verbose] > ╭─[ 135.88ms - stdout ]────────────────────────────────────────────────────────╮
00:00:11 #1050 [Verbose] > │ let rec method0 () : unit = │
00:00:11 #1051 [Verbose] > │ let v0 : string = $"__expect / actual: %A{45} / expected: %A{45}" │
00:00:11 #1052 [Verbose] > │ let v1 : string = $"__expect / actual: %A{45} / expected: %A{45}" │
00:00:11 #1053 [Verbose] > │ () │
00:00:11 #1054 [Verbose] > │ method0() │
00:00:11 #1055 [Verbose] > │ │
00:00:11 #1056 [Verbose] > │ │
00:00:11 #1057 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:12 #1058 [Verbose] > [NbConvertApp] Converting notebook stream.dib.ipynb to html
00:00:12 #1059 [Verbose] > /opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:00:12 #1060 [Verbose] > validate(nb)
00:00:13 #1061 [Verbose] > /opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:00:13 #1062 [Verbose] > return _pygments_highlight(
00:00:13 #1063 [Verbose] > [NbConvertApp] Writing 358624 bytes to stream.dib.html
00:00:13 #1064 [Debug] executeAsync / exitCode: 0 / output.Length: 76006
00:00:13 #1065 [Debug] main / executeCommand / exitCode: 0
00:00:00 #1 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #2 [Debug] executeAsync / options: { Command =
"dotnet "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 --default-int i32 --default-float f64"
WorkingDirectory = None
CancellationToken = Some System.Threading.CancellationToken
OnLine = Some <fun:main@464-1020> }
00:00:00 #3 [Verbose] > pwd: /home/runner/work/polyglot/polyglot/lib/spiral
00:00:00 #4 [Verbose] > dll_path: /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release
00:00:00 #5 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #6 [Verbose] waitForPortAccess / port: 13805 / retry: 0
00:00:00 #7 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #8 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #9 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #10 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #11 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #12 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #13 [Verbose] > Starting the Spiral Server. It is bound to: http://localhost:13805
00:00:00 #14 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #15 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #16 [Debug] sendJson / port: 13805 / json: {"Ping":true} / result.Length:
00:00:00 #17 [Verbose] awaitCompiler / Ping / result: Some(null) / port: 13805 / retry: 0
00:00:00 #18 [Verbose] > Server bound to: http://localhost:13805
00:00:00 #19 [Debug] executeAsync / options: { Command = "pwsh -c "../../scripts/invoke-dib.ps1 seq.dib""
WorkingDirectory = None
CancellationToken = Some System.Threading.CancellationToken
OnLine = None }
00:00:02 #20 [Verbose] >
00:00:02 #21 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:02 #22 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:02 #23 [Verbose] > │ # seq │
00:00:02 #24 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:02 #25 [Verbose] >
00:00:02 #26 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:02 #27 [Verbose] > // // test
00:00:02 #28 [Verbose] >
00:00:02 #29 [Verbose] > open testing
00:00:04 #30 [Verbose] > Building /tmp/!dotnet-repl/20240320-1228-5557-5773-515f40b6a215/main.spi
00:00:06 #31 [Verbose] >
00:00:06 #32 [Verbose] > ╭─[ 3.80s - stdout ]───────────────────────────────────────────────────────────╮
00:00:06 #33 [Verbose] > │ () │
00:00:06 #34 [Verbose] > │ │
00:00:06 #35 [Verbose] > │ │
00:00:06 #36 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #37 [Verbose] >
00:00:06 #38 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:06 #39 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:06 #40 [Verbose] > │ ## seq │
00:00:06 #41 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #42 [Verbose] >
00:00:06 #43 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 #44 [Verbose] > type seq dim el = dim -> option el
00:00:06 #45 [Verbose] > Building /tmp/!dotnet-repl/20240320-1228-5803-0368-0e82bd740e3f/main.spi
00:00:06 #46 [Verbose] >
00:00:06 #47 [Verbose] > ╭─[ 182.76ms - stdout ]────────────────────────────────────────────────────────╮
00:00:06 #48 [Verbose] > │ () │
00:00:06 #49 [Verbose] > │ │
00:00:06 #50 [Verbose] > │ │
00:00:06 #51 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #52 [Verbose] >
00:00:06 #53 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:06 #54 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:06 #55 [Verbose] > │ ## try_item │
00:00:06 #56 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #57 [Verbose] >
00:00:06 #58 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 #59 [Verbose] > inl try_item n s =
00:00:06 #60 [Verbose] > n |> s
00:00:06 #61 [Verbose] > Building /tmp/!dotnet-repl/20240320-1228-5822-2221-214b112a559e/main.spi
00:00:06 #62 [Verbose] >
00:00:06 #63 [Verbose] > ╭─[ 155.35ms - stdout ]────────────────────────────────────────────────────────╮
00:00:06 #64 [Verbose] > │ () │
00:00:06 #65 [Verbose] > │ │
00:00:06 #66 [Verbose] > │ │
00:00:06 #67 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #68 [Verbose] >
00:00:06 #69 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:06 #70 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:06 #71 [Verbose] > │ ## from_list │
00:00:06 #72 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #73 [Verbose] >
00:00:06 #74 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 #75 [Verbose] > inl from_list list =
00:00:06 #76 [Verbose] > fun n =>
00:00:06 #77 [Verbose] > list
00:00:06 #78 [Verbose] > |> listm'.try_item n
00:00:06 #79 [Verbose] > Building /tmp/!dotnet-repl/20240320-1228-5837-3753-31bd8ee0eac5/main.spi
00:00:06 #80 [Verbose] >
00:00:06 #81 [Verbose] > ╭─[ 167.02ms - stdout ]────────────────────────────────────────────────────────╮
00:00:06 #82 [Verbose] > │ () │
00:00:06 #83 [Verbose] > │ │
00:00:06 #84 [Verbose] > │ │
00:00:06 #85 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #86 [Verbose] >
00:00:06 #87 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 #88 [Verbose] > // // test
00:00:06 #89 [Verbose] >
00:00:06 #90 [Verbose] > listm.init 10i32 print_and_return
00:00:06 #91 [Verbose] > |> from_list
00:00:06 #92 [Verbose] > |> try_item 5i32
00:00:06 #93 [Verbose] > |> _assert_eq (Some 5i32)
00:00:06 #94 [Verbose] > Building /tmp/!dotnet-repl/20240320-1228-5854-5429-534fb5103bf4/main.spi
00:00:07 #95 [Verbose] >
00:00:07 #96 [Verbose] > ╭─[ 962.61ms - stdout ]────────────────────────────────────────────────────────╮
00:00:07 #97 [Verbose] > │ type [<Struct>] US0 = │
00:00:07 #98 [Verbose] > │ | US0_0 │
00:00:07 #99 [Verbose] > │ | US0_1 of f1_0 : int32 │
00:00:07 #100 [Verbose] > │ let rec method0 () : unit = │
00:00:07 #101 [Verbose] > │ printfn $"print_and_return / x: {0}" │
00:00:07 #102 [Verbose] > │ printfn $"print_and_return / x: {1}" │
00:00:07 #103 [Verbose] > │ printfn $"print_and_return / x: {2}" │
00:00:07 #104 [Verbose] > │ printfn $"print_and_return / x: {3}" │
00:00:07 #105 [Verbose] > │ printfn $"print_and_return / x: {4}" │
00:00:07 #106 [Verbose] > │ printfn $"print_and_return / x: {5}" │
00:00:07 #107 [Verbose] > │ printfn $"print_and_return / x: {6}" │
00:00:07 #108 [Verbose] > │ printfn $"print_and_return / x: {7}" │
00:00:07 #109 [Verbose] > │ printfn $"print_and_return / x: {8}" │
00:00:07 #110 [Verbose] > │ printfn $"print_and_return / x: {9}" │
00:00:07 #111 [Verbose] > │ let v3 : US0 = US0_1(5) │
00:00:07 #112 [Verbose] > │ let v4 : US0 = US0_1(5) │
00:00:07 #113 [Verbose] > │ let v5 : string = $"__expect / actual: %A{v3} / expected: %A{v4}" │
00:00:07 #114 [Verbose] > │ () │
00:00:07 #115 [Verbose] > │ method0() │
00:00:07 #116 [Verbose] > │ │
00:00:07 #117 [Verbose] > │ print_and_return / x: 0 │
00:00:07 #118 [Verbose] > │ print_and_return / x: 1 │
00:00:07 #119 [Verbose] > │ print_and_return / x: 2 │
00:00:07 #120 [Verbose] > │ print_and_return / x: 3 │
00:00:07 #121 [Verbose] > │ print_and_return / x: 4 │
00:00:07 #122 [Verbose] > │ print_and_return / x: 5 │
00:00:07 #123 [Verbose] > │ print_and_return / x: 6 │
00:00:07 #124 [Verbose] > │ print_and_return / x: 7 │
00:00:07 #125 [Verbose] > │ print_and_return / x: 8 │
00:00:07 #126 [Verbose] > │ print_and_return / x: 9 │
00:00:07 #127 [Verbose] > │ │
00:00:07 #128 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #129 [Verbose] >
00:00:07 #130 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:07 #131 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:07 #132 [Verbose] > │ ## map │
00:00:07 #133 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #134 [Verbose] >
00:00:07 #135 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:07 #136 [Verbose] > inl map fn s =
00:00:07 #137 [Verbose] > fun n =>
00:00:07 #138 [Verbose] > n
00:00:07 #139 [Verbose] > |> s
00:00:07 #140 [Verbose] > |> optionm.map fn
00:00:07 #141 [Verbose] > Building /tmp/!dotnet-repl/20240320-1228-5950-5080-56c13be8aa61/main.spi
00:00:07 #142 [Verbose] >
00:00:07 #143 [Verbose] > ╭─[ 137.18ms - stdout ]────────────────────────────────────────────────────────╮
00:00:07 #144 [Verbose] > │ () │
00:00:07 #145 [Verbose] > │ │
00:00:07 #146 [Verbose] > │ │
00:00:07 #147 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #148 [Verbose] >
00:00:07 #149 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:07 #150 [Verbose] > // // test
00:00:07 #151 [Verbose] >
00:00:07 #152 [Verbose] > listm.init 10i32 id
00:00:07 #153 [Verbose] > |> from_list
00:00:07 #154 [Verbose] > |> map ((*) 2)
00:00:07 #155 [Verbose] > |> try_item 5i32
00:00:07 #156 [Verbose] > |> _assert_eq (Some 10i32)
00:00:07 #157 [Verbose] > Building /tmp/!dotnet-repl/20240320-1228-5964-6455-6d3fe0fc8d4a/main.spi
00:00:07 #158 [Verbose] >
00:00:07 #159 [Verbose] > ╭─[ 173.73ms - stdout ]────────────────────────────────────────────────────────╮
00:00:07 #160 [Verbose] > │ type [<Struct>] US0 = │
00:00:07 #161 [Verbose] > │ | US0_0 │
00:00:07 #162 [Verbose] > │ | US0_1 of f1_0 : int32 │
00:00:07 #163 [Verbose] > │ let rec method0 () : unit = │
00:00:07 #164 [Verbose] > │ let v3 : US0 = US0_1(10) │
00:00:07 #165 [Verbose] > │ let v4 : US0 = US0_1(10) │
00:00:07 #166 [Verbose] > │ let v5 : string = $"__expect / actual: %A{v3} / expected: %A{v4}" │
00:00:07 #167 [Verbose] > │ () │
00:00:07 #168 [Verbose] > │ method0() │
00:00:07 #169 [Verbose] > │ │
00:00:07 #170 [Verbose] > │ │
00:00:07 #171 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #172 [Verbose] >
00:00:07 #173 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:07 #174 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:07 #175 [Verbose] > │ ## mapi │
00:00:07 #176 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #177 [Verbose] >
00:00:07 #178 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:07 #179 [Verbose] > inl mapi fn s =
00:00:07 #180 [Verbose] > fun n =>
00:00:07 #181 [Verbose] > n
00:00:07 #182 [Verbose] > |> s
00:00:07 #183 [Verbose] > |> optionm.map (fn n)
00:00:08 #184 [Verbose] > Building /tmp/!dotnet-repl/20240320-1228-5982-8211-8d660b7f0e87/main.spi
00:00:08 #185 [Verbose] >
00:00:08 #186 [Verbose] > ╭─[ 135.72ms - stdout ]────────────────────────────────────────────────────────╮
00:00:08 #187 [Verbose] > │ () │
00:00:08 #188 [Verbose] > │ │
00:00:08 #189 [Verbose] > │ │
00:00:08 #190 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #191 [Verbose] >
00:00:08 #192 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:08 #193 [Verbose] > // // test
00:00:08 #194 [Verbose] >
00:00:08 #195 [Verbose] > listm.init 10i32 print_and_return
00:00:08 #196 [Verbose] > |> from_list
00:00:08 #197 [Verbose] > |> mapi fun i x => i + x
00:00:08 #198 [Verbose] > |> try_item 5i32
00:00:08 #199 [Verbose] > |> _assert_eq (Some 10i32)
00:00:08 #200 [Verbose] > Building /tmp/!dotnet-repl/20240320-1228-5995-9574-992482011f8b/main.spi
00:00:08 #201 [Verbose] >
00:00:08 #202 [Verbose] > ╭─[ 172.38ms - stdout ]────────────────────────────────────────────────────────╮
00:00:08 #203 [Verbose] > │ type [<Struct>] US0 = │
00:00:08 #204 [Verbose] > │ | US0_0 │
00:00:08 #205 [Verbose] > │ | US0_1 of f1_0 : int32 │
00:00:08 #206 [Verbose] > │ let rec method0 () : unit = │
00:00:08 #207 [Verbose] > │ printfn $"print_and_return / x: {0}" │
00:00:08 #208 [Verbose] > │ printfn $"print_and_return / x: {1}" │
00:00:08 #209 [Verbose] > │ printfn $"print_and_return / x: {2}" │
00:00:08 #210 [Verbose] > │ printfn $"print_and_return / x: {3}" │
00:00:08 #211 [Verbose] > │ printfn $"print_and_return / x: {4}" │
00:00:08 #212 [Verbose] > │ printfn $"print_and_return / x: {5}" │
00:00:08 #213 [Verbose] > │ printfn $"print_and_return / x: {6}" │
00:00:08 #214 [Verbose] > │ printfn $"print_and_return / x: {7}" │
00:00:08 #215 [Verbose] > │ printfn $"print_and_return / x: {8}" │
00:00:08 #216 [Verbose] > │ printfn $"print_and_return / x: {9}" │
00:00:08 #217 [Verbose] > │ let v3 : US0 = US0_1(10) │
00:00:08 #218 [Verbose] > │ let v4 : US0 = US0_1(10) │
00:00:08 #219 [Verbose] > │ let v5 : string = $"__expect / actual: %A{v3} / expected: %A{v4}" │
00:00:08 #220 [Verbose] > │ () │
00:00:08 #221 [Verbose] > │ method0() │
00:00:08 #222 [Verbose] > │ │
00:00:08 #223 [Verbose] > │ print_and_return / x: 0 │
00:00:08 #224 [Verbose] > │ print_and_return / x: 1 │
00:00:08 #225 [Verbose] > │ print_and_return / x: 2 │
00:00:08 #226 [Verbose] > │ print_and_return / x: 3 │
00:00:08 #227 [Verbose] > │ print_and_return / x: 4 │
00:00:08 #228 [Verbose] > │ print_and_return / x: 5 │
00:00:08 #229 [Verbose] > │ print_and_return / x: 6 │
00:00:08 #230 [Verbose] > │ print_and_return / x: 7 │
00:00:08 #231 [Verbose] > │ print_and_return / x: 8 │
00:00:08 #232 [Verbose] > │ print_and_return / x: 9 │
00:00:08 #233 [Verbose] > │ │
00:00:08 #234 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #235 [Verbose] >
00:00:08 #236 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:08 #237 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:08 #238 [Verbose] > │ ## choose │
00:00:08 #239 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #240 [Verbose] >
00:00:08 #241 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:08 #242 [Verbose] > inl choose forall dim {number} t u. (fn : t -> option u) (s : seq dim t) : seq
00:00:08 #243 [Verbose] > dim u =
00:00:08 #244 [Verbose] > fun n =>
00:00:08 #245 [Verbose] > inl rec body fn s i i' =
00:00:08 #246 [Verbose] > match i |> s with
00:00:08 #247 [Verbose] > | None => None
00:00:08 #248 [Verbose] > | Some x =>
00:00:08 #249 [Verbose] > match x |> fn with
00:00:08 #250 [Verbose] > | Some x when n = i' => Some x
00:00:08 #251 [Verbose] > | Some _ => loop (i + 1) (i' + 1)
00:00:08 #252 [Verbose] > | _ => loop (i + 1) i'
00:00:08 #253 [Verbose] > and inl loop i i' =
00:00:08 #254 [Verbose] > if n |> var_is |> not
00:00:08 #255 [Verbose] > then body fn s i i'
00:00:08 #256 [Verbose] > else
00:00:08 #257 [Verbose] > inl fn = join fn
00:00:08 #258 [Verbose] > inl s = join s
00:00:08 #259 [Verbose] > join body fn s i i'
00:00:08 #260 [Verbose] > loop 0 0
00:00:08 #261 [Verbose] > Building /tmp/!dotnet-repl/20240320-1229-0013-1326-1b29551c7621/main.spi
00:00:08 #262 [Verbose] >
00:00:08 #263 [Verbose] > ╭─[ 141.19ms - stdout ]────────────────────────────────────────────────────────╮
00:00:08 #264 [Verbose] > │ () │
00:00:08 #265 [Verbose] > │ │
00:00:08 #266 [Verbose] > │ │
00:00:08 #267 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #268 [Verbose] >
00:00:08 #269 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:08 #270 [Verbose] > // // test
00:00:08 #271 [Verbose] >
00:00:08 #272 [Verbose] > listm.init 10i32 print_and_return
00:00:08 #273 [Verbose] > |> from_list
00:00:08 #274 [Verbose] > |> choose (fun x => if x % 2 = 0 then Some x else None)
00:00:08 #275 [Verbose] > |> try_item 1i32
00:00:08 #276 [Verbose] > |> _assert_eq (Some 2i32)
00:00:08 #277 [Verbose] > Building /tmp/!dotnet-repl/20240320-1229-0027-2735-2901c92f0929/main.spi
00:00:08 #278 [Verbose] >
00:00:08 #279 [Verbose] > ╭─[ 170.11ms - stdout ]────────────────────────────────────────────────────────╮
00:00:08 #280 [Verbose] > │ type [<Struct>] US0 = │
00:00:08 #281 [Verbose] > │ | US0_0 │
00:00:08 #282 [Verbose] > │ | US0_1 of f1_0 : int32 │
00:00:08 #283 [Verbose] > │ let rec method0 () : unit = │
00:00:08 #284 [Verbose] > │ printfn $"print_and_return / x: {0}" │
00:00:08 #285 [Verbose] > │ printfn $"print_and_return / x: {1}" │
00:00:08 #286 [Verbose] > │ printfn $"print_and_return / x: {2}" │
00:00:08 #287 [Verbose] > │ printfn $"print_and_return / x: {3}" │
00:00:08 #288 [Verbose] > │ printfn $"print_and_return / x: {4}" │
00:00:08 #289 [Verbose] > │ printfn $"print_and_return / x: {5}" │
00:00:08 #290 [Verbose] > │ printfn $"print_and_return / x: {6}" │
00:00:08 #291 [Verbose] > │ printfn $"print_and_return / x: {7}" │
00:00:08 #292 [Verbose] > │ printfn $"print_and_return / x: {8}" │
00:00:08 #293 [Verbose] > │ printfn $"print_and_return / x: {9}" │
00:00:08 #294 [Verbose] > │ let v3 : US0 = US0_1(2) │
00:00:08 #295 [Verbose] > │ let v4 : US0 = US0_1(2) │
00:00:08 #296 [Verbose] > │ let v5 : string = $"__expect / actual: %A{v3} / expected: %A{v4}" │
00:00:08 #297 [Verbose] > │ () │
00:00:08 #298 [Verbose] > │ method0() │
00:00:08 #299 [Verbose] > │ │
00:00:08 #300 [Verbose] > │ print_and_return / x: 0 │
00:00:08 #301 [Verbose] > │ print_and_return / x: 1 │
00:00:08 #302 [Verbose] > │ print_and_return / x: 2 │
00:00:08 #303 [Verbose] > │ print_and_return / x: 3 │
00:00:08 #304 [Verbose] > │ print_and_return / x: 4 │
00:00:08 #305 [Verbose] > │ print_and_return / x: 5 │
00:00:08 #306 [Verbose] > │ print_and_return / x: 6 │
00:00:08 #307 [Verbose] > │ print_and_return / x: 7 │
00:00:08 #308 [Verbose] > │ print_and_return / x: 8 │
00:00:08 #309 [Verbose] > │ print_and_return / x: 9 │
00:00:08 #310 [Verbose] > │ │
00:00:08 #311 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #312 [Verbose] >
00:00:08 #313 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:08 #314 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:08 #315 [Verbose] > │ ## indexed │
00:00:08 #316 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #317 [Verbose] >
00:00:08 #318 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:08 #319 [Verbose] > inl indexed s =
00:00:08 #320 [Verbose] > s
00:00:08 #321 [Verbose] > |> mapi fun i x =>
00:00:08 #322 [Verbose] > i, x
00:00:08 #323 [Verbose] > Building /tmp/!dotnet-repl/20240320-1229-0044-4467-4961fc8c0768/main.spi
00:00:08 #324 [Verbose] >
00:00:08 #325 [Verbose] > ╭─[ 130.45ms - stdout ]────────────────────────────────────────────────────────╮
00:00:08 #326 [Verbose] > │ () │
00:00:08 #327 [Verbose] > │ │
00:00:08 #328 [Verbose] > │ │
00:00:08 #329 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #330 [Verbose] >
00:00:08 #331 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:08 #332 [Verbose] > // // test
00:00:08 #333 [Verbose] >
00:00:08 #334 [Verbose] > listm.init 10i32 ((*) 2)
00:00:08 #335 [Verbose] > |> from_list
00:00:08 #336 [Verbose] > |> indexed
00:00:08 #337 [Verbose] > |> try_item 5i32
00:00:08 #338 [Verbose] > |> _assert_eq (Some (5i32, 10i32))
00:00:08 #339 [Verbose] > Building /tmp/!dotnet-repl/20240320-1229-0057-5772-5aaa91d93742/main.spi
00:00:08 #340 [Verbose] >
00:00:08 #341 [Verbose] > ╭─[ 179.41ms - stdout ]────────────────────────────────────────────────────────╮
00:00:08 #342 [Verbose] > │ type [<Struct>] US0 = │
00:00:08 #343 [Verbose] > │ | US0_0 │
00:00:08 #344 [Verbose] > │ | US0_1 of f1_0 : int32 * f1_1 : int32 │
00:00:08 #345 [Verbose] > │ let rec method0 () : unit = │
00:00:08 #346 [Verbose] > │ let v3 : US0 = US0_1(5, 10) │
00:00:08 #347 [Verbose] > │ let v4 : US0 = US0_1(5, 10) │
00:00:08 #348 [Verbose] > │ let v5 : string = $"__expect / actual: %A{v3} / expected: %A{v4}" │
00:00:08 #349 [Verbose] > │ () │
00:00:08 #350 [Verbose] > │ method0() │
00:00:08 #351 [Verbose] > │ │
00:00:08 #352 [Verbose] > │ │
00:00:08 #353 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #354 [Verbose] >
00:00:08 #355 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:08 #356 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:08 #357 [Verbose] > │ ## zip │
00:00:08 #358 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #359 [Verbose] >
00:00:08 #360 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:08 #361 [Verbose] > inl zip n seq1 seq2 =
00:00:08 #362 [Verbose] > seq1 n, seq2 n
00:00:08 #363 [Verbose] > Building /tmp/!dotnet-repl/20240320-1229-0075-7584-7e9876274523/main.spi
00:00:09 #364 [Verbose] >
00:00:09 #365 [Verbose] > ╭─[ 131.24ms - stdout ]────────────────────────────────────────────────────────╮
00:00:09 #366 [Verbose] > │ () │
00:00:09 #367 [Verbose] > │ │
00:00:09 #368 [Verbose] > │ │
00:00:09 #369 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #370 [Verbose] >
00:00:09 #371 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:09 #372 [Verbose] > // // test
00:00:09 #373 [Verbose] >
00:00:09 #374 [Verbose] > ((listm.init 10i32 id |> from_list), (listm.init 10i32 ((*) 2) |> from_list))
00:00:09 #375 [Verbose] > ||> zip 5i32
00:00:09 #376 [Verbose] > |> _assert_eq (Some 5, Some 10)
00:00:09 #377 [Verbose] > Building /tmp/!dotnet-repl/20240320-1229-0089-8900-86d6190f4f28/main.spi
00:00:09 #378 [Verbose] >
00:00:09 #379 [Verbose] > ╭─[ 166.24ms - stdout ]────────────────────────────────────────────────────────╮
00:00:09 #380 [Verbose] > │ type [<Struct>] US0 = │
00:00:09 #381 [Verbose] > │ | US0_0 │
00:00:09 #382 [Verbose] > │ | US0_1 of f1_0 : int32 │
00:00:09 #383 [Verbose] > │ let rec method0 () : unit = │
00:00:09 #384 [Verbose] > │ let v6 : US0 = US0_1(5) │
00:00:09 #385 [Verbose] > │ let v7 : US0 = US0_1(10) │
00:00:09 #386 [Verbose] > │ let v8 : US0 = US0_1(5) │
00:00:09 #387 [Verbose] > │ let v9 : US0 = US0_1(10) │
00:00:09 #388 [Verbose] > │ let v10 : string = $"__expect / actual: %A{struct (v6, v7)} / expected: │
00:00:09 #389 [Verbose] > │ %A{struct (v8, v9)}" │
00:00:09 #390 [Verbose] > │ () │
00:00:09 #391 [Verbose] > │ method0() │
00:00:09 #392 [Verbose] > │ │
00:00:09 #393 [Verbose] > │ │
00:00:09 #394 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #395 [Verbose] >
00:00:09 #396 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:09 #397 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:09 #398 [Verbose] > │ ## zip_with │
00:00:09 #399 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #400 [Verbose] >
00:00:09 #401 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:09 #402 [Verbose] > inl zip_with fn seq1 seq2 =
00:00:09 #403 [Verbose] > fun n =>
00:00:09 #404 [Verbose] > fn (seq1 n) (seq2 n)
00:00:09 #405 [Verbose] > Building /tmp/!dotnet-repl/20240320-1229-0105-0586-01f01dc53db3/main.spi
00:00:09 #406 [Verbose] >
00:00:09 #407 [Verbose] > ╭─[ 130.85ms - stdout ]────────────────────────────────────────────────────────╮
00:00:09 #408 [Verbose] > │ () │
00:00:09 #409 [Verbose] > │ │
00:00:09 #410 [Verbose] > │ │
00:00:09 #411 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #412 [Verbose] >
00:00:09 #413 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:09 #414 [Verbose] > // // test
00:00:09 #415 [Verbose] >
00:00:09 #416 [Verbose] > ((listm.init 10i32 id |> from_list), (listm.init 10i32 ((*) 2) |> from_list))
00:00:09 #417 [Verbose] > ||> zip_with (optionm'.choose (+))
00:00:09 #418 [Verbose] > |> try_item 2i32
00:00:09 #419 [Verbose] > |> _assert_eq (Some 6)
00:00:09 #420 [Verbose] > Building /tmp/!dotnet-repl/20240320-1229-0118-1894-1068b945d871/main.spi
00:00:09 #421 [Verbose] >
00:00:09 #422 [Verbose] > ╭─[ 182.45ms - stdout ]────────────────────────────────────────────────────────╮
00:00:09 #423 [Verbose] > │ type [<Struct>] US0 = │
00:00:09 #424 [Verbose] > │ | US0_0 │
00:00:09 #425 [Verbose] > │ | US0_1 of f1_0 : int32 │
00:00:09 #426 [Verbose] > │ let rec method0 () : unit = │
00:00:09 #427 [Verbose] > │ let v3 : US0 = US0_1(6) │
00:00:09 #428 [Verbose] > │ let v4 : US0 = US0_1(6) │
00:00:09 #429 [Verbose] > │ let v5 : string = $"__expect / actual: %A{v3} / expected: %A{v4}" │
00:00:09 #430 [Verbose] > │ () │
00:00:09 #431 [Verbose] > │ method0() │
00:00:09 #432 [Verbose] > │ │
00:00:09 #433 [Verbose] > │ │
00:00:09 #434 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #435 [Verbose] >
00:00:09 #436 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:09 #437 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:09 #438 [Verbose] > │ ## fold │
00:00:09 #439 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #440 [Verbose] >
00:00:09 #441 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:09 #442 [Verbose] > inl fold fn init seq =
00:00:09 #443 [Verbose] > inl rec loop acc n =
00:00:09 #444 [Verbose] > match seq n with
00:00:09 #445 [Verbose] > | Some x => loop (fn acc x) (n + 1)
00:00:09 #446 [Verbose] > | None => acc
00:00:09 #447 [Verbose] > loop init 0
00:00:09 #448 [Verbose] >
00:00:09 #449 [Verbose] > inl fold_ fn init seq =
00:00:09 #450 [Verbose] > let rec loop acc n =
00:00:09 #451 [Verbose] > match seq n with
00:00:09 #452 [Verbose] > | Some x => loop (fn acc x) (n + 1)
00:00:09 #453 [Verbose] > | None => acc
00:00:09 #454 [Verbose] > loop init 0
00:00:09 #455 [Verbose] > Building /tmp/!dotnet-repl/20240320-1229-0137-3742-3c61efceb688/main.spi
00:00:09 #456 [Verbose] >
00:00:09 #457 [Verbose] > ╭─[ 140.11ms - stdout ]────────────────────────────────────────────────────────╮
00:00:09 #458 [Verbose] > │ () │
00:00:09 #459 [Verbose] > │ │
00:00:09 #460 [Verbose] > │ │
00:00:09 #461 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #462 [Verbose] >
00:00:09 #463 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:09 #464 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:09 #465 [Verbose] > │ ## sum │
00:00:09 #466 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #467 [Verbose] >
00:00:09 #468 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:09 #469 [Verbose] > inl sum seq =
00:00:09 #470 [Verbose] > seq |> fold (+) 0
00:00:09 #471 [Verbose] >
00:00:09 #472 [Verbose] > inl sum_ seq =
00:00:09 #473 [Verbose] > seq |> fold_ (+) 0
00:00:09 #474 [Verbose] > Building /tmp/!dotnet-repl/20240320-1229-0151-5151-5ead81a2601a/main.spi
00:00:09 #475 [Verbose] >
00:00:09 #476 [Verbose] > ╭─[ 129.84ms - stdout ]────────────────────────────────────────────────────────╮
00:00:09 #477 [Verbose] > │ () │
00:00:09 #478 [Verbose] > │ │
00:00:09 #479 [Verbose] > │ │
00:00:09 #480 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #481 [Verbose] >
00:00:09 #482 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:09 #483 [Verbose] > // // test
00:00:09 #484 [Verbose] >
00:00:09 #485 [Verbose] > listm.init 10i32 id
00:00:09 #486 [Verbose] > |> from_list
00:00:09 #487 [Verbose] > |> fun f (n : i32) => f n
00:00:09 #488 [Verbose] > |> sum
00:00:09 #489 [Verbose] > |> _assert_eq 45
00:00:09 #490 [Verbose] > Building /tmp/!dotnet-repl/20240320-1229-0164-6455-63e959a56afd/main.spi
00:00:09 #491 [Verbose] >
00:00:09 #492 [Verbose] > ╭─[ 139.46ms - stdout ]────────────────────────────────────────────────────────╮
00:00:09 #493 [Verbose] > │ let rec method0 () : unit = │
00:00:09 #494 [Verbose] > │ let v0 : string = $"__expect / actual: %A{45} / expected: %A{45}" │
00:00:09 #495 [Verbose] > │ () │
00:00:09 #496 [Verbose] > │ method0() │
00:00:09 #497 [Verbose] > │ │
00:00:09 #498 [Verbose] > │ │
00:00:09 #499 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #500 [Verbose] >
00:00:09 #501 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:09 #502 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:09 #503 [Verbose] > │ ## to_list │
00:00:09 #504 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #505 [Verbose] >
00:00:09 #506 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:09 #507 [Verbose] > inl to_list seq =
00:00:09 #508 [Verbose] > seq
00:00:09 #509 [Verbose] > |> fold (fun acc x => x :: acc) [[]]
00:00:09 #510 [Verbose] > |> listm.rev
00:00:09 #511 [Verbose] >
00:00:09 #512 [Verbose] > inl to_list_ seq =
00:00:09 #513 [Verbose] > seq
00:00:09 #514 [Verbose] > |> fold_ (fun acc x => x :: acc) [[]]
00:00:09 #515 [Verbose] > |> listm.rev
00:00:10 #516 [Verbose] > Building /tmp/!dotnet-repl/20240320-1229-0178-7861-72a86a8692d3/main.spi
00:00:10 #517 [Verbose] >
00:00:10 #518 [Verbose] > ╭─[ 135.78ms - stdout ]────────────────────────────────────────────────────────╮
00:00:10 #519 [Verbose] > │ () │
00:00:10 #520 [Verbose] > │ │
00:00:10 #521 [Verbose] > │ │
00:00:10 #522 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:10 #523 [Verbose] >
00:00:10 #524 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:10 #525 [Verbose] > // // test
00:00:10 #526 [Verbose] >
00:00:10 #527 [Verbose] > listm.init 10i32 id
00:00:10 #528 [Verbose] > |> from_list
00:00:10 #529 [Verbose] > |> fun f (n : i32) => f n
00:00:10 #530 [Verbose] > |> to_list
00:00:10 #531 [Verbose] > |> _assert_eq (listm.init 10i32 id)
00:00:10 #532 [Verbose] > Building /tmp/!dotnet-repl/20240320-1229-0192-9222-974c4a31692b/main.spi
00:00:10 #533 [Verbose] >
00:00:10 #534 [Verbose] > ╭─[ 296.49ms - stdout ]────────────────────────────────────────────────────────╮
00:00:10 #535 [Verbose] > │ type UH0 = │
00:00:10 #536 [Verbose] > │ | UH0_0 of int32 * UH0 │
00:00:10 #537 [Verbose] > │ | UH0_1 │
00:00:10 #538 [Verbose] > │ let rec method0 () : unit = │
00:00:10 #539 [Verbose] > │ let v88 : UH0 = UH0_1 │
00:00:10 #540 [Verbose] > │ let v89 : UH0 = UH0_0(9, v88) │
00:00:10 #541 [Verbose] > │ let v90 : UH0 = UH0_0(8, v89) │
00:00:10 #542 [Verbose] > │ let v91 : UH0 = UH0_0(7, v90) │
00:00:10 #543 [Verbose] > │ let v92 : UH0 = UH0_0(6, v91) │
00:00:10 #544 [Verbose] > │ let v93 : UH0 = UH0_0(5, v92) │
00:00:10 #545 [Verbose] > │ let v94 : UH0 = UH0_0(4, v93) │
00:00:10 #546 [Verbose] > │ let v95 : UH0 = UH0_0(3, v94) │
00:00:10 #547 [Verbose] > │ let v96 : UH0 = UH0_0(2, v95) │
00:00:10 #548 [Verbose] > │ let v97 : UH0 = UH0_0(1, v96) │
00:00:10 #549 [Verbose] > │ let v98 : UH0 = UH0_0(0, v97) │
00:00:10 #550 [Verbose] > │ let v99 : UH0 = UH0_1 │
00:00:10 #551 [Verbose] > │ let v100 : UH0 = UH0_0(9, v99) │
00:00:10 #552 [Verbose] > │ let v101 : UH0 = UH0_0(8, v100) │
00:00:10 #553 [Verbose] > │ let v102 : UH0 = UH0_0(7, v101) │
00:00:10 #554 [Verbose] > │ let v103 : UH0 = UH0_0(6, v102) │
00:00:10 #555 [Verbose] > │ let v104 : UH0 = UH0_0(5, v103) │
00:00:10 #556 [Verbose] > │ let v105 : UH0 = UH0_0(4, v104) │
00:00:10 #557 [Verbose] > │ let v106 : UH0 = UH0_0(3, v105) │
00:00:10 #558 [Verbose] > │ let v107 : UH0 = UH0_0(2, v106) │
00:00:10 #559 [Verbose] > │ let v108 : UH0 = UH0_0(1, v107) │
00:00:10 #560 [Verbose] > │ let v109 : UH0 = UH0_0(0, v108) │
00:00:10 #561 [Verbose] > │ let v110 : string = $"__expect / actual: %A{v98} / expected: %A{v109}" │
00:00:10 #562 [Verbose] > │ () │
00:00:10 #563 [Verbose] > │ method0() │
00:00:10 #564 [Verbose] > │ │
00:00:10 #565 [Verbose] > │ │
00:00:10 #566 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:10 #567 [Verbose] >
00:00:10 #568 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:10 #569 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:10 #570 [Verbose] > │ ## from_array │
00:00:10 #571 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:10 #572 [Verbose] >
00:00:10 #573 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:10 #574 [Verbose] > inl from_array forall dim {number; int} el. (array : a dim el) : seq dim el =
00:00:10 #575 [Verbose] > fun n =>
00:00:10 #576 [Verbose] > if n >= length array
00:00:10 #577 [Verbose] > then None
00:00:10 #578 [Verbose] > else index array n |> Some
00:00:10 #579 [Verbose] > Building /tmp/!dotnet-repl/20240320-1229-0222-2256-204f1e06b48f/main.spi
00:00:10 #580 [Verbose] >
00:00:10 #581 [Verbose] > ╭─[ 136.45ms - stdout ]────────────────────────────────────────────────────────╮
00:00:10 #582 [Verbose] > │ () │
00:00:10 #583 [Verbose] > │ │
00:00:10 #584 [Verbose] > │ │
00:00:10 #585 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:10 #586 [Verbose] >
00:00:10 #587 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:10 #588 [Verbose] > // // test
00:00:10 #589 [Verbose] >
00:00:10 #590 [Verbose] > a ;[[ 1; 2; 3 ]]
00:00:10 #591 [Verbose] > |> from_array
00:00:10 #592 [Verbose] > |> try_item 1i32
00:00:10 #593 [Verbose] > |> _assert_eq (Some 2i32)
00:00:10 #594 [Verbose] > Building /tmp/!dotnet-repl/20240320-1229-0236-3602-3b35a5ed8304/main.spi
00:00:10 #595 [Verbose] >
00:00:10 #596 [Verbose] > ╭─[ 328.28ms - stdout ]────────────────────────────────────────────────────────╮
00:00:10 #597 [Verbose] > │ type [<Struct>] US0 = │
00:00:10 #598 [Verbose] > │ | US0_0 │
00:00:10 #599 [Verbose] > │ | US0_1 of f1_0 : int32 │
00:00:10 #600 [Verbose] > │ let rec method1 (v0 : (int32 [])) : (int32 []) = │
00:00:10 #601 [Verbose] > │ v0 │
00:00:10 #602 [Verbose] > │ and method2 (v0 : bool) : bool = │
00:00:10 #603 [Verbose] > │ v0 │
00:00:10 #604 [Verbose] > │ and method0 () : unit = │
00:00:10 #605 [Verbose] > │ let v0 : (int32 []) = [|1; 2; 3|] │
00:00:10 #606 [Verbose] > │ let v1 : (int32 []) = method1(v0) │
00:00:10 #607 [Verbose] > │ let v2 : int32 = v1.Length │
00:00:10 #608 [Verbose] > │ let v3 : bool = 1 >= v2 │
00:00:10 #609 [Verbose] > │ let v7 : US0 = │
00:00:10 #610 [Verbose] > │ if v3 then │
00:00:10 #611 [Verbose] > │ US0_0 │
00:00:10 #612 [Verbose] > │ else │
00:00:10 #613 [Verbose] > │ let v5 : int32 = v1.[int 1] │
00:00:10 #614 [Verbose] > │ US0_1(v5) │
00:00:10 #615 [Verbose] > │ let v11 : bool = │
00:00:10 #616 [Verbose] > │ match v7 with │
00:00:10 #617 [Verbose] > │ | US0_1(v9) -> (* Some *) │
00:00:10 #618 [Verbose] > │ let v10 : bool = v9 = 2 │
00:00:10 #619 [Verbose] > │ v10 │
00:00:10 #620 [Verbose] > │ | _ -> │
00:00:10 #621 [Verbose] > │ false │
00:00:10 #622 [Verbose] > │ let v13 : bool = │
00:00:10 #623 [Verbose] > │ if v11 then │
00:00:10 #624 [Verbose] > │ true │
00:00:10 #625 [Verbose] > │ else │
00:00:10 #626 [Verbose] > │ method2(v11) │
00:00:10 #627 [Verbose] > │ let v14 : US0 = US0_1(2) │
00:00:10 #628 [Verbose] > │ let v15 : string = $"__expect / actual: %A{v7} / expected: %A{v14}" │
00:00:10 #629 [Verbose] > │ let v16 : bool = v13 = false │
00:00:10 #630 [Verbose] > │ if v16 then │
00:00:10 #631 [Verbose] > │ failwith<unit> v15 │
00:00:10 #632 [Verbose] > │ method0() │
00:00:10 #633 [Verbose] > │ │
00:00:10 #634 [Verbose] > │ │
00:00:10 #635 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:10 #636 [Verbose] >
00:00:10 #637 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:10 #638 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:10 #639 [Verbose] > │ ## to_array │
00:00:10 #640 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:10 #641 [Verbose] >
00:00:10 #642 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:10 #643 [Verbose] > inl to_array seq =
00:00:10 #644 [Verbose] > inl ar = a ;[[]] |> mut
00:00:10 #645 [Verbose] > ((), seq)
00:00:10 #646 [Verbose] > ||> fold fun _ x =>
00:00:10 #647 [Verbose] > ar <- *ar /@ a ;[[x]]
00:00:10 #648 [Verbose] > *ar
00:00:10 #649 [Verbose] >
00:00:10 #650 [Verbose] > inl to_array_ seq =
00:00:10 #651 [Verbose] > inl ar = a ;[[]] |> mut
00:00:10 #652 [Verbose] > ((), seq)
00:00:10 #653 [Verbose] > ||> fold_ fun _ x =>
00:00:10 #654 [Verbose] > ar <- *ar /@ a ;[[x]]
00:00:10 #655 [Verbose] > *ar
00:00:10 #656 [Verbose] > Building /tmp/!dotnet-repl/20240320-1229-0268-6897-627797c665f1/main.spi
00:00:10 #657 [Verbose] >
00:00:10 #658 [Verbose] > ╭─[ 131.98ms - stdout ]────────────────────────────────────────────────────────╮
00:00:10 #659 [Verbose] > │ () │
00:00:10 #660 [Verbose] > │ │
00:00:10 #661 [Verbose] > │ │
00:00:10 #662 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:10 #663 [Verbose] >
00:00:10 #664 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:10 #665 [Verbose] > // // test
00:00:10 #666 [Verbose] >
00:00:10 #667 [Verbose] > listm.init 10i32 id
00:00:10 #668 [Verbose] > |> from_list
00:00:10 #669 [Verbose] > |> fun (x : i32 -> _) => x
00:00:10 #670 [Verbose] > |> to_array
00:00:10 #671 [Verbose] > |> _assert_eq (a ;[[ 0; 1; 2; 3; 4; 5; 6; 7; 8; 9 ]] : _ i32 _)
00:00:11 #672 [Verbose] > Building /tmp/!dotnet-repl/20240320-1229-0282-8226-8467f335602d/main.spi
00:00:11 #673 [Verbose] >
00:00:11 #674 [Verbose] > ╭─[ 371.67ms - stdout ]────────────────────────────────────────────────────────╮
00:00:11 #675 [Verbose] > │ type Mut0 = {mutable l0 : (int32 [])} │
00:00:11 #676 [Verbose] > │ and Mut1 = {mutable l0 : int32} │
00:00:11 #677 [Verbose] > │ let rec method1 (v0 : (int32 [])) : (int32 []) = │
00:00:11 #678 [Verbose] > │ v0 │
00:00:11 #679 [Verbose] > │ and method2 (v0 : int32, v1 : Mut1) : bool = │
00:00:11 #680 [Verbose] > │ let v2 : int32 = v1.l0 │
00:00:11 #681 [Verbose] > │ let v3 : bool = v2 < v0 │
00:00:11 #682 [Verbose] > │ v3 │
00:00:11 #683 [Verbose] > │ and method3 (v0 : (int32 []), v1 : (int32 []), v2 : int32) : bool = │
00:00:11 #684 [Verbose] > │ let v3 : int32 = v0.Length │
00:00:11 #685 [Verbose] > │ let v4 : bool = v2 < v3 │
00:00:11 #686 [Verbose] > │ if v4 then │
00:00:11 #687 [Verbose] > │ let v5 : int32 = v0.[int v2] │
00:00:11 #688 [Verbose] > │ let v6 : int32 = v1.[int v2] │
00:00:11 #689 [Verbose] > │ let v7 : bool = v5 = v6 │
00:00:11 #690 [Verbose] > │ if v7 then │
00:00:11 #691 [Verbose] > │ let v8 : int32 = v2 + 1 │
00:00:11 #692 [Verbose] > │ method3(v0, v1, v8) │
00:00:11 #693 [Verbose] > │ else │
00:00:11 #694 [Verbose] > │ false │
00:00:11 #695 [Verbose] > │ else │
00:00:11 #696 [Verbose] > │ true │
00:00:11 #697 [Verbose] > │ and method4 (v0 : bool) : bool = │
00:00:11 #698 [Verbose] > │ v0 │
00:00:11 #699 [Verbose] > │ and method0 () : unit = │
00:00:11 #700 [Verbose] > │ let v0 : (int32 []) = [||] │
00:00:11 #701 [Verbose] > │ let v1 : (int32 []) = method1(v0) │
00:00:11 #702 [Verbose] > │ let v2 : Mut0 = {l0 = v1} : Mut0 │
00:00:11 #703 [Verbose] > │ let v3 : (int32 []) = v2.l0 │
00:00:11 #704 [Verbose] > │ let v4 : (int32 []) = [|0|] │
00:00:11 #705 [Verbose] > │ let v5 : (int32 []) = method1(v4) │
00:00:11 #706 [Verbose] > │ let v6 : int32 = v3.Length │
00:00:11 #707 [Verbose] > │ let v7 : int32 = v5.Length │
00:00:11 #708 [Verbose] > │ let v8 : int32 = v6 + v7 │
00:00:11 #709 [Verbose] > │ let v9 : (int32 []) = Array.zeroCreate<int32> (v8) │
00:00:11 #710 [Verbose] > │ let v10 : Mut1 = {l0 = 0} : Mut1 │
00:00:11 #711 [Verbose] > │ while method2(v8, v10) do │
00:00:11 #712 [Verbose] > │ let v12 : int32 = v10.l0 │
00:00:11 #713 [Verbose] > │ let v13 : bool = v12 < v6 │
00:00:11 #714 [Verbose] > │ let v17 : int32 = │
00:00:11 #715 [Verbose] > │ if v13 then │
00:00:11 #716 [Verbose] > │ let v14 : int32 = v3.[int v12] │
00:00:11 #717 [Verbose] > │ v14 │
00:00:11 #718 [Verbose] > │ else │
00:00:11 #719 [Verbose] > │ let v15 : int32 = v12 - v6 │
00:00:11 #720 [Verbose] > │ let v16 : int32 = v5.[int v15] │
00:00:11 #721 [Verbose] > │ v16 │
00:00:11 #722 [Verbose] > │ v9.[int v12] <- v17 │
00:00:11 #723 [Verbose] > │ let v18 : int32 = v12 + 1 │
00:00:11 #724 [Verbose] > │ v10.l0 <- v18 │
00:00:11 #725 [Verbose] > │ () │
00:00:11 #726 [Verbose] > │ v2.l0 <- v9 │
00:00:11 #727 [Verbose] > │ let v19 : (int32 []) = v2.l0 │
00:00:11 #728 [Verbose] > │ let v20 : (int32 []) = [|1|] │
00:00:11 #729 [Verbose] > │ let v21 : (int32 []) = method1(v20) │
00:00:11 #730 [Verbose] > │ let v22 : int32 = v19.Length │
00:00:11 #731 [Verbose] > │ let v23 : int32 = v21.Length │
00:00:11 #732 [Verbose] > │ let v24 : int32 = v22 + v23 │
00:00:11 #733 [Verbose] > │ let v25 : (int32 []) = Array.zeroCreate<int32> (v24) │
00:00:11 #734 [Verbose] > │ let v26 : Mut1 = {l0 = 0} : Mut1 │
00:00:11 #735 [Verbose] > │ while method2(v24, v26) do │
00:00:11 #736 [Verbose] > │ let v28 : int32 = v26.l0 │
00:00:11 #737 [Verbose] > │ let v29 : bool = v28 < v22 │
00:00:11 #738 [Verbose] > │ let v33 : int32 = │
00:00:11 #739 [Verbose] > │ if v29 then │
00:00:11 #740 [Verbose] > │ let v30 : int32 = v19.[int v28] │
00:00:11 #741 [Verbose] > │ v30 │
00:00:11 #742 [Verbose] > │ else │
00:00:11 #743 [Verbose] > │ let v31 : int32 = v28 - v22 │
00:00:11 #744 [Verbose] > │ let v32 : int32 = v21.[int v31] │
00:00:11 #745 [Verbose] > │ v32 │
00:00:11 #746 [Verbose] > │ v25.[int v28] <- v33 │
00:00:11 #747 [Verbose] > │ let v34 : int32 = v28 + 1 │
00:00:11 #748 [Verbose] > │ v26.l0 <- v34 │
00:00:11 #749 [Verbose] > │ () │
00:00:11 #750 [Verbose] > │ v2.l0 <- v25 │
00:00:11 #751 [Verbose] > │ let v35 : (int32 []) = v2.l0 │
00:00:11 #752 [Verbose] > │ let v36 : (int32 []) = [|2|] │
00:00:11 #753 [Verbose] > │ let v37 : (int32 []) = method1(v36) │
00:00:11 #754 [Verbose] > │ let v38 : int32 = v35.Length │
00:00:11 #755 [Verbose] > │ let v39 : int32 = v37.Length │
00:00:11 #756 [Verbose] > │ let v40 : int32 = v38 + v39 │
00:00:11 #757 [Verbose] > │ let v41 : (int32 []) = Array.zeroCreate<int32> (v40) │
00:00:11 #758 [Verbose] > │ let v42 : Mut1 = {l0 = 0} : Mut1 │
00:00:11 #759 [Verbose] > │ while method2(v40, v42) do │
00:00:11 #760 [Verbose] > │ let v44 : int32 = v42.l0 │
00:00:11 #761 [Verbose] > │ let v45 : bool = v44 < v38 │
00:00:11 #762 [Verbose] > │ let v49 : int32 = │
00:00:11 #763 [Verbose] > │ if v45 then │
00:00:11 #764 [Verbose] > │ let v46 : int32 = v35.[int v44] │
00:00:11 #765 [Verbose] > │ v46 │
00:00:11 #766 [Verbose] > │ else │
00:00:11 #767 [Verbose] > │ let v47 : int32 = v44 - v38 │
00:00:11 #768 [Verbose] > │ let v48 : int32 = v37.[int v47] │
00:00:11 #769 [Verbose] > │ v48 │
00:00:11 #770 [Verbose] > │ v41.[int v44] <- v49 │
00:00:11 #771 [Verbose] > │ let v50 : int32 = v44 + 1 │
00:00:11 #772 [Verbose] > │ v42.l0 <- v50 │
00:00:11 #773 [Verbose] > │ () │
00:00:11 #774 [Verbose] > │ v2.l0 <- v41 │
00:00:11 #775 [Verbose] > │ let v51 : (int32 []) = v2.l0 │
00:00:11 #776 [Verbose] > │ let v52 : (int32 []) = [|3|] │
00:00:11 #777 [Verbose] > │ let v53 : (int32 []) = method1(v52) │
00:00:11 #778 [Verbose] > │ let v54 : int32 = v51.Length │
00:00:11 #779 [Verbose] > │ let v55 : int32 = v53.Length │
00:00:11 #780 [Verbose] > │ let v56 : int32 = v54 + v55 │
00:00:11 #781 [Verbose] > │ let v57 : (int32 []) = Array.zeroCreate<int32> (v56) │
00:00:11 #782 [Verbose] > │ let v58 : Mut1 = {l0 = 0} : Mut1 │
00:00:11 #783 [Verbose] > │ while method2(v56, v58) do │
00:00:11 #784 [Verbose] > │ let v60 : int32 = v58.l0 │
00:00:11 #785 [Verbose] > │ let v61 : bool = v60 < v54 │
00:00:11 #786 [Verbose] > │ let v65 : int32 = │
00:00:11 #787 [Verbose] > │ if v61 then │
00:00:11 #788 [Verbose] > │ let v62 : int32 = v51.[int v60] │
00:00:11 #789 [Verbose] > │ v62 │
00:00:11 #790 [Verbose] > │ else │
00:00:11 #791 [Verbose] > │ let v63 : int32 = v60 - v54 │
00:00:11 #792 [Verbose] > │ let v64 : int32 = v53.[int v63] │
00:00:11 #793 [Verbose] > │ v64 │
00:00:11 #794 [Verbose] > │ v57.[int v60] <- v65 │
00:00:11 #795 [Verbose] > │ let v66 : int32 = v60 + 1 │
00:00:11 #796 [Verbose] > │ v58.l0 <- v66 │
00:00:11 #797 [Verbose] > │ () │
00:00:11 #798 [Verbose] > │ v2.l0 <- v57 │
00:00:11 #799 [Verbose] > │ let v67 : (int32 []) = v2.l0 │
00:00:11 #800 [Verbose] > │ let v68 : (int32 []) = [|4|] │
00:00:11 #801 [Verbose] > │ let v69 : (int32 []) = method1(v68) │
00:00:11 #802 [Verbose] > │ let v70 : int32 = v67.Length │
00:00:11 #803 [Verbose] > │ let v71 : int32 = v69.Length │
00:00:11 #804 [Verbose] > │ let v72 : int32 = v70 + v71 │
00:00:11 #805 [Verbose] > │ let v73 : (int32 []) = Array.zeroCreate<int32> (v72) │
00:00:11 #806 [Verbose] > │ let v74 : Mut1 = {l0 = 0} : Mut1 │
00:00:11 #807 [Verbose] > │ while method2(v72, v74) do │
00:00:11 #808 [Verbose] > │ let v76 : int32 = v74.l0 │
00:00:11 #809 [Verbose] > │ let v77 : bool = v76 < v70 │
00:00:11 #810 [Verbose] > │ let v81 : int32 = │
00:00:11 #811 [Verbose] > │ if v77 then │
00:00:11 #812 [Verbose] > │ let v78 : int32 = v67.[int v76] │
00:00:11 #813 [Verbose] > │ v78 │
00:00:11 #814 [Verbose] > │ else │
00:00:11 #815 [Verbose] > │ let v79 : int32 = v76 - v70 │
00:00:11 #816 [Verbose] > │ let v80 : int32 = v69.[int v79] │
00:00:11 #817 [Verbose] > │ v80 │
00:00:11 #818 [Verbose] > │ v73.[int v76] <- v81 │
00:00:11 #819 [Verbose] > │ let v82 : int32 = v76 + 1 │
00:00:11 #820 [Verbose] > │ v74.l0 <- v82 │
00:00:11 #821 [Verbose] > │ () │
00:00:11 #822 [Verbose] > │ v2.l0 <- v73 │
00:00:11 #823 [Verbose] > │ let v83 : (int32 []) = v2.l0 │
00:00:11 #824 [Verbose] > │ let v84 : (int32 []) = [|5|] │
00:00:11 #825 [Verbose] > │ let v85 : (int32 []) = method1(v84) │
00:00:11 #826 [Verbose] > │ let v86 : int32 = v83.Length │
00:00:11 #827 [Verbose] > │ let v87 : int32 = v85.Length │
00:00:11 #828 [Verbose] > │ let v88 : int32 = v86 + v87 │
00:00:11 #829 [Verbose] > │ let v89 : (int32 []) = Array.zeroCreate<int32> (v88) │
00:00:11 #830 [Verbose] > │ let v90 : Mut1 = {l0 = 0} : Mut1 │
00:00:11 #831 [Verbose] > │ while method2(v88, v90) do │
00:00:11 #832 [Verbose] > │ let v92 : int32 = v90.l0 │
00:00:11 #833 [Verbose] > │ let v93 : bool = v92 < v86 │
00:00:11 #834 [Verbose] > │ let v97 : int32 = │
00:00:11 #835 [Verbose] > │ if v93 then │
00:00:11 #836 [Verbose] > │ let v94 : int32 = v83.[int v92] │
00:00:11 #837 [Verbose] > │ v94 │
00:00:11 #838 [Verbose] > │ else │
00:00:11 #839 [Verbose] > │ let v95 : int32 = v92 - v86 │
00:00:11 #840 [Verbose] > │ let v96 : int32 = v85.[int v95] │
00:00:11 #841 [Verbose] > │ v96 │
00:00:11 #842 [Verbose] > │ v89.[int v92] <- v97 │
00:00:11 #843 [Verbose] > │ let v98 : int32 = v92 + 1 │
00:00:11 #844 [Verbose] > │ v90.l0 <- v98 │
00:00:11 #845 [Verbose] > │ () │
00:00:11 #846 [Verbose] > │ v2.l0 <- v89 │
00:00:11 #847 [Verbose] > │ let v99 : (int32 []) = v2.l0 │
00:00:11 #848 [Verbose] > │ let v100 : (int32 []) = [|6|] │
00:00:11 #849 [Verbose] > │ let v101 : (int32 []) = method1(v100) │
00:00:11 #850 [Verbose] > │ let v102 : int32 = v99.Length │
00:00:11 #851 [Verbose] > │ let v103 : int32 = v101.Length │
00:00:11 #852 [Verbose] > │ let v104 : int32 = v102 + v103 │
00:00:11 #853 [Verbose] > │ let v105 : (int32 []) = Array.zeroCreate<int32> (v104) │
00:00:11 #854 [Verbose] > │ let v106 : Mut1 = {l0 = 0} : Mut1 │
00:00:11 #855 [Verbose] > │ while method2(v104, v106) do │
00:00:11 #856 [Verbose] > │ let v108 : int32 = v106.l0 │
00:00:11 #857 [Verbose] > │ let v109 : bool = v108 < v102 │
00:00:11 #858 [Verbose] > │ let v113 : int32 = │
00:00:11 #859 [Verbose] > │ if v109 then │
00:00:11 #860 [Verbose] > │ let v110 : int32 = v99.[int v108] │
00:00:11 #861 [Verbose] > │ v110 │
00:00:11 #862 [Verbose] > │ else │
00:00:11 #863 [Verbose] > │ let v111 : int32 = v108 - v102 │
00:00:11 #864 [Verbose] > │ let v112 : int32 = v101.[int v111] │
00:00:11 #865 [Verbose] > │ v112 │
00:00:11 #866 [Verbose] > │ v105.[int v108] <- v113 │
00:00:11 #867 [Verbose] > │ let v114 : int32 = v108 + 1 │
00:00:11 #868 [Verbose] > │ v106.l0 <- v114 │
00:00:11 #869 [Verbose] > │ () │
00:00:11 #870 [Verbose] > │ v2.l0 <- v105 │
00:00:11 #871 [Verbose] > │ let v115 : (int32 []) = v2.l0 │
00:00:11 #872 [Verbose] > │ let v116 : (int32 []) = [|7|] │
00:00:11 #873 [Verbose] > │ let v117 : (int32 []) = method1(v116) │
00:00:11 #874 [Verbose] > │ let v118 : int32 = v115.Length │
00:00:11 #875 [Verbose] > │ let v119 : int32 = v117.Length │
00:00:11 #876 [Verbose] > │ let v120 : int32 = v118 + v119 │
00:00:11 #877 [Verbose] > │ let v121 : (int32 []) = Array.zeroCreate<int32> (v120) │
00:00:11 #878 [Verbose] > │ let v122 : Mut1 = {l0 = 0} : Mut1 │
00:00:11 #879 [Verbose] > │ while method2(v120, v122) do │
00:00:11 #880 [Verbose] > │ let v124 : int32 = v122.l0 │
00:00:11 #881 [Verbose] > │ let v125 : bool = v124 < v118 │
00:00:11 #882 [Verbose] > │ let v129 : int32 = │
00:00:11 #883 [Verbose] > │ if v125 then │
00:00:11 #884 [Verbose] > │ let v126 : int32 = v115.[int v124] │
00:00:11 #885 [Verbose] > │ v126 │
00:00:11 #886 [Verbose] > │ else │
00:00:11 #887 [Verbose] > │ let v127 : int32 = v124 - v118 │
00:00:11 #888 [Verbose] > │ let v128 : int32 = v117.[int v127] │
00:00:11 #889 [Verbose] > │ v128 │
00:00:11 #890 [Verbose] > │ v121.[int v124] <- v129 │
00:00:11 #891 [Verbose] > │ let v130 : int32 = v124 + 1 │
00:00:11 #892 [Verbose] > │ v122.l0 <- v130 │
00:00:11 #893 [Verbose] > │ () │
00:00:11 #894 [Verbose] > │ v2.l0 <- v121 │
00:00:11 #895 [Verbose] > │ let v131 : (int32 []) = v2.l0 │
00:00:11 #896 [Verbose] > │ let v132 : (int32 []) = [|8|] │
00:00:11 #897 [Verbose] > │ let v133 : (int32 []) = method1(v132) │
00:00:11 #898 [Verbose] > │ let v134 : int32 = v131.Length │
00:00:11 #899 [Verbose] > │ let v135 : int32 = v133.Length │
00:00:11 #900 [Verbose] > │ let v136 : int32 = v134 + v135 │
00:00:11 #901 [Verbose] > │ let v137 : (int32 []) = Array.zeroCreate<int32> (v136) │
00:00:11 #902 [Verbose] > │ let v138 : Mut1 = {l0 = 0} : Mut1 │
00:00:11 #903 [Verbose] > │ while method2(v136, v138) do │
00:00:11 #904 [Verbose] > │ let v140 : int32 = v138.l0 │
00:00:11 #905 [Verbose] > │ let v141 : bool = v140 < v134 │
00:00:11 #906 [Verbose] > │ let v145 : int32 = │
00:00:11 #907 [Verbose] > │ if v141 then │
00:00:11 #908 [Verbose] > │ let v142 : int32 = v131.[int v140] │
00:00:11 #909 [Verbose] > │ v142 │
00:00:11 #910 [Verbose] > │ else │
00:00:11 #911 [Verbose] > │ let v143 : int32 = v140 - v134 │
00:00:11 #912 [Verbose] > │ let v144 : int32 = v133.[int v143] │
00:00:11 #913 [Verbose] > │ v144 │
00:00:11 #914 [Verbose] > │ v137.[int v140] <- v145 │
00:00:11 #915 [Verbose] > │ let v146 : int32 = v140 + 1 │
00:00:11 #916 [Verbose] > │ v138.l0 <- v146 │
00:00:11 #917 [Verbose] > │ () │
00:00:11 #918 [Verbose] > │ v2.l0 <- v137 │
00:00:11 #919 [Verbose] > │ let v147 : (int32 []) = v2.l0 │
00:00:11 #920 [Verbose] > │ let v148 : (int32 []) = [|9|] │
00:00:11 #921 [Verbose] > │ let v149 : (int32 []) = method1(v148) │
00:00:11 #922 [Verbose] > │ let v150 : int32 = v147.Length │
00:00:11 #923 [Verbose] > │ let v151 : int32 = v149.Length │
00:00:11 #924 [Verbose] > │ let v152 : int32 = v150 + v151 │
00:00:11 #925 [Verbose] > │ let v153 : (int32 []) = Array.zeroCreate<int32> (v152) │
00:00:11 #926 [Verbose] > │ let v154 : Mut1 = {l0 = 0} : Mut1 │
00:00:11 #927 [Verbose] > │ while method2(v152, v154) do │
00:00:11 #928 [Verbose] > │ let v156 : int32 = v154.l0 │
00:00:11 #929 [Verbose] > │ let v157 : bool = v156 < v150 │
00:00:11 #930 [Verbose] > │ let v161 : int32 = │
00:00:11 #931 [Verbose] > │ if v157 then │
00:00:11 #932 [Verbose] > │ let v158 : int32 = v147.[int v156] │
00:00:11 #933 [Verbose] > │ v158 │
00:00:11 #934 [Verbose] > │ else │
00:00:11 #935 [Verbose] > │ let v159 : int32 = v156 - v150 │
00:00:11 #936 [Verbose] > │ let v160 : int32 = v149.[int v159] │
00:00:11 #937 [Verbose] > │ v160 │
00:00:11 #938 [Verbose] > │ v153.[int v156] <- v161 │
00:00:11 #939 [Verbose] > │ let v162 : int32 = v156 + 1 │
00:00:11 #940 [Verbose] > │ v154.l0 <- v162 │
00:00:11 #941 [Verbose] > │ () │
00:00:11 #942 [Verbose] > │ v2.l0 <- v153 │
00:00:11 #943 [Verbose] > │ let v163 : (int32 []) = v2.l0 │
00:00:11 #944 [Verbose] > │ let v164 : (int32 []) = [|0; 1; 2; 3; 4; 5; 6; 7; 8; 9|] │
00:00:11 #945 [Verbose] > │ let v165 : (int32 []) = method1(v164) │
00:00:11 #946 [Verbose] > │ let v166 : int32 = v163.Length │
00:00:11 #947 [Verbose] > │ let v167 : int32 = v165.Length │
00:00:11 #948 [Verbose] > │ let v168 : bool = v166 = v167 │
00:00:11 #949 [Verbose] > │ let v169 : bool = v168 <> true │
00:00:11 #950 [Verbose] > │ let v172 : bool = │
00:00:11 #951 [Verbose] > │ if v169 then │
00:00:11 #952 [Verbose] > │ false │
00:00:11 #953 [Verbose] > │ else │
00:00:11 #954 [Verbose] > │ let v170 : int32 = 0 │
00:00:11 #955 [Verbose] > │ method3(v163, v165, v170) │
00:00:11 #956 [Verbose] > │ let v174 : bool = │
00:00:11 #957 [Verbose] > │ if v172 then │
00:00:11 #958 [Verbose] > │ true │
00:00:11 #959 [Verbose] > │ else │
00:00:11 #960 [Verbose] > │ method4(v172) │
00:00:11 #961 [Verbose] > │ let v175 : string = $"__expect / actual: %A{v163} / expected: %A{v165}" │
00:00:11 #962 [Verbose] > │ let v176 : bool = v174 = false │
00:00:11 #963 [Verbose] > │ if v176 then │
00:00:11 #964 [Verbose] > │ failwith<unit> v175 │
00:00:11 #965 [Verbose] > │ method0() │
00:00:11 #966 [Verbose] > │ │
00:00:11 #967 [Verbose] > │ │
00:00:11 #968 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:11 #969 [Verbose] >
00:00:11 #970 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:11 #971 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:11 #972 [Verbose] > │ ## take_while │
00:00:11 #973 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:11 #974 [Verbose] >
00:00:11 #975 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:11 #976 [Verbose] > inl take_while cond seq =
00:00:11 #977 [Verbose] > inl rec loop acc i =
00:00:11 #978 [Verbose] > match seq i with
00:00:11 #979 [Verbose] > | Some st when cond st i => loop (st :: acc) (i + 1)
00:00:11 #980 [Verbose] > | _ => acc |> listm.rev
00:00:11 #981 [Verbose] > loop [[]] 0
00:00:11 #982 [Verbose] > Building /tmp/!dotnet-repl/20240320-1229-0323-2350-20d80f1ed87f/main.spi
00:00:11 #983 [Verbose] >
00:00:11 #984 [Verbose] > ╭─[ 161.72ms - stdout ]────────────────────────────────────────────────────────╮
00:00:11 #985 [Verbose] > │ () │
00:00:11 #986 [Verbose] > │ │
00:00:11 #987 [Verbose] > │ │
00:00:11 #988 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:11 #989 [Verbose] >
00:00:11 #990 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:11 #991 [Verbose] > // // test
00:00:11 #992 [Verbose] >
00:00:11 #993 [Verbose] > listm.init 10i32 id
00:00:11 #994 [Verbose] > |> from_list
00:00:11 #995 [Verbose] > |> take_while (fun n (_ : i32) => n < 5)
00:00:11 #996 [Verbose] > |> listm'.sum
00:00:11 #997 [Verbose] > |> _assert_eq 10
00:00:11 #998 [Verbose] > Building /tmp/!dotnet-repl/20240320-1229-0338-3820-3398052d668a/main.spi
00:00:11 #999 [Verbose] >
00:00:11 #1000 [Verbose] > ╭─[ 138.28ms - stdout ]────────────────────────────────────────────────────────╮
00:00:11 #1001 [Verbose] > │ let rec method0 () : unit = │
00:00:11 #1002 [Verbose] > │ let v0 : string = $"__expect / actual: %A{10} / expected: %A{10}" │
00:00:11 #1003 [Verbose] > │ () │
00:00:11 #1004 [Verbose] > │ method0() │
00:00:11 #1005 [Verbose] > │ │
00:00:11 #1006 [Verbose] > │ │
00:00:11 #1007 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:11 #1008 [Verbose] >
00:00:11 #1009 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:11 #1010 [Verbose] > // // test
00:00:11 #1011 [Verbose] >
00:00:11 #1012 [Verbose] > stream.new_finite_stream print_and_return 10i32
00:00:11 #1013 [Verbose] > |> flip stream.try_item
00:00:11 #1014 [Verbose] > |> take_while (fun n (_ : i32) => n < 5)
00:00:11 #1015 [Verbose] > |> listm'.sum
00:00:11 #1016 [Verbose] > |> _assert_eq 10
00:00:11 #1017 [Verbose] > Building /tmp/!dotnet-repl/20240320-1229-0352-5210-5581d6b24cff/main.spi
00:00:11 #1018 [Verbose] >
00:00:11 #1019 [Verbose] > ╭─[ 159.93ms - stdout ]────────────────────────────────────────────────────────╮
00:00:11 #1020 [Verbose] > │ let rec method0 () : unit = │
00:00:11 #1021 [Verbose] > │ printfn $"print_and_return / x: {0}" │
00:00:11 #1022 [Verbose] > │ printfn $"print_and_return / x: {1}" │
00:00:11 #1023 [Verbose] > │ printfn $"print_and_return / x: {1}" │
00:00:11 #1024 [Verbose] > │ printfn $"print_and_return / x: {2}" │
00:00:11 #1025 [Verbose] > │ printfn $"print_and_return / x: {1}" │
00:00:11 #1026 [Verbose] > │ printfn $"print_and_return / x: {2}" │
00:00:11 #1027 [Verbose] > │ printfn $"print_and_return / x: {3}" │
00:00:11 #1028 [Verbose] > │ printfn $"print_and_return / x: {1}" │
00:00:11 #1029 [Verbose] > │ printfn $"print_and_return / x: {2}" │
00:00:11 #1030 [Verbose] > │ printfn $"print_and_return / x: {3}" │
00:00:11 #1031 [Verbose] > │ printfn $"print_and_return / x: {4}" │
00:00:11 #1032 [Verbose] > │ printfn $"print_and_return / x: {1}" │
00:00:11 #1033 [Verbose] > │ printfn $"print_and_return / x: {2}" │
00:00:11 #1034 [Verbose] > │ printfn $"print_and_return / x: {3}" │
00:00:11 #1035 [Verbose] > │ printfn $"print_and_return / x: {4}" │
00:00:11 #1036 [Verbose] > │ printfn $"print_and_return / x: {5}" │
00:00:11 #1037 [Verbose] > │ let v0 : string = $"__expect / actual: %A{10} / expected: %A{10}" │
00:00:11 #1038 [Verbose] > │ () │
00:00:11 #1039 [Verbose] > │ method0() │
00:00:11 #1040 [Verbose] > │ │
00:00:11 #1041 [Verbose] > │ print_and_return / x: 0 │
00:00:11 #1042 [Verbose] > │ print_and_return / x: 1 │
00:00:11 #1043 [Verbose] > │ print_and_return / x: 1 │
00:00:11 #1044 [Verbose] > │ print_and_return / x: 2 │
00:00:11 #1045 [Verbose] > │ print_and_return / x: 1 │
00:00:11 #1046 [Verbose] > │ print_and_return / x: 2 │
00:00:11 #1047 [Verbose] > │ print_and_return / x: 3 │
00:00:11 #1048 [Verbose] > │ print_and_return / x: 1 │
00:00:11 #1049 [Verbose] > │ print_and_return / x: 2 │
00:00:11 #1050 [Verbose] > │ print_and_return / x: 3 │
00:00:11 #1051 [Verbose] > │ print_and_return / x: 4 │
00:00:11 #1052 [Verbose] > │ print_and_return / x: 1 │
00:00:11 #1053 [Verbose] > │ print_and_return / x: 2 │
00:00:11 #1054 [Verbose] > │ print_and_return / x: 3 │
00:00:11 #1055 [Verbose] > │ print_and_return / x: 4 │
00:00:11 #1056 [Verbose] > │ print_and_return / x: 5 │
00:00:11 #1057 [Verbose] > │ │
00:00:11 #1058 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:11 #1059 [Verbose] >
00:00:11 #1060 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:11 #1061 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:11 #1062 [Verbose] > │ ## take_while_ │
00:00:11 #1063 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:11 #1064 [Verbose] >
00:00:11 #1065 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:11 #1066 [Verbose] > inl take_while_ cond seq =
00:00:11 #1067 [Verbose] > let rec loop acc i =
00:00:11 #1068 [Verbose] > match seq i with
00:00:11 #1069 [Verbose] > | Some st when cond st i => loop (st :: acc) (i + 1)
00:00:11 #1070 [Verbose] > | _ => acc |> listm.rev
00:00:11 #1071 [Verbose] > loop [[]] 0
00:00:11 #1072 [Verbose] > Building /tmp/!dotnet-repl/20240320-1229-0368-6830-6ed35ef5012f/main.spi
00:00:11 #1073 [Verbose] >
00:00:11 #1074 [Verbose] > ╭─[ 134.30ms - stdout ]────────────────────────────────────────────────────────╮
00:00:11 #1075 [Verbose] > │ () │
00:00:11 #1076 [Verbose] > │ │
00:00:11 #1077 [Verbose] > │ │
00:00:11 #1078 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:11 #1079 [Verbose] >
00:00:11 #1080 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:11 #1081 [Verbose] > // // test
00:00:11 #1082 [Verbose] >
00:00:11 #1083 [Verbose] > stream.new_infinite_stream_ print_and_return
00:00:11 #1084 [Verbose] > |> flip stream.try_item
00:00:11 #1085 [Verbose] > |> take_while_ (fun n (_ : i32) => n < 5i32)
00:00:11 #1086 [Verbose] > |> listm'.sum
00:00:11 #1087 [Verbose] > |> _assert_eq 10
00:00:12 #1088 [Verbose] > Building /tmp/!dotnet-repl/20240320-1229-0381-8175-86963d02d694/main.spi
00:00:12 #1089 [Verbose] >
00:00:12 #1090 [Verbose] > ╭─[ 272.43ms - stdout ]────────────────────────────────────────────────────────╮
00:00:12 #1091 [Verbose] > │ type UH0 = │
00:00:12 #1092 [Verbose] > │ | UH0_0 of int32 * (unit -> UH0) │
00:00:12 #1093 [Verbose] > │ | UH0_1 │
00:00:12 #1094 [Verbose] > │ and UH1 = │
00:00:12 #1095 [Verbose] > │ | UH1_0 of int32 * UH1 │
00:00:12 #1096 [Verbose] > │ | UH1_1 │
00:00:12 #1097 [Verbose] > │ and [<Struct>] US0 = │
00:00:12 #1098 [Verbose] > │ | US0_0 │
00:00:12 #1099 [Verbose] > │ | US0_1 of f1_0 : int32 │
00:00:12 #1100 [Verbose] > │ let rec closure0 (v0 : int32) () : UH0 = │
00:00:12 #1101 [Verbose] > │ let v1 : int32 = v0 + 1 │
00:00:12 #1102 [Verbose] > │ method1(v1) │
00:00:12 #1103 [Verbose] > │ and method1 (v0 : int32) : UH0 = │
00:00:12 #1104 [Verbose] > │ printfn $"print_and_return / x: {v0}" │
00:00:12 #1105 [Verbose] > │ let v1 : (unit -> UH0) = closure0(v0) │
00:00:12 #1106 [Verbose] > │ UH0_0(v0, v1) │
00:00:12 #1107 [Verbose] > │ and method3 (v0 : int32, v1 : UH0) : US0 = │
00:00:12 #1108 [Verbose] > │ match v1 with │
00:00:12 #1109 [Verbose] > │ | UH0_0(v2, v3) -> (* StreamCons *) │
00:00:12 #1110 [Verbose] > │ let v4 : bool = v0 <= 0 │
00:00:12 #1111 [Verbose] > │ if v4 then │
00:00:12 #1112 [Verbose] > │ US0_1(v2) │
00:00:12 #1113 [Verbose] > │ else │
00:00:12 #1114 [Verbose] > │ let v6 : int32 = v0 - 1 │
00:00:12 #1115 [Verbose] > │ let v7 : UH0 = v3 () │
00:00:12 #1116 [Verbose] > │ method3(v6, v7) │
00:00:12 #1117 [Verbose] > │ | UH0_1 -> (* StreamNil *) │
00:00:12 #1118 [Verbose] > │ US0_0 │
00:00:12 #1119 [Verbose] > │ and method4 (v0 : UH1, v1 : UH1) : UH1 = │
00:00:12 #1120 [Verbose] > │ match v0 with │
00:00:12 #1121 [Verbose] > │ | UH1_0(v2, v3) -> (* Cons *) │
00:00:12 #1122 [Verbose] > │ let v4 : UH1 = UH1_0(v2, v1) │
00:00:12 #1123 [Verbose] > │ method4(v3, v4) │
00:00:12 #1124 [Verbose] > │ | UH1_1 -> (* Nil *) │
00:00:12 #1125 [Verbose] > │ v1 │
00:00:12 #1126 [Verbose] > │ and method2 (v0 : UH0, v1 : UH1, v2 : int32) : UH1 = │
00:00:12 #1127 [Verbose] > │ let v3 : US0 = method3(v2, v0) │
00:00:12 #1128 [Verbose] > │ match v3 with │
00:00:12 #1129 [Verbose] > │ | US0_1(v4) -> (* Some *) │
00:00:12 #1130 [Verbose] > │ let v5 : bool = v4 < 5 │
00:00:12 #1131 [Verbose] > │ if v5 then │
00:00:12 #1132 [Verbose] > │ let v6 : UH1 = UH1_0(v4, v1) │
00:00:12 #1133 [Verbose] > │ let v7 : int32 = v2 + 1 │
00:00:12 #1134 [Verbose] > │ method2(v0, v6, v7) │
00:00:12 #1135 [Verbose] > │ else │
00:00:12 #1136 [Verbose] > │ let v9 : UH1 = UH1_1 │
00:00:12 #1137 [Verbose] > │ method4(v1, v9) │
00:00:12 #1138 [Verbose] > │ | _ -> │
00:00:12 #1139 [Verbose] > │ let v12 : UH1 = UH1_1 │
00:00:12 #1140 [Verbose] > │ method4(v1, v12) │
00:00:12 #1141 [Verbose] > │ and method5 (v0 : UH1, v1 : int32) : int32 = │
00:00:12 #1142 [Verbose] > │ match v0 with │
00:00:12 #1143 [Verbose] > │ | UH1_0(v2, v3) -> (* Cons *) │
00:00:12 #1144 [Verbose] > │ let v4 : int32 = v1 + v2 │
00:00:12 #1145 [Verbose] > │ method5(v3, v4) │
00:00:12 #1146 [Verbose] > │ | UH1_1 -> (* Nil *) │
00:00:12 #1147 [Verbose] > │ v1 │
00:00:12 #1148 [Verbose] > │ and method6 (v0 : bool) : bool = │
00:00:12 #1149 [Verbose] > │ v0 │
00:00:12 #1150 [Verbose] > │ and method0 () : unit = │
00:00:12 #1151 [Verbose] > │ let v0 : int32 = 0 │
00:00:12 #1152 [Verbose] > │ let v1 : UH0 = method1(v0) │
00:00:12 #1153 [Verbose] > │ let v2 : UH1 = UH1_1 │
00:00:12 #1154 [Verbose] > │ let v3 : int32 = 0 │
00:00:12 #1155 [Verbose] > │ let v4 : UH1 = method2(v1, v2, v3) │
00:00:12 #1156 [Verbose] > │ let v5 : int32 = 0 │
00:00:12 #1157 [Verbose] > │ let v6 : int32 = method5(v4, v5) │
00:00:12 #1158 [Verbose] > │ let v7 : bool = v6 = 10 │
00:00:12 #1159 [Verbose] > │ let v9 : bool = │
00:00:12 #1160 [Verbose] > │ if v7 then │
00:00:12 #1161 [Verbose] > │ true │
00:00:12 #1162 [Verbose] > │ else │
00:00:12 #1163 [Verbose] > │ method6(v7) │
00:00:12 #1164 [Verbose] > │ let v10 : string = $"__expect / actual: %A{v6} / expected: %A{10}" │
00:00:12 #1165 [Verbose] > │ let v11 : bool = v9 = false │
00:00:12 #1166 [Verbose] > │ if v11 then │
00:00:12 #1167 [Verbose] > │ failwith<unit> v10 │
00:00:12 #1168 [Verbose] > │ method0() │
00:00:12 #1169 [Verbose] > │ │
00:00:12 #1170 [Verbose] > │ print_and_return / x: 0 │
00:00:12 #1171 [Verbose] > │ print_and_return / x: 1 │
00:00:12 #1172 [Verbose] > │ print_and_return / x: 1 │
00:00:12 #1173 [Verbose] > │ print_and_return / x: 2 │
00:00:12 #1174 [Verbose] > │ print_and_return / x: 1 │
00:00:12 #1175 [Verbose] > │ print_and_return / x: 2 │
00:00:12 #1176 [Verbose] > │ print_and_return / x: 3 │
00:00:12 #1177 [Verbose] > │ print_and_return / x: 1 │
00:00:12 #1178 [Verbose] > │ print_and_return / x: 2 │
00:00:12 #1179 [Verbose] > │ print_and_return / x: 3 │
00:00:12 #1180 [Verbose] > │ print_and_return / x: 4 │
00:00:12 #1181 [Verbose] > │ print_and_return / x: 1 │
00:00:12 #1182 [Verbose] > │ print_and_return / x: 2 │
00:00:12 #1183 [Verbose] > │ print_and_return / x: 3 │
00:00:12 #1184 [Verbose] > │ print_and_return / x: 4 │
00:00:12 #1185 [Verbose] > │ print_and_return / x: 5 │
00:00:12 #1186 [Verbose] > │ │
00:00:12 #1187 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:12 #1188 [Verbose] >
00:00:12 #1189 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:12 #1190 [Verbose] > // // test
00:00:12 #1191 [Verbose] >
00:00:12 #1192 [Verbose] > stream.new_infinite_stream_ print_and_return
00:00:12 #1193 [Verbose] > |> stream.memoize
00:00:12 #1194 [Verbose] > |> fun list =>
00:00:12 #1195 [Verbose] > inl list = list ()
00:00:12 #1196 [Verbose] > fun n =>
00:00:12 #1197 [Verbose] > list |> stream.try_item n
00:00:12 #1198 [Verbose] > |> take_while_ (fun n (_ : i32) => n < 5i32)
00:00:12 #1199 [Verbose] > |> listm'.sum
00:00:12 #1200 [Verbose] > |> _assert_eq 10
00:00:12 #1201 [Verbose] > Building /tmp/!dotnet-repl/20240320-1229-0409-0963-04097863518b/main.spi
00:00:12 #1202 [Verbose] >
00:00:12 #1203 [Verbose] > ╭─[ 223.89ms - stdout ]────────────────────────────────────────────────────────╮
00:00:12 #1204 [Verbose] > │ type UH0 = │
00:00:12 #1205 [Verbose] > │ | UH0_0 of int32 * (unit -> UH0) │
00:00:12 #1206 [Verbose] > │ | UH0_1 │
00:00:12 #1207 [Verbose] > │ and [<Struct>] US0 = │
00:00:12 #1208 [Verbose] > │ | US0_0 of f0_0 : UH0 │
00:00:12 #1209 [Verbose] > │ | US0_1 of f1_0 : (unit -> UH0) │
00:00:12 #1210 [Verbose] > │ and Mut0 = {mutable l0 : US0} │
00:00:12 #1211 [Verbose] > │ and UH1 = │
00:00:12 #1212 [Verbose] > │ | UH1_0 of int32 * UH1 │
00:00:12 #1213 [Verbose] > │ | UH1_1 │
00:00:12 #1214 [Verbose] > │ and [<Struct>] US1 = │
00:00:12 #1215 [Verbose] > │ | US1_0 │
00:00:12 #1216 [Verbose] > │ | US1_1 of f1_0 : int32 │
00:00:12 #1217 [Verbose] > │ let rec closure0 (v0 : int32) () : UH0 = │
00:00:12 #1218 [Verbose] > │ let v1 : int32 = v0 + 1 │
00:00:12 #1219 [Verbose] > │ method1(v1) │
00:00:12 #1220 [Verbose] > │ and method1 (v0 : int32) : UH0 = │
00:00:12 #1221 [Verbose] > │ printfn $"print_and_return / x: {v0}" │
00:00:12 #1222 [Verbose] > │ let v1 : (unit -> UH0) = closure0(v0) │
00:00:12 #1223 [Verbose] > │ UH0_0(v0, v1) │
00:00:12 #1224 [Verbose] > │ and closure1 (v0 : UH0) () : UH0 = │
00:00:12 #1225 [Verbose] > │ v0 │
00:00:12 #1226 [Verbose] > │ and closure2 (v0 : UH0, v1 : Mut0) () : UH0 = │
00:00:12 #1227 [Verbose] > │ let v2 : US0 = v1.l0 │
00:00:12 #1228 [Verbose] > │ match v2 with │
00:00:12 #1229 [Verbose] > │ | US0_0(v3) -> (* Computed *) │
00:00:12 #1230 [Verbose] > │ v3 │
00:00:12 #1231 [Verbose] > │ | US0_1(v4) -> (* NotComputed *) │
00:00:12 #1232 [Verbose] > │ let v5 : UH0 = v4 () │
00:00:12 #1233 [Verbose] > │ let v12 : UH0 = │
00:00:12 #1234 [Verbose] > │ match v5 with │
00:00:12 #1235 [Verbose] > │ | UH0_0(v7, v8) -> (* StreamCons *) │
00:00:12 #1236 [Verbose] > │ let v9 : (unit -> UH0) = method2(v0, v8) │
00:00:12 #1237 [Verbose] > │ UH0_0(v7, v9) │
00:00:12 #1238 [Verbose] > │ | UH0_1 -> (* StreamNil *) │
00:00:12 #1239 [Verbose] > │ UH0_1 │
00:00:12 #1240 [Verbose] > │ let v13 : US0 = US0_0(v12) │
00:00:12 #1241 [Verbose] > │ v1.l0 <- v13 │
00:00:12 #1242 [Verbose] > │ v12 │
00:00:12 #1243 [Verbose] > │ and method2 (v0 : UH0, v1 : (unit -> UH0)) : (unit -> UH0) = │
00:00:12 #1244 [Verbose] > │ let v2 : US0 = US0_1(v1) │
00:00:12 #1245 [Verbose] > │ let v3 : Mut0 = {l0 = v2} : Mut0 │
00:00:12 #1246 [Verbose] > │ closure2(v0, v3) │
00:00:12 #1247 [Verbose] > │ and method4 (v0 : int32, v1 : UH0) : US1 = │
00:00:12 #1248 [Verbose] > │ match v1 with │
00:00:12 #1249 [Verbose] > │ | UH0_0(v2, v3) -> (* StreamCons *) │
00:00:12 #1250 [Verbose] > │ let v4 : bool = v0 <= 0 │
00:00:12 #1251 [Verbose] > │ if v4 then │
00:00:12 #1252 [Verbose] > │ US1_1(v2) │
00:00:12 #1253 [Verbose] > │ else │
00:00:12 #1254 [Verbose] > │ let v6 : int32 = v0 - 1 │
00:00:12 #1255 [Verbose] > │ let v7 : UH0 = v3 () │
00:00:12 #1256 [Verbose] > │ method4(v6, v7) │
00:00:12 #1257 [Verbose] > │ | UH0_1 -> (* StreamNil *) │
00:00:12 #1258 [Verbose] > │ US1_0 │
00:00:12 #1259 [Verbose] > │ and method5 (v0 : UH1, v1 : UH1) : UH1 = │
00:00:12 #1260 [Verbose] > │ match v0 with │
00:00:12 #1261 [Verbose] > │ | UH1_0(v2, v3) -> (* Cons *) │
00:00:12 #1262 [Verbose] > │ let v4 : UH1 = UH1_0(v2, v1) │
00:00:12 #1263 [Verbose] > │ method5(v3, v4) │
00:00:12 #1264 [Verbose] > │ | UH1_1 -> (* Nil *) │
00:00:12 #1265 [Verbose] > │ v1 │
00:00:12 #1266 [Verbose] > │ and method3 (v0 : UH0, v1 : UH1, v2 : int32) : UH1 = │
00:00:12 #1267 [Verbose] > │ let v3 : US1 = method4(v2, v0) │
00:00:12 #1268 [Verbose] > │ match v3 with │
00:00:12 #1269 [Verbose] > │ | US1_1(v4) -> (* Some *) │
00:00:12 #1270 [Verbose] > │ let v5 : bool = v4 < 5 │
00:00:12 #1271 [Verbose] > │ if v5 then │
00:00:12 #1272 [Verbose] > │ let v6 : UH1 = UH1_0(v4, v1) │
00:00:12 #1273 [Verbose] > │ let v7 : int32 = v2 + 1 │
00:00:12 #1274 [Verbose] > │ method3(v0, v6, v7) │
00:00:12 #1275 [Verbose] > │ else │
00:00:12 #1276 [Verbose] > │ let v9 : UH1 = UH1_1 │
00:00:12 #1277 [Verbose] > │ method5(v1, v9) │
00:00:12 #1278 [Verbose] > │ | _ -> │
00:00:12 #1279 [Verbose] > │ let v12 : UH1 = UH1_1 │
00:00:12 #1280 [Verbose] > │ method5(v1, v12) │
00:00:12 #1281 [Verbose] > │ and method6 (v0 : UH1, v1 : int32) : int32 = │
00:00:12 #1282 [Verbose] > │ match v0 with │
00:00:12 #1283 [Verbose] > │ | UH1_0(v2, v3) -> (* Cons *) │
00:00:12 #1284 [Verbose] > │ let v4 : int32 = v1 + v2 │
00:00:12 #1285 [Verbose] > │ method6(v3, v4) │
00:00:12 #1286 [Verbose] > │ | UH1_1 -> (* Nil *) │
00:00:12 #1287 [Verbose] > │ v1 │
00:00:12 #1288 [Verbose] > │ and method7 (v0 : bool) : bool = │
00:00:12 #1289 [Verbose] > │ v0 │
00:00:12 #1290 [Verbose] > │ and method0 () : unit = │
00:00:12 #1291 [Verbose] > │ let v0 : int32 = 0 │
00:00:12 #1292 [Verbose] > │ let v1 : UH0 = method1(v0) │
00:00:12 #1293 [Verbose] > │ let v2 : (unit -> UH0) = closure1(v1) │
00:00:12 #1294 [Verbose] > │ let v3 : (unit -> UH0) = method2(v1, v2) │
00:00:12 #1295 [Verbose] > │ let v4 : UH0 = v3 () │
00:00:12 #1296 [Verbose] > │ let v5 : UH1 = UH1_1 │
00:00:12 #1297 [Verbose] > │ let v6 : int32 = 0 │
00:00:12 #1298 [Verbose] > │ let v7 : UH1 = method3(v4, v5, v6) │
00:00:12 #1299 [Verbose] > │ let v8 : int32 = 0 │
00:00:12 #1300 [Verbose] > │ let v9 : int32 = method6(v7, v8) │
00:00:12 #1301 [Verbose] > │ let v10 : bool = v9 = 10 │
00:00:12 #1302 [Verbose] > │ let v12 : bool = │
00:00:12 #1303 [Verbose] > │ if v10 then │
00:00:12 #1304 [Verbose] > │ true │
00:00:12 #1305 [Verbose] > │ else │
00:00:12 #1306 [Verbose] > │ method7(v10) │
00:00:12 #1307 [Verbose] > │ let v13 : string = $"__expect / actual: %A{v9} / expected: %A{10}" │
00:00:12 #1308 [Verbose] > │ let v14 : bool = v12 = false │
00:00:12 #1309 [Verbose] > │ if v14 then │
00:00:12 #1310 [Verbose] > │ failwith<unit> v13 │
00:00:12 #1311 [Verbose] > │ method0() │
00:00:12 #1312 [Verbose] > │ │
00:00:12 #1313 [Verbose] > │ print_and_return / x: 0 │
00:00:12 #1314 [Verbose] > │ print_and_return / x: 1 │
00:00:12 #1315 [Verbose] > │ print_and_return / x: 2 │
00:00:12 #1316 [Verbose] > │ print_and_return / x: 3 │
00:00:12 #1317 [Verbose] > │ print_and_return / x: 4 │
00:00:12 #1318 [Verbose] > │ print_and_return / x: 5 │
00:00:12 #1319 [Verbose] > │ │
00:00:12 #1320 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:12 #1321 [Verbose] >
00:00:12 #1322 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:12 #1323 [Verbose] > // // test
00:00:12 #1324 [Verbose] >
00:00:12 #1325 [Verbose] > stream.new_finite_stream print_and_return 10i32
00:00:12 #1326 [Verbose] > |> stream.memoize
00:00:12 #1327 [Verbose] > |> fun list =>
00:00:12 #1328 [Verbose] > inl list = list ()
00:00:12 #1329 [Verbose] > fun n =>
00:00:12 #1330 [Verbose] > list |> stream.try_item n
00:00:12 #1331 [Verbose] > |> take_while_ (fun n (_ : i32) => n < 5)
00:00:12 #1332 [Verbose] > |> listm'.sum
00:00:12 #1333 [Verbose] > |> _assert_eq 10
00:00:12 #1334 [Verbose] > Building /tmp/!dotnet-repl/20240320-1229-0432-3283-3c7eae3f5f04/main.spi
00:00:12 #1335 [Verbose] >
00:00:12 #1336 [Verbose] > ╭─[ 280.80ms - stdout ]────────────────────────────────────────────────────────╮
00:00:12 #1337 [Verbose] > │ type UH0 = │
00:00:12 #1338 [Verbose] > │ | UH0_0 of int32 * (unit -> UH0) │
00:00:12 #1339 [Verbose] > │ | UH0_1 │
00:00:12 #1340 [Verbose] > │ and [<Struct>] US0 = │
00:00:12 #1341 [Verbose] > │ | US0_0 of f0_0 : UH0 │
00:00:12 #1342 [Verbose] > │ | US0_1 of f1_0 : (unit -> UH0) │
00:00:12 #1343 [Verbose] > │ and Mut0 = {mutable l0 : US0} │
00:00:12 #1344 [Verbose] > │ and UH1 = │
00:00:12 #1345 [Verbose] > │ | UH1_0 of int32 * UH1 │
00:00:12 #1346 [Verbose] > │ | UH1_1 │
00:00:12 #1347 [Verbose] > │ and [<Struct>] US1 = │
00:00:12 #1348 [Verbose] > │ | US1_0 │
00:00:12 #1349 [Verbose] > │ | US1_1 of f1_0 : int32 │
00:00:12 #1350 [Verbose] > │ let rec closure10 () () : UH0 = │
00:00:12 #1351 [Verbose] > │ UH0_1 │
00:00:12 #1352 [Verbose] > │ and closure9 () () : UH0 = │
00:00:12 #1353 [Verbose] > │ printfn $"print_and_return / x: {9}" │
00:00:12 #1354 [Verbose] > │ let v0 : (unit -> UH0) = closure10() │
00:00:12 #1355 [Verbose] > │ UH0_0(9, v0) │
00:00:12 #1356 [Verbose] > │ and closure8 () () : UH0 = │
00:00:12 #1357 [Verbose] > │ printfn $"print_and_return / x: {8}" │
00:00:12 #1358 [Verbose] > │ let v0 : (unit -> UH0) = closure9() │
00:00:12 #1359 [Verbose] > │ UH0_0(8, v0) │
00:00:12 #1360 [Verbose] > │ and closure7 () () : UH0 = │
00:00:12 #1361 [Verbose] > │ printfn $"print_and_return / x: {7}" │
00:00:12 #1362 [Verbose] > │ let v0 : (unit -> UH0) = closure8() │
00:00:12 #1363 [Verbose] > │ UH0_0(7, v0) │
00:00:12 #1364 [Verbose] > │ and closure6 () () : UH0 = │
00:00:12 #1365 [Verbose] > │ printfn $"print_and_return / x: {6}" │
00:00:12 #1366 [Verbose] > │ let v0 : (unit -> UH0) = closure7() │
00:00:12 #1367 [Verbose] > │ UH0_0(6, v0) │
00:00:12 #1368 [Verbose] > │ and closure5 () () : UH0 = │
00:00:12 #1369 [Verbose] > │ printfn $"print_and_return / x: {5}" │
00:00:12 #1370 [Verbose] > │ let v0 : (unit -> UH0) = closure6() │
00:00:12 #1371 [Verbose] > │ UH0_0(5, v0) │
00:00:12 #1372 [Verbose] > │ and closure4 () () : UH0 = │
00:00:12 #1373 [Verbose] > │ printfn $"print_and_return / x: {4}" │
00:00:12 #1374 [Verbose] > │ let v0 : (unit -> UH0) = closure5() │
00:00:12 #1375 [Verbose] > │ UH0_0(4, v0) │
00:00:12 #1376 [Verbose] > │ and closure3 () () : UH0 = │
00:00:12 #1377 [Verbose] > │ printfn $"print_and_return / x: {3}" │
00:00:12 #1378 [Verbose] > │ let v0 : (unit -> UH0) = closure4() │
00:00:12 #1379 [Verbose] > │ UH0_0(3, v0) │
00:00:12 #1380 [Verbose] > │ and closure2 () () : UH0 = │
00:00:12 #1381 [Verbose] > │ printfn $"print_and_return / x: {2}" │
00:00:12 #1382 [Verbose] > │ let v0 : (unit -> UH0) = closure3() │
00:00:12 #1383 [Verbose] > │ UH0_0(2, v0) │
00:00:12 #1384 [Verbose] > │ and closure1 () () : UH0 = │
00:00:12 #1385 [Verbose] > │ printfn $"print_and_return / x: {1}" │
00:00:12 #1386 [Verbose] > │ let v0 : (unit -> UH0) = closure2() │
00:00:12 #1387 [Verbose] > │ UH0_0(1, v0) │
00:00:12 #1388 [Verbose] > │ and closure0 () () : UH0 = │
00:00:12 #1389 [Verbose] > │ let v0 : (unit -> UH0) = closure1() │
00:00:12 #1390 [Verbose] > │ UH0_0(0, v0) │
00:00:12 #1391 [Verbose] > │ and closure11 (v0 : Mut0) () : UH0 = │
00:00:12 #1392 [Verbose] > │ let v1 : US0 = v0.l0 │
00:00:12 #1393 [Verbose] > │ match v1 with │
00:00:12 #1394 [Verbose] > │ | US0_0(v2) -> (* Computed *) │
00:00:12 #1395 [Verbose] > │ v2 │
00:00:12 #1396 [Verbose] > │ | US0_1(v3) -> (* NotComputed *) │
00:00:12 #1397 [Verbose] > │ let v4 : UH0 = v3 () │
00:00:12 #1398 [Verbose] > │ let v13 : UH0 = │
00:00:12 #1399 [Verbose] > │ match v4 with │
00:00:12 #1400 [Verbose] > │ | UH0_0(v6, v7) -> (* StreamCons *) │
00:00:12 #1401 [Verbose] > │ let v8 : US0 = US0_1(v7) │
00:00:12 #1402 [Verbose] > │ let v9 : Mut0 = {l0 = v8} : Mut0 │
00:00:12 #1403 [Verbose] > │ let v10 : (unit -> UH0) = closure11(v9) │
00:00:12 #1404 [Verbose] > │ UH0_0(v6, v10) │
00:00:12 #1405 [Verbose] > │ | UH0_1 -> (* StreamNil *) │
00:00:12 #1406 [Verbose] > │ UH0_1 │
00:00:12 #1407 [Verbose] > │ let v14 : US0 = US0_0(v13) │
00:00:12 #1408 [Verbose] > │ v0.l0 <- v14 │
00:00:12 #1409 [Verbose] > │ v13 │
00:00:12 #1410 [Verbose] > │ and method2 (v0 : int32, v1 : UH0) : US1 = │
00:00:12 #1411 [Verbose] > │ match v1 with │
00:00:12 #1412 [Verbose] > │ | UH0_0(v2, v3) -> (* StreamCons *) │
00:00:12 #1413 [Verbose] > │ let v4 : bool = v0 <= 0 │
00:00:12 #1414 [Verbose] > │ if v4 then │
00:00:12 #1415 [Verbose] > │ US1_1(v2) │
00:00:12 #1416 [Verbose] > │ else │
00:00:12 #1417 [Verbose] > │ let v6 : int32 = v0 - 1 │
00:00:12 #1418 [Verbose] > │ let v7 : UH0 = v3 () │
00:00:12 #1419 [Verbose] > │ method2(v6, v7) │
00:00:12 #1420 [Verbose] > │ | UH0_1 -> (* StreamNil *) │
00:00:12 #1421 [Verbose] > │ US1_0 │
00:00:12 #1422 [Verbose] > │ and method3 (v0 : UH1, v1 : UH1) : UH1 = │
00:00:12 #1423 [Verbose] > │ match v0 with │
00:00:12 #1424 [Verbose] > │ | UH1_0(v2, v3) -> (* Cons *) │
00:00:12 #1425 [Verbose] > │ let v4 : UH1 = UH1_0(v2, v1) │
00:00:12 #1426 [Verbose] > │ method3(v3, v4) │
00:00:12 #1427 [Verbose] > │ | UH1_1 -> (* Nil *) │
00:00:12 #1428 [Verbose] > │ v1 │
00:00:12 #1429 [Verbose] > │ and method1 (v0 : UH0, v1 : UH1, v2 : int32) : UH1 = │
00:00:12 #1430 [Verbose] > │ let v3 : US1 = method2(v2, v0) │
00:00:12 #1431 [Verbose] > │ match v3 with │
00:00:12 #1432 [Verbose] > │ | US1_1(v4) -> (* Some *) │
00:00:12 #1433 [Verbose] > │ let v5 : bool = v4 < 5 │
00:00:12 #1434 [Verbose] > │ if v5 then │
00:00:12 #1435 [Verbose] > │ let v6 : UH1 = UH1_0(v4, v1) │
00:00:12 #1436 [Verbose] > │ let v7 : int32 = v2 + 1 │
00:00:12 #1437 [Verbose] > │ method1(v0, v6, v7) │
00:00:12 #1438 [Verbose] > │ else │
00:00:12 #1439 [Verbose] > │ let v9 : UH1 = UH1_1 │
00:00:12 #1440 [Verbose] > │ method3(v1, v9) │
00:00:12 #1441 [Verbose] > │ | _ -> │
00:00:12 #1442 [Verbose] > │ let v12 : UH1 = UH1_1 │
00:00:12 #1443 [Verbose] > │ method3(v1, v12) │
00:00:12 #1444 [Verbose] > │ and method4 (v0 : UH1, v1 : int32) : int32 = │
00:00:12 #1445 [Verbose] > │ match v0 with │
00:00:12 #1446 [Verbose] > │ | UH1_0(v2, v3) -> (* Cons *) │
00:00:12 #1447 [Verbose] > │ let v4 : int32 = v1 + v2 │
00:00:12 #1448 [Verbose] > │ method4(v3, v4) │
00:00:12 #1449 [Verbose] > │ | UH1_1 -> (* Nil *) │
00:00:12 #1450 [Verbose] > │ v1 │
00:00:12 #1451 [Verbose] > │ and method5 (v0 : bool) : bool = │
00:00:12 #1452 [Verbose] > │ v0 │
00:00:12 #1453 [Verbose] > │ and method0 () : unit = │
00:00:12 #1454 [Verbose] > │ printfn $"print_and_return / x: {0}" │
00:00:12 #1455 [Verbose] > │ let v0 : (unit -> UH0) = closure0() │
00:00:12 #1456 [Verbose] > │ let v1 : US0 = US0_1(v0) │
00:00:12 #1457 [Verbose] > │ let v2 : Mut0 = {l0 = v1} : Mut0 │
00:00:12 #1458 [Verbose] > │ let v3 : US0 = v2.l0 │
00:00:12 #1459 [Verbose] > │ let v18 : UH0 = │
00:00:12 #1460 [Verbose] > │ match v3 with │
00:00:12 #1461 [Verbose] > │ | US0_0(v4) -> (* Computed *) │
00:00:12 #1462 [Verbose] > │ v4 │
00:00:12 #1463 [Verbose] > │ | US0_1(v5) -> (* NotComputed *) │
00:00:12 #1464 [Verbose] > │ let v6 : UH0 = v5 () │
00:00:12 #1465 [Verbose] > │ let v15 : UH0 = │
00:00:12 #1466 [Verbose] > │ match v6 with │
00:00:12 #1467 [Verbose] > │ | UH0_0(v8, v9) -> (* StreamCons *) │
00:00:12 #1468 [Verbose] > │ let v10 : US0 = US0_1(v9) │
00:00:12 #1469 [Verbose] > │ let v11 : Mut0 = {l0 = v10} : Mut0 │
00:00:12 #1470 [Verbose] > │ let v12 : (unit -> UH0) = closure11(v11) │
00:00:12 #1471 [Verbose] > │ UH0_0(v8, v12) │
00:00:12 #1472 [Verbose] > │ | UH0_1 -> (* StreamNil *) │
00:00:12 #1473 [Verbose] > │ UH0_1 │
00:00:12 #1474 [Verbose] > │ let v16 : US0 = US0_0(v15) │
00:00:12 #1475 [Verbose] > │ v2.l0 <- v16 │
00:00:12 #1476 [Verbose] > │ v15 │
00:00:12 #1477 [Verbose] > │ let v19 : UH1 = UH1_1 │
00:00:12 #1478 [Verbose] > │ let v20 : int32 = 0 │
00:00:12 #1479 [Verbose] > │ let v21 : UH1 = method1(v18, v19, v20) │
00:00:12 #1480 [Verbose] > │ let v22 : int32 = 0 │
00:00:12 #1481 [Verbose] > │ let v23 : int32 = method4(v21, v22) │
00:00:12 #1482 [Verbose] > │ let v24 : bool = v23 = 10 │
00:00:12 #1483 [Verbose] > │ let v26 : bool = │
00:00:12 #1484 [Verbose] > │ if v24 then │
00:00:12 #1485 [Verbose] > │ true │
00:00:12 #1486 [Verbose] > │ else │
00:00:12 #1487 [Verbose] > │ method5(v24) │
00:00:12 #1488 [Verbose] > │ let v27 : string = $"__expect / actual: %A{v23} / expected: %A{10}" │
00:00:12 #1489 [Verbose] > │ let v28 : bool = v26 = false │
00:00:12 #1490 [Verbose] > │ if v28 then │
00:00:12 #1491 [Verbose] > │ failwith<unit> v27 │
00:00:12 #1492 [Verbose] > │ method0() │
00:00:12 #1493 [Verbose] > │ │
00:00:12 #1494 [Verbose] > │ print_and_return / x: 0 │
00:00:12 #1495 [Verbose] > │ print_and_return / x: 1 │
00:00:12 #1496 [Verbose] > │ print_and_return / x: 2 │
00:00:12 #1497 [Verbose] > │ print_and_return / x: 3 │
00:00:12 #1498 [Verbose] > │ print_and_return / x: 4 │
00:00:12 #1499 [Verbose] > │ print_and_return / x: 5 │
00:00:12 #1500 [Verbose] > │ │
00:00:12 #1501 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:12 #1502 [Verbose] >
00:00:12 #1503 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:12 #1504 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:12 #1505 [Verbose] > │ ## memoize │
00:00:12 #1506 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:12 #1507 [Verbose] >
00:00:12 #1508 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:12 #1509 [Verbose] > inl memoize seq =
00:00:12 #1510 [Verbose] > inl state = mut [[]]
00:00:12 #1511 [Verbose] > fun n =>
00:00:12 #1512 [Verbose] > match *state |> listm'.try_find (fun (n', _) => n' = n) with
00:00:12 #1513 [Verbose] > | Some (_, v) => v
00:00:12 #1514 [Verbose] > | None =>
00:00:12 #1515 [Verbose] > inl new_state = seq n
00:00:12 #1516 [Verbose] > state <- (n, new_state) :: *state
00:00:12 #1517 [Verbose] > new_state
00:00:12 #1518 [Verbose] >
00:00:12 #1519 [Verbose] > inl memoize_ seq =
00:00:12 #1520 [Verbose] > inl state = mut [[]]
00:00:12 #1521 [Verbose] > fun n =>
00:00:12 #1522 [Verbose] > match *state |> listm'.try_find_ (fun (n', _) => n' = n) with
00:00:12 #1523 [Verbose] > | Some (_, v) => v
00:00:12 #1524 [Verbose] > | None =>
00:00:12 #1525 [Verbose] > inl new_state = seq n
00:00:12 #1526 [Verbose] > state <- (n, new_state) :: *state
00:00:12 #1527 [Verbose] > new_state
00:00:12 #1528 [Verbose] > Building /tmp/!dotnet-repl/20240320-1229-0462-6226-60a936537a58/main.spi
00:00:12 #1529 [Verbose] >
00:00:12 #1530 [Verbose] > ╭─[ 144.78ms - stdout ]────────────────────────────────────────────────────────╮
00:00:12 #1531 [Verbose] > │ () │
00:00:12 #1532 [Verbose] > │ │
00:00:12 #1533 [Verbose] > │ │
00:00:12 #1534 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:12 #1535 [Verbose] >
00:00:12 #1536 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:12 #1537 [Verbose] > // // test
00:00:12 #1538 [Verbose] >
00:00:12 #1539 [Verbose] > inl seq =
00:00:12 #1540 [Verbose] > fun n =>
00:00:12 #1541 [Verbose] > n |> print_and_return |> Some
00:00:12 #1542 [Verbose] > |> memoize_
00:00:12 #1543 [Verbose] >
00:00:12 #1544 [Verbose] > seq
00:00:12 #1545 [Verbose] > |> take_while_ (fun n (_ : i32) => n < 5)
00:00:12 #1546 [Verbose] > |> listm'.sum
00:00:12 #1547 [Verbose] > |> _assert_eq 10
00:00:12 #1548 [Verbose] >
00:00:12 #1549 [Verbose] > seq
00:00:12 #1550 [Verbose] > |> take_while_ (fun n _ => n < 5)
00:00:12 #1551 [Verbose] > |> listm'.sum
00:00:12 #1552 [Verbose] > |> _assert_eq 10
00:00:12 #1553 [Verbose] > Building /tmp/!dotnet-repl/20240320-1229-0476-7673-7582a9cfbef2/main.spi
00:00:13 #1554 [Verbose] >
00:00:13 #1555 [Verbose] > ╭─[ 300.07ms - stdout ]────────────────────────────────────────────────────────╮
00:00:13 #1556 [Verbose] > │ type [<Struct>] US0 = │
00:00:13 #1557 [Verbose] > │ | US0_0 │
00:00:13 #1558 [Verbose] > │ | US0_1 of f1_0 : int32 │
00:00:13 #1559 [Verbose] > │ and UH0 = │
00:00:13 #1560 [Verbose] > │ | UH0_0 of int32 * US0 * UH0 │
00:00:13 #1561 [Verbose] > │ | UH0_1 │
00:00:13 #1562 [Verbose] > │ and Mut0 = {mutable l0 : UH0} │
00:00:13 #1563 [Verbose] > │ and UH1 = │
00:00:13 #1564 [Verbose] > │ | UH1_0 of int32 * UH1 │
00:00:13 #1565 [Verbose] > │ | UH1_1 │
00:00:13 #1566 [Verbose] > │ and [<Struct>] US1 = │
00:00:13 #1567 [Verbose] > │ | US1_0 │
00:00:13 #1568 [Verbose] > │ | US1_1 of f1_0 : int32 * f1_1 : US0 │
00:00:13 #1569 [Verbose] > │ let rec method2 (v0 : int32, v1 : UH0) : US1 = │
00:00:13 #1570 [Verbose] > │ match v1 with │
00:00:13 #1571 [Verbose] > │ | UH0_0(v3, v4, v5) -> (* Cons *) │
00:00:13 #1572 [Verbose] > │ let v6 : bool = v3 = v0 │
00:00:13 #1573 [Verbose] > │ if v6 then │
00:00:13 #1574 [Verbose] > │ US1_1(v3, v4) │
00:00:13 #1575 [Verbose] > │ else │
00:00:13 #1576 [Verbose] > │ method2(v0, v5) │
00:00:13 #1577 [Verbose] > │ | UH0_1 -> (* Nil *) │
00:00:13 #1578 [Verbose] > │ US1_0 │
00:00:13 #1579 [Verbose] > │ and method3 (v0 : UH1, v1 : UH1) : UH1 = │
00:00:13 #1580 [Verbose] > │ match v0 with │
00:00:13 #1581 [Verbose] > │ | UH1_0(v2, v3) -> (* Cons *) │
00:00:13 #1582 [Verbose] > │ let v4 : UH1 = UH1_0(v2, v1) │
00:00:13 #1583 [Verbose] > │ method3(v3, v4) │
00:00:13 #1584 [Verbose] > │ | UH1_1 -> (* Nil *) │
00:00:13 #1585 [Verbose] > │ v1 │
00:00:13 #1586 [Verbose] > │ and method1 (v0 : Mut0, v1 : UH1, v2 : int32) : UH1 = │
00:00:13 #1587 [Verbose] > │ let v3 : UH0 = v0.l0 │
00:00:13 #1588 [Verbose] > │ let v4 : US1 = method2(v2, v3) │
00:00:13 #1589 [Verbose] > │ let v12 : US0 = │
00:00:13 #1590 [Verbose] > │ match v4 with │
00:00:13 #1591 [Verbose] > │ | US1_0 -> (* None *) │
00:00:13 #1592 [Verbose] > │ printfn $"print_and_return / x: {v2}" │
00:00:13 #1593 [Verbose] > │ let v7 : UH0 = v0.l0 │
00:00:13 #1594 [Verbose] > │ let v8 : US0 = US0_1(v2) │
00:00:13 #1595 [Verbose] > │ let v9 : UH0 = UH0_0(v2, v8, v7) │
00:00:13 #1596 [Verbose] > │ v0.l0 <- v9 │
00:00:13 #1597 [Verbose] > │ US0_1(v2) │
00:00:13 #1598 [Verbose] > │ | US1_1(v5, v6) -> (* Some *) │
00:00:13 #1599 [Verbose] > │ v6 │
00:00:13 #1600 [Verbose] > │ match v12 with │
00:00:13 #1601 [Verbose] > │ | US0_1(v13) -> (* Some *) │
00:00:13 #1602 [Verbose] > │ let v14 : bool = v13 < 5 │
00:00:13 #1603 [Verbose] > │ if v14 then │
00:00:13 #1604 [Verbose] > │ let v15 : UH1 = UH1_0(v13, v1) │
00:00:13 #1605 [Verbose] > │ let v16 : int32 = v2 + 1 │
00:00:13 #1606 [Verbose] > │ method1(v0, v15, v16) │
00:00:13 #1607 [Verbose] > │ else │
00:00:13 #1608 [Verbose] > │ let v18 : UH1 = UH1_1 │
00:00:13 #1609 [Verbose] > │ method3(v1, v18) │
00:00:13 #1610 [Verbose] > │ | _ -> │
00:00:13 #1611 [Verbose] > │ let v21 : UH1 = UH1_1 │
00:00:13 #1612 [Verbose] > │ method3(v1, v21) │
00:00:13 #1613 [Verbose] > │ and method4 (v0 : UH1, v1 : int32) : int32 = │
00:00:13 #1614 [Verbose] > │ match v0 with │
00:00:13 #1615 [Verbose] > │ | UH1_0(v2, v3) -> (* Cons *) │
00:00:13 #1616 [Verbose] > │ let v4 : int32 = v1 + v2 │
00:00:13 #1617 [Verbose] > │ method4(v3, v4) │
00:00:13 #1618 [Verbose] > │ | UH1_1 -> (* Nil *) │
00:00:13 #1619 [Verbose] > │ v1 │
00:00:13 #1620 [Verbose] > │ and method5 (v0 : bool) : bool = │
00:00:13 #1621 [Verbose] > │ v0 │
00:00:13 #1622 [Verbose] > │ and method6 (v0 : Mut0, v1 : UH1, v2 : int32) : UH1 = │
00:00:13 #1623 [Verbose] > │ let v3 : UH0 = v0.l0 │
00:00:13 #1624 [Verbose] > │ let v4 : US1 = method2(v2, v3) │
00:00:13 #1625 [Verbose] > │ let v12 : US0 = │
00:00:13 #1626 [Verbose] > │ match v4 with │
00:00:13 #1627 [Verbose] > │ | US1_0 -> (* None *) │
00:00:13 #1628 [Verbose] > │ printfn $"print_and_return / x: {v2}" │
00:00:13 #1629 [Verbose] > │ let v7 : UH0 = v0.l0 │
00:00:13 #1630 [Verbose] > │ let v8 : US0 = US0_1(v2) │
00:00:13 #1631 [Verbose] > │ let v9 : UH0 = UH0_0(v2, v8, v7) │
00:00:13 #1632 [Verbose] > │ v0.l0 <- v9 │
00:00:13 #1633 [Verbose] > │ US0_1(v2) │
00:00:13 #1634 [Verbose] > │ | US1_1(v5, v6) -> (* Some *) │
00:00:13 #1635 [Verbose] > │ v6 │
00:00:13 #1636 [Verbose] > │ match v12 with │
00:00:13 #1637 [Verbose] > │ | US0_1(v13) -> (* Some *) │
00:00:13 #1638 [Verbose] > │ let v14 : bool = v13 < 5 │
00:00:13 #1639 [Verbose] > │ if v14 then │
00:00:13 #1640 [Verbose] > │ let v15 : UH1 = UH1_0(v13, v1) │
00:00:13 #1641 [Verbose] > │ let v16 : int32 = v2 + 1 │
00:00:13 #1642 [Verbose] > │ method6(v0, v15, v16) │
00:00:13 #1643 [Verbose] > │ else │
00:00:13 #1644 [Verbose] > │ let v18 : UH1 = UH1_1 │
00:00:13 #1645 [Verbose] > │ method3(v1, v18) │
00:00:13 #1646 [Verbose] > │ | _ -> │
00:00:13 #1647 [Verbose] > │ let v21 : UH1 = UH1_1 │
00:00:13 #1648 [Verbose] > │ method3(v1, v21) │
00:00:13 #1649 [Verbose] > │ and method0 () : unit = │
00:00:13 #1650 [Verbose] > │ let v0 : UH0 = UH0_1 │
00:00:13 #1651 [Verbose] > │ let v1 : Mut0 = {l0 = v0} : Mut0 │
00:00:13 #1652 [Verbose] > │ let v2 : UH1 = UH1_1 │
00:00:13 #1653 [Verbose] > │ let v3 : int32 = 0 │
00:00:13 #1654 [Verbose] > │ let v4 : UH1 = method1(v1, v2, v3) │
00:00:13 #1655 [Verbose] > │ let v5 : int32 = 0 │
00:00:13 #1656 [Verbose] > │ let v6 : int32 = method4(v4, v5) │
00:00:13 #1657 [Verbose] > │ let v7 : bool = v6 = 10 │
00:00:13 #1658 [Verbose] > │ let v9 : bool = │
00:00:13 #1659 [Verbose] > │ if v7 then │
00:00:13 #1660 [Verbose] > │ true │
00:00:13 #1661 [Verbose] > │ else │
00:00:13 #1662 [Verbose] > │ method5(v7) │
00:00:13 #1663 [Verbose] > │ let v10 : string = $"__expect / actual: %A{v6} / expected: %A{10}" │
00:00:13 #1664 [Verbose] > │ let v11 : bool = v9 = false │
00:00:13 #1665 [Verbose] > │ if v11 then │
00:00:13 #1666 [Verbose] > │ failwith<unit> v10 │
00:00:13 #1667 [Verbose] > │ let v12 : UH1 = UH1_1 │
00:00:13 #1668 [Verbose] > │ let v13 : int32 = 0 │
00:00:13 #1669 [Verbose] > │ let v14 : UH1 = method6(v1, v12, v13) │
00:00:13 #1670 [Verbose] > │ let v15 : int32 = 0 │
00:00:13 #1671 [Verbose] > │ let v16 : int32 = method4(v14, v15) │
00:00:13 #1672 [Verbose] > │ let v17 : bool = v16 = 10 │
00:00:13 #1673 [Verbose] > │ let v19 : bool = │
00:00:13 #1674 [Verbose] > │ if v17 then │
00:00:13 #1675 [Verbose] > │ true │
00:00:13 #1676 [Verbose] > │ else │
00:00:13 #1677 [Verbose] > │ method5(v17) │
00:00:13 #1678 [Verbose] > │ let v20 : string = $"__expect / actual: %A{v16} / expected: %A{10}" │
00:00:13 #1679 [Verbose] > │ let v21 : bool = v19 = false │
00:00:13 #1680 [Verbose] > │ if v21 then │
00:00:13 #1681 [Verbose] > │ failwith<unit> v20 │
00:00:13 #1682 [Verbose] > │ method0() │
00:00:13 #1683 [Verbose] > │ │
00:00:13 #1684 [Verbose] > │ print_and_return / x: 0 │
00:00:13 #1685 [Verbose] > │ print_and_return / x: 1 │
00:00:13 #1686 [Verbose] > │ print_and_return / x: 2 │
00:00:13 #1687 [Verbose] > │ print_and_return / x: 3 │
00:00:13 #1688 [Verbose] > │ print_and_return / x: 4 │
00:00:13 #1689 [Verbose] > │ print_and_return / x: 5 │
00:00:13 #1690 [Verbose] > │ │
00:00:13 #1691 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:13 #1692 [Verbose] >
00:00:13 #1693 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:13 #1694 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:13 #1695 [Verbose] > │ ## iterate │
00:00:13 #1696 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:13 #1697 [Verbose] >
00:00:13 #1698 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:13 #1699 [Verbose] > inl iterate f x0 num_steps =
00:00:13 #1700 [Verbose] > inl rec loop x n =
00:00:13 #1701 [Verbose] > if n <= 0
00:00:13 #1702 [Verbose] > then x
00:00:13 #1703 [Verbose] > else loop (f x) (n - 1)
00:00:13 #1704 [Verbose] > loop x0 num_steps
00:00:13 #1705 [Verbose] > Building /tmp/!dotnet-repl/20240320-1229-0507-0756-06a1bcdde0a2/main.spi
00:00:13 #1706 [Verbose] >
00:00:13 #1707 [Verbose] > ╭─[ 138.85ms - stdout ]────────────────────────────────────────────────────────╮
00:00:13 #1708 [Verbose] > │ () │
00:00:13 #1709 [Verbose] > │ │
00:00:13 #1710 [Verbose] > │ │
00:00:13 #1711 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:13 #1712 [Verbose] >
00:00:13 #1713 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:13 #1714 [Verbose] > // // test
00:00:13 #1715 [Verbose] >
00:00:13 #1716 [Verbose] > 10i32 |> iterate ((*) 2) 1i32
00:00:13 #1717 [Verbose] > |> _assert_eq 1024
00:00:13 #1718 [Verbose] > Building /tmp/!dotnet-repl/20240320-1229-0521-2131-2a9180b753e3/main.spi
00:00:13 #1719 [Verbose] >
00:00:13 #1720 [Verbose] > ╭─[ 136.35ms - stdout ]────────────────────────────────────────────────────────╮
00:00:13 #1721 [Verbose] > │ let rec method0 () : unit = │
00:00:13 #1722 [Verbose] > │ let v0 : string = $"__expect / actual: %A{1024} / expected: %A{1024}" │
00:00:13 #1723 [Verbose] > │ () │
00:00:13 #1724 [Verbose] > │ method0() │
00:00:13 #1725 [Verbose] > │ │
00:00:13 #1726 [Verbose] > │ │
00:00:13 #1727 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:13 #1728 [Verbose] >
00:00:13 #1729 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:13 #1730 [Verbose] > inl iterate_ f x0 num_steps =
00:00:13 #1731 [Verbose] > let rec loop x n =
00:00:13 #1732 [Verbose] > if n <= 0
00:00:13 #1733 [Verbose] > then x
00:00:13 #1734 [Verbose] > else loop (f x) (n - 1)
00:00:13 #1735 [Verbose] > loop x0 num_steps
00:00:13 #1736 [Verbose] > Building /tmp/!dotnet-repl/20240320-1229-0535-3503-33fd1829ad36/main.spi
00:00:13 #1737 [Verbose] >
00:00:13 #1738 [Verbose] > ╭─[ 131.44ms - stdout ]────────────────────────────────────────────────────────╮
00:00:13 #1739 [Verbose] > │ () │
00:00:13 #1740 [Verbose] > │ │
00:00:13 #1741 [Verbose] > │ │
00:00:13 #1742 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:13 #1743 [Verbose] >
00:00:13 #1744 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:13 #1745 [Verbose] > // // test
00:00:13 #1746 [Verbose] >
00:00:13 #1747 [Verbose] > 10i32 |> iterate_ ((*) 2) 1i32
00:00:13 #1748 [Verbose] > |> _assert_eq 1024
00:00:13 #1749 [Verbose] > Building /tmp/!dotnet-repl/20240320-1229-0548-4816-4c8c73be0936/main.spi
00:00:13 #1750 [Verbose] >
00:00:13 #1751 [Verbose] > ╭─[ 157.25ms - stdout ]────────────────────────────────────────────────────────╮
00:00:13 #1752 [Verbose] > │ let rec method1 (v0 : int32, v1 : int32) : int32 = │
00:00:13 #1753 [Verbose] > │ let v2 : bool = v1 <= 0 │
00:00:13 #1754 [Verbose] > │ if v2 then │
00:00:13 #1755 [Verbose] > │ v0 │
00:00:13 #1756 [Verbose] > │ else │
00:00:13 #1757 [Verbose] > │ let v3 : int32 = 2 * v0 │
00:00:13 #1758 [Verbose] > │ let v4 : int32 = v1 - 1 │
00:00:13 #1759 [Verbose] > │ method1(v3, v4) │
00:00:13 #1760 [Verbose] > │ and method2 (v0 : bool) : bool = │
00:00:13 #1761 [Verbose] > │ v0 │
00:00:13 #1762 [Verbose] > │ and method0 () : unit = │
00:00:13 #1763 [Verbose] > │ let v0 : int32 = 1 │
00:00:13 #1764 [Verbose] > │ let v1 : int32 = 10 │
00:00:13 #1765 [Verbose] > │ let v2 : int32 = method1(v0, v1) │
00:00:13 #1766 [Verbose] > │ let v3 : bool = v2 = 1024 │
00:00:13 #1767 [Verbose] > │ let v5 : bool = │
00:00:13 #1768 [Verbose] > │ if v3 then │
00:00:13 #1769 [Verbose] > │ true │
00:00:13 #1770 [Verbose] > │ else │
00:00:13 #1771 [Verbose] > │ method2(v3) │
00:00:13 #1772 [Verbose] > │ let v6 : string = $"__expect / actual: %A{v2} / expected: %A{1024}" │
00:00:13 #1773 [Verbose] > │ let v7 : bool = v5 = false │
00:00:13 #1774 [Verbose] > │ if v7 then │
00:00:13 #1775 [Verbose] > │ failwith<unit> v6 │
00:00:13 #1776 [Verbose] > │ method0() │
00:00:13 #1777 [Verbose] > │ │
00:00:13 #1778 [Verbose] > │ │
00:00:13 #1779 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:13 #1780 [Verbose] >
00:00:13 #1781 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:13 #1782 [Verbose] > inl iterate' f x0 num_steps =
00:00:13 #1783 [Verbose] > listm.init num_steps id
00:00:13 #1784 [Verbose] > |> listm.fold (fun x _ => f x) x0
00:00:13 #1785 [Verbose] > Building /tmp/!dotnet-repl/20240320-1229-0564-6409-6b3b3887d45d/main.spi
00:00:13 #1786 [Verbose] >
00:00:13 #1787 [Verbose] > ╭─[ 129.11ms - stdout ]────────────────────────────────────────────────────────╮
00:00:13 #1788 [Verbose] > │ () │
00:00:13 #1789 [Verbose] > │ │
00:00:13 #1790 [Verbose] > │ │
00:00:13 #1791 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:13 #1792 [Verbose] >
00:00:13 #1793 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:13 #1794 [Verbose] > // // test
00:00:13 #1795 [Verbose] >
00:00:13 #1796 [Verbose] > 10i32 |> iterate' ((*) 2) 1i32
00:00:13 #1797 [Verbose] > |> _assert_eq 1024
00:00:13 #1798 [Verbose] > Building /tmp/!dotnet-repl/20240320-1229-0577-7700-7ce8667b7b81/main.spi
00:00:14 #1799 [Verbose] >
00:00:14 #1800 [Verbose] > ╭─[ 145.64ms - stdout ]────────────────────────────────────────────────────────╮
00:00:14 #1801 [Verbose] > │ let rec method0 () : unit = │
00:00:14 #1802 [Verbose] > │ let v0 : string = $"__expect / actual: %A{1024} / expected: %A{1024}" │
00:00:14 #1803 [Verbose] > │ () │
00:00:14 #1804 [Verbose] > │ method0() │
00:00:14 #1805 [Verbose] > │ │
00:00:14 #1806 [Verbose] > │ │
00:00:14 #1807 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:14 #1808 [Verbose] >
00:00:14 #1809 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:14 #1810 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:14 #1811 [Verbose] > │ ## find_last │
00:00:14 #1812 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:14 #1813 [Verbose] >
00:00:14 #1814 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:14 #1815 [Verbose] > inl find_last forall item result. fold_fn fn target : option result =
00:00:14 #1816 [Verbose] > fold_fn (fun (item : item) (result : option result) =>
00:00:14 #1817 [Verbose] > match result with
00:00:14 #1818 [Verbose] > | None => fn item
00:00:14 #1819 [Verbose] > | result => result
00:00:14 #1820 [Verbose] > ) target (None : option result)
00:00:14 #1821 [Verbose] >
00:00:14 #1822 [Verbose] > inl array_find_last forall item result. (fn : item -> option result) (target : a
00:00:14 #1823 [Verbose] > i32 item) : option result =
00:00:14 #1824 [Verbose] > find_last am.foldBack fn target
00:00:14 #1825 [Verbose] >
00:00:14 #1826 [Verbose] > inl list_find_last forall item result. (fn : item -> option result) (target :
00:00:14 #1827 [Verbose] > list item) : option result =
00:00:14 #1828 [Verbose] > find_last listm.foldBack fn target
00:00:14 #1829 [Verbose] > Building /tmp/!dotnet-repl/20240320-1229-0591-9173-97028d627250/main.spi
00:00:14 #1830 [Verbose] >
00:00:14 #1831 [Verbose] > ╭─[ 132.38ms - stdout ]────────────────────────────────────────────────────────╮
00:00:14 #1832 [Verbose] > │ () │
00:00:14 #1833 [Verbose] > │ │
00:00:14 #1834 [Verbose] > │ │
00:00:14 #1835 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:14 #1836 [Verbose] > [NbConvertApp] Converting notebook seq.dib.ipynb to html
00:00:14 #1837 [Verbose] > /opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:00:14 #1838 [Verbose] > validate(nb)
00:00:15 #1839 [Verbose] > /opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:00:15 #1840 [Verbose] > return _pygments_highlight(
00:00:15 #1841 [Verbose] > [NbConvertApp] Writing 392661 bytes to seq.dib.html
00:00:16 #1842 [Debug] executeAsync / exitCode: 0 / output.Length: 152333
00:00:16 #1843 [Debug] main / executeCommand / exitCode: 0
00:00:00 #1 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #2 [Debug] executeAsync / options: { Command =
"dotnet "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 --default-int i32 --default-float f64"
WorkingDirectory = None
CancellationToken = Some System.Threading.CancellationToken
OnLine = Some <fun:main@464-1020> }
00:00:00 #3 [Verbose] > pwd: /home/runner/work/polyglot/polyglot/lib/spiral
00:00:00 #4 [Verbose] > dll_path: /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release
00:00:00 #5 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #6 [Verbose] waitForPortAccess / port: 13805 / retry: 0
00:00:00 #7 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #8 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #9 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #10 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #11 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #12 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #13 [Verbose] > Starting the Spiral Server. It is bound to: http://localhost:13805
00:00:00 #14 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #15 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #16 [Debug] sendJson / port: 13805 / json: {"Ping":true} / result.Length:
00:00:00 #17 [Verbose] awaitCompiler / Ping / result: Some(null) / port: 13805 / retry: 0
00:00:00 #18 [Verbose] > Server bound to: http://localhost:13805
00:00:00 #19 [Debug] executeAsync / options: { Command = "pwsh -c "../../scripts/invoke-dib.ps1 util.dib""
WorkingDirectory = None
CancellationToken = Some System.Threading.CancellationToken
OnLine = None }
00:00:02 #20 [Verbose] >
00:00:02 #21 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:02 #22 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:02 #23 [Verbose] > │ # util │
00:00:02 #24 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:02 #25 [Verbose] >
00:00:02 #26 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:02 #27 [Verbose] > // // test
00:00:02 #28 [Verbose] >
00:00:02 #29 [Verbose] > open testing
00:00:04 #30 [Verbose] > Building /tmp/!dotnet-repl/20240320-1229-1219-1964-1e9cfa630d3f/main.spi
00:00:06 #31 [Verbose] >
00:00:06 #32 [Verbose] > ╭─[ 3.76s - stdout ]───────────────────────────────────────────────────────────╮
00:00:06 #33 [Verbose] > │ () │
00:00:06 #34 [Verbose] > │ │
00:00:06 #35 [Verbose] > │ │
00:00:06 #36 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #37 [Verbose] >
00:00:06 #38 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:06 #39 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:06 #40 [Verbose] > │ ## ski │
00:00:06 #41 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #42 [Verbose] >
00:00:06 #43 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 #44 [Verbose] > union rec ski =
00:00:06 #45 [Verbose] > | I
00:00:06 #46 [Verbose] > | K
00:00:06 #47 [Verbose] > | S
00:00:06 #48 [Verbose] > | App : ski * ski
00:00:06 #49 [Verbose] >
00:00:06 #50 [Verbose] > inl rec eval ski =
00:00:06 #51 [Verbose] > match ski with
00:00:06 #52 [Verbose] > | App (App (K, x), y) => eval x
00:00:06 #53 [Verbose] > | App (App (App (S, x), y), z) => eval (App (App (x, z), App (y, z)))
00:00:06 #54 [Verbose] > | App (I, x) => eval x
00:00:06 #55 [Verbose] > | App (K, x) => App (K, eval x)
00:00:06 #56 [Verbose] > | App (f, x) => eval (App (eval f, x))
00:00:06 #57 [Verbose] > | _ => ski
00:00:06 #58 [Verbose] > Building /tmp/!dotnet-repl/20240320-1229-1458-5880-569bee698fa9/main.spi
00:00:06 #59 [Verbose] >
00:00:06 #60 [Verbose] > ╭─[ 168.22ms - stdout ]────────────────────────────────────────────────────────╮
00:00:06 #61 [Verbose] > │ () │
00:00:06 #62 [Verbose] > │ │
00:00:06 #63 [Verbose] > │ │
00:00:06 #64 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #65 [Verbose] >
00:00:06 #66 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 #67 [Verbose] > // // test
00:00:06 #68 [Verbose] >
00:00:06 #69 [Verbose] > eval I
00:00:06 #70 [Verbose] > |> _assert_eq I
00:00:06 #71 [Verbose] >
00:00:06 #72 [Verbose] > eval (App (I, I))
00:00:06 #73 [Verbose] > |> _assert_eq I
00:00:06 #74 [Verbose] >
00:00:06 #75 [Verbose] > eval (App (I, App (I, I)))
00:00:06 #76 [Verbose] > |> _assert_eq I
00:00:06 #77 [Verbose] >
00:00:06 #78 [Verbose] > eval (App (App (I, I), I))
00:00:06 #79 [Verbose] > |> _assert_eq I
00:00:06 #80 [Verbose] >
00:00:06 #81 [Verbose] > eval (App (App (App (I, I), I), I))
00:00:06 #82 [Verbose] > |> _assert_eq I
00:00:06 #83 [Verbose] >
00:00:06 #84 [Verbose] > eval K
00:00:06 #85 [Verbose] > |> _assert_eq K
00:00:06 #86 [Verbose] >
00:00:06 #87 [Verbose] > eval (App (K, I))
00:00:06 #88 [Verbose] > |> _assert_eq (App (K, I))
00:00:06 #89 [Verbose] >
00:00:06 #90 [Verbose] > eval (App (K, K))
00:00:06 #91 [Verbose] > |> _assert_eq (App (K, K))
00:00:06 #92 [Verbose] >
00:00:06 #93 [Verbose] > eval (App (App (K, I), K))
00:00:06 #94 [Verbose] > |> _assert_eq I
00:00:06 #95 [Verbose] >
00:00:06 #96 [Verbose] > eval (App (App (K, K), I))
00:00:06 #97 [Verbose] > |> _assert_eq K
00:00:06 #98 [Verbose] >
00:00:06 #99 [Verbose] > eval (App (App (App (App (K, K), I), S), K))
00:00:06 #100 [Verbose] > |> _assert_eq S
00:00:06 #101 [Verbose] >
00:00:06 #102 [Verbose] > eval S
00:00:06 #103 [Verbose] > |> _assert_eq S
00:00:06 #104 [Verbose] >
00:00:06 #105 [Verbose] > eval (App (App (App (S, I), I), I))
00:00:06 #106 [Verbose] > |> _assert_eq I
00:00:06 #107 [Verbose] >
00:00:06 #108 [Verbose] > eval (App (App (App (S, K), K), I))
00:00:06 #109 [Verbose] > |> _assert_eq I
00:00:06 #110 [Verbose] >
00:00:06 #111 [Verbose] > eval (App (App (App (S, K), I), (App (App (K, I), S))))
00:00:06 #112 [Verbose] > |> _assert_eq I
00:00:06 #113 [Verbose] >
00:00:06 #114 [Verbose] > eval (App (App (K, S), App (I, App (App (App (S, K), S), I))))
00:00:06 #115 [Verbose] > |> _assert_eq S
00:00:06 #116 [Verbose] >
00:00:06 #117 [Verbose] > eval (App (App (App (S, K), I), K))
00:00:06 #118 [Verbose] > |> _assert_eq K
00:00:06 #119 [Verbose] > Building /tmp/!dotnet-repl/20240320-1229-1475-7522-7b25d07ad230/main.spi
00:00:07 #120 [Verbose] >
00:00:07 #121 [Verbose] > ╭─[ 943.83ms - stdout ]────────────────────────────────────────────────────────╮
00:00:07 #122 [Verbose] > │ type UH0 = │
00:00:07 #123 [Verbose] > │ | UH0_0 of UH0 * UH0 │
00:00:07 #124 [Verbose] > │ | UH0_1 │
00:00:07 #125 [Verbose] > │ | UH0_2 │
00:00:07 #126 [Verbose] > │ | UH0_3 │
00:00:07 #127 [Verbose] > │ let rec method0 () : unit = │
00:00:07 #128 [Verbose] > │ let v3 : UH0 = UH0_1 │
00:00:07 #129 [Verbose] > │ let v4 : UH0 = UH0_1 │
00:00:07 #130 [Verbose] > │ let v5 : string = $"__expect / actual: %A{v3} / expected: %A{v4}" │
00:00:07 #131 [Verbose] > │ let v9 : UH0 = UH0_1 │
00:00:07 #132 [Verbose] > │ let v10 : UH0 = UH0_1 │
00:00:07 #133 [Verbose] > │ let v11 : string = $"__expect / actual: %A{v9} / expected: %A{v10}" │
00:00:07 #134 [Verbose] > │ let v15 : UH0 = UH0_1 │
00:00:07 #135 [Verbose] > │ let v16 : UH0 = UH0_1 │
00:00:07 #136 [Verbose] > │ let v17 : string = $"__expect / actual: %A{v15} / expected: %A{v16}" │
00:00:07 #137 [Verbose] > │ let v21 : UH0 = UH0_1 │
00:00:07 #138 [Verbose] > │ let v22 : UH0 = UH0_1 │
00:00:07 #139 [Verbose] > │ let v23 : string = $"__expect / actual: %A{v21} / expected: %A{v22}" │
00:00:07 #140 [Verbose] > │ let v27 : UH0 = UH0_1 │
00:00:07 #141 [Verbose] > │ let v28 : UH0 = UH0_1 │
00:00:07 #142 [Verbose] > │ let v29 : string = $"__expect / actual: %A{v27} / expected: %A{v28}" │
00:00:07 #143 [Verbose] > │ let v33 : UH0 = UH0_2 │
00:00:07 #144 [Verbose] > │ let v34 : UH0 = UH0_2 │
00:00:07 #145 [Verbose] > │ let v35 : string = $"__expect / actual: %A{v33} / expected: %A{v34}" │
00:00:07 #146 [Verbose] > │ let v47 : UH0 = UH0_2 │
00:00:07 #147 [Verbose] > │ let v48 : UH0 = UH0_1 │
00:00:07 #148 [Verbose] > │ let v49 : UH0 = UH0_0(v47, v48) │
00:00:07 #149 [Verbose] > │ let v50 : UH0 = UH0_2 │
00:00:07 #150 [Verbose] > │ let v51 : UH0 = UH0_1 │
00:00:07 #151 [Verbose] > │ let v52 : UH0 = UH0_0(v50, v51) │
00:00:07 #152 [Verbose] > │ let v53 : string = $"__expect / actual: %A{v49} / expected: %A{v52}" │
00:00:07 #153 [Verbose] > │ let v65 : UH0 = UH0_2 │
00:00:07 #154 [Verbose] > │ let v66 : UH0 = UH0_2 │
00:00:07 #155 [Verbose] > │ let v67 : UH0 = UH0_0(v65, v66) │
00:00:07 #156 [Verbose] > │ let v68 : UH0 = UH0_2 │
00:00:07 #157 [Verbose] > │ let v69 : UH0 = UH0_2 │
00:00:07 #158 [Verbose] > │ let v70 : UH0 = UH0_0(v68, v69) │
00:00:07 #159 [Verbose] > │ let v71 : string = $"__expect / actual: %A{v67} / expected: %A{v70}" │
00:00:07 #160 [Verbose] > │ let v75 : UH0 = UH0_1 │
00:00:07 #161 [Verbose] > │ let v76 : UH0 = UH0_1 │
00:00:07 #162 [Verbose] > │ let v77 : string = $"__expect / actual: %A{v75} / expected: %A{v76}" │
00:00:07 #163 [Verbose] > │ let v81 : UH0 = UH0_2 │
00:00:07 #164 [Verbose] > │ let v82 : UH0 = UH0_2 │
00:00:07 #165 [Verbose] > │ let v83 : string = $"__expect / actual: %A{v81} / expected: %A{v82}" │
00:00:07 #166 [Verbose] > │ let v87 : UH0 = UH0_3 │
00:00:07 #167 [Verbose] > │ let v88 : UH0 = UH0_3 │
00:00:07 #168 [Verbose] > │ let v89 : string = $"__expect / actual: %A{v87} / expected: %A{v88}" │
00:00:07 #169 [Verbose] > │ let v93 : UH0 = UH0_3 │
00:00:07 #170 [Verbose] > │ let v94 : UH0 = UH0_3 │
00:00:07 #171 [Verbose] > │ let v95 : string = $"__expect / actual: %A{v93} / expected: %A{v94}" │
00:00:07 #172 [Verbose] > │ let v99 : UH0 = UH0_1 │
00:00:07 #173 [Verbose] > │ let v100 : UH0 = UH0_1 │
00:00:07 #174 [Verbose] > │ let v101 : string = $"__expect / actual: %A{v99} / expected: %A{v100}" │
00:00:07 #175 [Verbose] > │ let v105 : UH0 = UH0_1 │
00:00:07 #176 [Verbose] > │ let v106 : UH0 = UH0_1 │
00:00:07 #177 [Verbose] > │ let v107 : string = $"__expect / actual: %A{v105} / expected: %A{v106}" │
00:00:07 #178 [Verbose] > │ let v111 : UH0 = UH0_1 │
00:00:07 #179 [Verbose] > │ let v112 : UH0 = UH0_1 │
00:00:07 #180 [Verbose] > │ let v113 : string = $"__expect / actual: %A{v111} / expected: %A{v112}" │
00:00:07 #181 [Verbose] > │ let v117 : UH0 = UH0_3 │
00:00:07 #182 [Verbose] > │ let v118 : UH0 = UH0_3 │
00:00:07 #183 [Verbose] > │ let v119 : string = $"__expect / actual: %A{v117} / expected: %A{v118}" │
00:00:07 #184 [Verbose] > │ let v123 : UH0 = UH0_2 │
00:00:07 #185 [Verbose] > │ let v124 : UH0 = UH0_2 │
00:00:07 #186 [Verbose] > │ let v125 : string = $"__expect / actual: %A{v123} / expected: %A{v124}" │
00:00:07 #187 [Verbose] > │ () │
00:00:07 #188 [Verbose] > │ method0() │
00:00:07 #189 [Verbose] > │ │
00:00:07 #190 [Verbose] > │ │
00:00:07 #191 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #192 [Verbose] > [NbConvertApp] Converting notebook util.dib.ipynb to html
00:00:08 #193 [Verbose] > /opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:00:08 #194 [Verbose] > validate(nb)
00:00:08 #195 [Verbose] > /opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:00:08 #196 [Verbose] > return _pygments_highlight(
00:00:08 #197 [Verbose] > [NbConvertApp] Writing 286661 bytes to util.dib.html
00:00:08 #198 [Debug] executeAsync / exitCode: 0 / output.Length: 11605
00:00:08 #199 [Debug] main / executeCommand / exitCode: 0
00:00:00 #1 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #2 [Debug] executeAsync / options: { Command =
"dotnet "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 --default-int i32 --default-float f64"
WorkingDirectory = None
CancellationToken = Some System.Threading.CancellationToken
OnLine = Some <fun:main@464-1020> }
00:00:00 #3 [Verbose] > pwd: /home/runner/work/polyglot/polyglot/lib/spiral
00:00:00 #4 [Verbose] > dll_path: /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release
00:00:00 #5 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #6 [Verbose] waitForPortAccess / port: 13805 / retry: 0
00:00:00 #7 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #8 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #9 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #10 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #11 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #12 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #13 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #14 [Verbose] > Starting the Spiral Server. It is bound to: http://localhost:13805
00:00:00 #15 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #16 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #17 [Debug] sendJson / port: 13805 / json: {"Ping":true} / result.Length:
00:00:00 #18 [Verbose] awaitCompiler / Ping / result: Some(null) / port: 13805 / retry: 0
00:00:00 #19 [Verbose] > Server bound to: http://localhost:13805
00:00:00 #20 [Debug] executeAsync / options: { Command = "pwsh -c "../../scripts/invoke-dib.ps1 rust.dib""
WorkingDirectory = None
CancellationToken = Some System.Threading.CancellationToken
OnLine = None }
00:00:02 #21 [Verbose] >
00:00:02 #22 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:02 #23 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:02 #24 [Verbose] > │ # rust │
00:00:02 #25 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:02 #26 [Verbose] >
00:00:02 #27 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:02 #28 [Verbose] > // // test
00:00:02 #29 [Verbose] >
00:00:02 #30 [Verbose] > open testing
00:00:04 #31 [Verbose] > Building /tmp/!dotnet-repl/20240320-1229-2142-4204-4ca755b527c9/main.spi
00:00:06 #32 [Verbose] >
00:00:06 #33 [Verbose] > ╭─[ 3.84s - stdout ]───────────────────────────────────────────────────────────╮
00:00:06 #34 [Verbose] > │ () │
00:00:06 #35 [Verbose] > │ │
00:00:06 #36 [Verbose] > │ │
00:00:06 #37 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #38 [Verbose] >
00:00:06 #39 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:06 #40 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:06 #41 [Verbose] > │ ## emit_expr │
00:00:06 #42 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #43 [Verbose] >
00:00:06 #44 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 #45 [Verbose] > inl emit_expr forall a t. (args : a) (code : string) : t =
00:00:06 #46 [Verbose] > real
00:00:06 #47 [Verbose] > $"Fable.Core.RustInterop.emitRustExpr !args !code" : t
00:00:06 #48 [Verbose] > Building /tmp/!dotnet-repl/20240320-1229-2390-9052-983b73ac88bc/main.spi
00:00:06 #49 [Verbose] >
00:00:06 #50 [Verbose] > ╭─[ 157.98ms - stdout ]────────────────────────────────────────────────────────╮
00:00:06 #51 [Verbose] > │ () │
00:00:06 #52 [Verbose] > │ │
00:00:06 #53 [Verbose] > │ │
00:00:06 #54 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #55 [Verbose] >
00:00:06 #56 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 #57 [Verbose] > inl types () =
00:00:06 #58 [Verbose] > global "[[<Fable.Core.Erase; Fable.Core.Emit(\"Func0<$0>\")>]] type
00:00:06 #59 [Verbose] > Func0<'T> = class end"
00:00:06 #60 [Verbose] > global "[[<Fable.Core.Erase; Fable.Core.Emit(\"Func1<$0, $1>\")>]] type
00:00:06 #61 [Verbose] > Func0<'T, 'U> = class end"
00:00:06 #62 [Verbose] > global "[[<Fable.Core.Erase; Fable.Core.Emit(\"Box<$0>\")>]] type Box<'T> =
00:00:06 #63 [Verbose] > class end"
00:00:06 #64 [Verbose] > global "[[<Fable.Core.Erase; Fable.Core.Emit(\"dyn $0\")>]] type Dyn<'T> =
00:00:06 #65 [Verbose] > class end"
00:00:06 #66 [Verbose] > global "[[<Fable.Core.Erase; Fable.Core.Emit(\"Fn() -> $0\")>]] type Fn<'T>
00:00:06 #67 [Verbose] > = class end"
00:00:06 #68 [Verbose] > global "[[<Fable.Core.Erase; Fable.Core.Emit(\"Fn()\")>]] type FnUnit =
00:00:06 #69 [Verbose] > class end"
00:00:06 #70 [Verbose] > global "[[<Fable.Core.Erase; Fable.Core.Emit(\"FnOnce() -> $0\")>]] type
00:00:06 #71 [Verbose] > FnOnce<'T> = class end"
00:00:06 #72 [Verbose] > global "[[<Fable.Core.Erase; Fable.Core.Emit(\"Fn($0, $1)\")>]] type
00:00:06 #73 [Verbose] > ActionFn2<'T, 'U> = class end"
00:00:06 #74 [Verbose] > global "[[<Fable.Core.Erase; Fable.Core.Emit(\"impl $0\")>]] type Impl<'T> =
00:00:06 #75 [Verbose] > class end"
00:00:06 #76 [Verbose] > global "[[<Fable.Core.Erase; Fable.Core.Emit(\"mut $0\")>]] type Mut<'T> =
00:00:06 #77 [Verbose] > class end"
00:00:06 #78 [Verbose] > global "[[<Fable.Core.Erase; Fable.Core.Emit(\"&$0\")>]] type Ref<'T> =
00:00:06 #79 [Verbose] > class end"
00:00:06 #80 [Verbose] > global "[[<Fable.Core.Erase; Fable.Core.Emit(\"&'static $0\")>]] type
00:00:06 #81 [Verbose] > StaticRef<'T> = class end"
00:00:06 #82 [Verbose] > global "[[<Fable.Core.Erase; Fable.Core.Emit(\"MutCell<$0>\")>]] type
00:00:06 #83 [Verbose] > MutCell<'T> = class end"
00:00:06 #84 [Verbose] > global "[[<Fable.Core.Erase; Fable.Core.Emit(\"std::any::Any\")>]] type
00:00:06 #85 [Verbose] > std_any_Any = class end"
00:00:06 #86 [Verbose] > global "[[<Fable.Core.Erase; Fable.Core.Emit(\"std::cell::RefCell<$0>\")>]]
00:00:06 #87 [Verbose] > type std_cell_RefCell<'T> = class end"
00:00:06 #88 [Verbose] > global "[[<Fable.Core.Erase; Fable.Core.Emit(\"std::pin::Pin<$0>\")>]] type
00:00:06 #89 [Verbose] > std_pin_Pin<'T> = class end"
00:00:06 #90 [Verbose] > global "[[<Fable.Core.Erase; Fable.Core.Emit(\"std::rc::Rc<$0>\")>]] type
00:00:06 #91 [Verbose] > std_rc_Rc<'T> = class end"
00:00:06 #92 [Verbose] > global "[[<Fable.Core.Erase; Fable.Core.Emit(\"std::rc::Weak<$0>\")>]] type
00:00:06 #93 [Verbose] > std_rc_Weak<'T> = class end"
00:00:06 #94 [Verbose] > global "[[<Fable.Core.Erase; Fable.Core.Emit(\"std::sync::Arc<$0>\")>]] type
00:00:06 #95 [Verbose] > std_sync_Arc<'T> = class end"
00:00:06 #96 [Verbose] > Building /tmp/!dotnet-repl/20240320-1229-2406-0601-025eb4ec336f/main.spi
00:00:06 #97 [Verbose] >
00:00:06 #98 [Verbose] > ╭─[ 155.81ms - stdout ]────────────────────────────────────────────────────────╮
00:00:06 #99 [Verbose] > │ () │
00:00:06 #100 [Verbose] > │ │
00:00:06 #101 [Verbose] > │ │
00:00:06 #102 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #103 [Verbose] >
00:00:06 #104 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 #105 [Verbose] > nominal ref_cell t = $"std_cell_RefCell<`t>"
00:00:06 #106 [Verbose] > nominal rc t = $"std_rc_Rc<`t>"
00:00:06 #107 [Verbose] > nominal weak_rc t = $"std_rc_Weak<`t>"
00:00:06 #108 [Verbose] > nominal box t = $"Box<`t>"
00:00:06 #109 [Verbose] > nominal mut_cell t = $"MutCell<`t>"
00:00:06 #110 [Verbose] > nominal pin t = $"std_pin_Pin<`t>"
00:00:06 #111 [Verbose] > nominal arc t = $"std_sync_Arc<`t>"
00:00:06 #112 [Verbose] > nominal dyn' t = $"Dyn<`t>"
00:00:06 #113 [Verbose] > nominal fn' t = $"Fn<`t>"
00:00:06 #114 [Verbose] > nominal action_fn2 t u = $"ActionFn2<`t, `u>"
00:00:06 #115 [Verbose] > nominal fn_once t = $"FnOnce<`t>"
00:00:06 #116 [Verbose] > nominal fn_unit = $"FnUnit"
00:00:06 #117 [Verbose] > nominal func0 t = $"Func0<`t>"
00:00:06 #118 [Verbose] > nominal func1 t u = $"Func0<`t, `u>"
00:00:06 #119 [Verbose] > nominal impl t = $"Impl<`t>"
00:00:06 #120 [Verbose] > nominal mut' t = $"Mut<`t>"
00:00:06 #121 [Verbose] > nominal ref' t = $"Ref<`t>"
00:00:06 #122 [Verbose] > nominal static_ref' t = $"StaticRef<`t>"
00:00:06 #123 [Verbose] > Building /tmp/!dotnet-repl/20240320-1229-2421-2172-2184a6bc3279/main.spi
00:00:06 #124 [Verbose] >
00:00:06 #125 [Verbose] > ╭─[ 154.71ms - stdout ]────────────────────────────────────────────────────────╮
00:00:06 #126 [Verbose] > │ () │
00:00:06 #127 [Verbose] > │ │
00:00:06 #128 [Verbose] > │ │
00:00:06 #129 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #130 [Verbose] >
00:00:06 #131 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 #132 [Verbose] > inl (~!\) forall t. (code : string) : t =
00:00:06 #133 [Verbose] > emit_expr () code
00:00:06 #134 [Verbose] >
00:00:06 #135 [Verbose] > inl (~!\\) forall t u. ((args : t), (code : string)) : u =
00:00:06 #136 [Verbose] > emit_expr args code
00:00:06 #137 [Verbose] >
00:00:06 #138 [Verbose] > inl new_box forall t. (x : t) : box t =
00:00:06 #139 [Verbose] > inl x = join x
00:00:06 #140 [Verbose] > !\($'"Box::new(!x)"')
00:00:06 #141 [Verbose] >
00:00:06 #142 [Verbose] > inl new_rc forall t. (x : t) : rc t =
00:00:06 #143 [Verbose] > inl x = join x
00:00:06 #144 [Verbose] > !\($'"std::rc::Rc::new(!x)"')
00:00:06 #145 [Verbose] >
00:00:06 #146 [Verbose] > inl rc_clone forall t. (x : rc t) : rc t =
00:00:06 #147 [Verbose] > inl x = join x
00:00:06 #148 [Verbose] > !\($'"std::rc::Rc::clone(&!x)"')
00:00:06 #149 [Verbose] >
00:00:06 #150 [Verbose] > inl rc_downgrade forall t. (x : rc t) : weak_rc t =
00:00:06 #151 [Verbose] > inl x = join x
00:00:06 #152 [Verbose] > !\($'"std::rc::Rc::downgrade(&!x)"')
00:00:06 #153 [Verbose] >
00:00:06 #154 [Verbose] > inl new_ref_cell forall t. (x : t) : ref_cell t =
00:00:06 #155 [Verbose] > inl x = join x
00:00:06 #156 [Verbose] > !\($'"std::cell::RefCell::new(!x)"')
00:00:06 #157 [Verbose] >
00:00:06 #158 [Verbose] > inl ref_cell_borrow forall t. (x : rc (ref_cell t)) : t =
00:00:06 #159 [Verbose] > inl x = join x
00:00:06 #160 [Verbose] > !\($'"*std::cell::RefCell::borrow(&std::rc::Rc::clone(&!x))"')
00:00:06 #161 [Verbose] >
00:00:06 #162 [Verbose] > inl ref_cell_borrow_mut forall t. (x : rc (ref_cell t)) : mut' t =
00:00:06 #163 [Verbose] > inl x = join x
00:00:06 #164 [Verbose] > !\($'"*std::cell::RefCell::borrow_mut(&std::rc::Rc::clone(&!x))"')
00:00:06 #165 [Verbose] >
00:00:06 #166 [Verbose] > inl to_mut forall t. (x : t) : mut' t =
00:00:06 #167 [Verbose] > // !\($'"let mut !x = !x"')
00:00:06 #168 [Verbose] > // !\($'"!x"')
00:00:06 #169 [Verbose] > emit_expr () $"\"let mut !x = !x\""
00:00:06 #170 [Verbose] > emit_expr () $"\"!x\""
00:00:06 #171 [Verbose] >
00:00:06 #172 [Verbose] > inl ref_map forall t u. (fn : t -> u) (x : ref' t) : ref' u =
00:00:06 #173 [Verbose] > !\($'"!fn(!x)"')
00:00:06 #174 [Verbose] >
00:00:06 #175 [Verbose] > inl from_mut forall t. (x : mut' t) : t =
00:00:06 #176 [Verbose] > !\($'"!x"')
00:00:06 #177 [Verbose] >
00:00:06 #178 [Verbose] > inl new_arc forall t. (x : t) : arc t =
00:00:06 #179 [Verbose] > inl x = join x
00:00:06 #180 [Verbose] > !\($'"std::sync::Arc::new(!x)"')
00:00:06 #181 [Verbose] >
00:00:06 #182 [Verbose] > inl box_fn forall t. (x : () -> ()) : box t =
00:00:06 #183 [Verbose] > inl x = join x
00:00:06 #184 [Verbose] > !\($'"Box::new(move || !x())"')
00:00:06 #185 [Verbose] >
00:00:06 #186 [Verbose] > inl new_pin forall t. (x : t) : pin (box t) =
00:00:06 #187 [Verbose] > inl x = join x
00:00:06 #188 [Verbose] > !\($'"Box::pin(!x)"')
00:00:06 #189 [Verbose] >
00:00:06 #190 [Verbose] > inl deref forall t. (ref : ref' t) : t =
00:00:06 #191 [Verbose] > inl ref = join ref
00:00:06 #192 [Verbose] > !\($'"*!ref"')
00:00:06 #193 [Verbose] >
00:00:06 #194 [Verbose] > inl ops_deref forall t. (ref : t) : t =
00:00:06 #195 [Verbose] > inl ref = join ref
00:00:06 #196 [Verbose] > !\($'"core::ops::Deref::deref(&!ref)"')
00:00:06 #197 [Verbose] >
00:00:06 #198 [Verbose] > inl func0_get forall t. (x : func0 t) : t =
00:00:06 #199 [Verbose] > inl x = join x
00:00:06 #200 [Verbose] > !\($'"!x()"')
00:00:06 #201 [Verbose] >
00:00:06 #202 [Verbose] > inl func0_move forall t. (fn : func0 t) : t =
00:00:06 #203 [Verbose] > inl fn = join fn
00:00:06 #204 [Verbose] > !\($'"(move || !fn())()"')
00:00:06 #205 [Verbose] >
00:00:06 #206 [Verbose] > inl move forall t. (fn : () -> t) : func0 t =
00:00:06 #207 [Verbose] > inl fn = join fn
00:00:06 #208 [Verbose] > !\($'"Func0::new(move || !fn())"')
00:00:06 #209 [Verbose] >
00:00:06 #210 [Verbose] > inl to_static_ref_unbox forall t. (x : ref' t) : static_ref' t =
00:00:06 #211 [Verbose] > $"!x |> unbox"
00:00:06 #212 [Verbose] >
00:00:06 #213 [Verbose] > inl from_static_ref_unbox forall t. (x : static_ref' t) : ref' t =
00:00:06 #214 [Verbose] > $"!x |> unbox"
00:00:06 #215 [Verbose] >
00:00:06 #216 [Verbose] > inl box_leak forall t. (x : box t) : static_ref' (mut' t) =
00:00:06 #217 [Verbose] > emit_expr () $"\"Box::leak(!x)\""
00:00:06 #218 [Verbose] >
00:00:06 #219 [Verbose] >
00:00:06 #220 [Verbose] > inl fix_closure depth' x' =
00:00:06 #221 [Verbose] > inl depth = depth' |> fst
00:00:06 #222 [Verbose] > if depth = 1
00:00:06 #223 [Verbose] > then !\($'"!x' })"')
00:00:06 #224 [Verbose] > elif depth = 2
00:00:06 #225 [Verbose] > then !\($'"!x' }})"')
00:00:06 #226 [Verbose] > elif depth = 3
00:00:06 #227 [Verbose] > then !\($'"!x' }}})"')
00:00:06 #228 [Verbose] > elif depth = 4
00:00:06 #229 [Verbose] > then !\($'"!x' }}}})"')
00:00:06 #230 [Verbose] > elif depth = 5
00:00:06 #231 [Verbose] > then !\($'"!x' }}}}})"')
00:00:06 #232 [Verbose] > elif depth = 6 // , 4) // ?
00:00:06 #233 [Verbose] > then !\($'"!x' }}}}}})"')
00:00:06 #234 [Verbose] > elif depth = 7 // , 5) // 7
00:00:06 #235 [Verbose] > then !\($'"!x' }}}}}}})"')
00:00:06 #236 [Verbose] > elif depth = 8 // , 5) // 7
00:00:06 #237 [Verbose] > then !\($'"!x' }}}}}}}})"')
00:00:06 #238 [Verbose] >
00:00:06 #239 [Verbose] > inl depth = depth' |> snd
00:00:06 #240 [Verbose] > if depth = 1
00:00:06 #241 [Verbose] > then !\($'" { //"')
00:00:06 #242 [Verbose] > elif depth = 2
00:00:06 #243 [Verbose] > then !\($'" {{ //"')
00:00:06 #244 [Verbose] > elif depth = 3
00:00:06 #245 [Verbose] > then !\($'" {{{ //"')
00:00:06 #246 [Verbose] > elif depth = 4
00:00:06 #247 [Verbose] > then !\($'" {{{{ //"')
00:00:06 #248 [Verbose] > elif depth = 5
00:00:06 #249 [Verbose] > then !\($'" {{{{{ //"')
00:00:06 #250 [Verbose] > elif depth = 6
00:00:06 #251 [Verbose] > then !\($'"!x' {{{{{{ //"')
00:00:06 #252 [Verbose] > elif depth = 7
00:00:06 #253 [Verbose] > then !\($'"!x' {{{{{{{ //"')
00:00:06 #254 [Verbose] > elif depth = 8
00:00:06 #255 [Verbose] > then !\($'"!x' {{{{{{{{ //"')
00:00:06 #256 [Verbose] > Building /tmp/!dotnet-repl/20240320-1229-2437-3714-3929d513bd89/main.spi
00:00:06 #257 [Verbose] >
00:00:06 #258 [Verbose] > ╭─[ 159.35ms - stdout ]────────────────────────────────────────────────────────╮
00:00:06 #259 [Verbose] > │ () │
00:00:06 #260 [Verbose] > │ │
00:00:06 #261 [Verbose] > │ │
00:00:06 #262 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #263 [Verbose] > [NbConvertApp] Converting notebook rust.dib.ipynb to html
00:00:07 #264 [Verbose] > /opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:00:07 #265 [Verbose] > validate(nb)
00:00:08 #266 [Verbose] > /opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:00:08 #267 [Verbose] > return _pygments_highlight(
00:00:08 #268 [Verbose] > [NbConvertApp] Writing 304964 bytes to rust.dib.html
00:00:08 #269 [Debug] executeAsync / exitCode: 0 / output.Length: 10452
00:00:08 #270 [Debug] main / executeCommand / exitCode: 0
00:00:00 #1 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #2 [Debug] executeAsync / options: { Command =
"dotnet "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 --default-int i32 --default-float f64"
WorkingDirectory = None
CancellationToken = Some System.Threading.CancellationToken
OnLine = Some <fun:main@464-1020> }
00:00:00 #3 [Verbose] > pwd: /home/runner/work/polyglot/polyglot/lib/spiral
00:00:00 #4 [Verbose] > dll_path: /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release
00:00:00 #5 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #6 [Verbose] waitForPortAccess / port: 13805 / retry: 0
00:00:00 #7 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #8 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #9 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #10 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #11 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #12 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #13 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #14 [Verbose] > Starting the Spiral Server. It is bound to: http://localhost:13805
00:00:00 #15 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #16 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #17 [Debug] sendJson / port: 13805 / json: {"Ping":true} / result.Length:
00:00:00 #18 [Verbose] awaitCompiler / Ping / result: Some(null) / port: 13805 / retry: 0
00:00:00 #19 [Verbose] > Server bound to: http://localhost:13805
00:00:00 #20 [Debug] executeAsync / options: { Command = "pwsh -c "../../scripts/invoke-dib.ps1 physics.dib""
WorkingDirectory = None
CancellationToken = Some System.Threading.CancellationToken
OnLine = None }
00:00:02 #21 [Verbose] >
00:00:02 #22 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:02 #23 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:02 #24 [Verbose] > │ # physics │
00:00:02 #25 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:02 #26 [Verbose] >
00:00:02 #27 [Verbose] > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:02 #28 [Verbose] > #!import ../../lib/fsharp/Plotting.dib
00:00:02 #29 [Verbose] >
00:00:02 #30 [Verbose] > ── fsharp - import ─────────────────────────────────────────────────────────────
00:00:02 #31 [Verbose] > #r
00:00:02 #32 [Verbose] > "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Asp
00:00:02 #33 [Verbose] > NetCore.Html.Abstractions.dll"
00:00:02 #34 [Verbose] > #r
00:00:02 #35 [Verbose] > "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot
00:00:02 #36 [Verbose] > Net.Interactive.dll"
00:00:02 #37 [Verbose] > #r
00:00:02 #38 [Verbose] > "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot
00:00:02 #39 [Verbose] > Net.Interactive.FSharp.dll"
00:00:02 #40 [Verbose] > #r
00:00:02 #41 [Verbose] > "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot
00:00:02 #42 [Verbose] > Net.Interactive.Formatting.dll"
00:00:02 #43 [Verbose] > open System
00:00:02 #44 [Verbose] > open System.IO
00:00:02 #45 [Verbose] > open System.Text
00:00:02 #46 [Verbose] > open Microsoft.DotNet.Interactive.Formatting
00:00:04 #47 [Verbose] >
00:00:04 #48 [Verbose] > ── fsharp - import ─────────────────────────────────────────────────────────────
00:00:04 #49 [Verbose] > #r
00:00:04 #50 [Verbose] > "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot
00:00:04 #51 [Verbose] > Net.Interactive.FSharp.dll"
00:00:04 #52 [Verbose] > open Microsoft.DotNet.Interactive.FSharp.FSharpKernelHelpers
00:00:04 #53 [Verbose] > #r
00:00:04 #54 [Verbose] > "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot
00:00:04 #55 [Verbose] > Net.Interactive.dll"
00:00:04 #56 [Verbose] > open type Microsoft.DotNet.Interactive.Kernel
00:00:04 #57 [Verbose] >
00:00:04 #58 [Verbose] > ── fsharp - import ─────────────────────────────────────────────────────────────
00:00:04 #59 [Verbose] > //// test
00:00:04 #60 [Verbose] >
00:00:04 #61 [Verbose] > Formatter.ListExpansionLimit <- 100
00:00:05 #62 [Verbose] >
00:00:05 #63 [Verbose] > ── fsharp - import ─────────────────────────────────────────────────────────────
00:00:05 #64 [Verbose] > #r
00:00:05 #65 [Verbose] > @"../../../../../../../.nuget/packages/fsharp.control.asyncseq/3.2.1/lib/netstan
00:00:05 #66 [Verbose] > dard2.1/FSharp.Control.AsyncSeq.dll"
00:00:05 #67 [Verbose] > #r
00:00:05 #68 [Verbose] > @"../../../../../../../.nuget/packages/system.reactive/6.0.1-preview.1/lib/net6.
00:00:05 #69 [Verbose] > 0/System.Reactive.dll"
00:00:05 #70 [Verbose] > #r
00:00:05 #71 [Verbose] > @"../../../../../../../.nuget/packages/system.reactive.linq/6.0.1-preview.1/lib
00:00:05 #72 [Verbose] > netstandard2.0/System.Reactive.Linq.dll"
00:00:05 #73 [Verbose] > #r
00:00:05 #74 [Verbose] > @"../../../../../../../.nuget/packages/argu/6.2.2/lib/netstandard2.0/Argu.dll"
00:00:05 #75 [Verbose] > #r
00:00:05 #76 [Verbose] > @"../../../../../../../.nuget/packages/system.commandline/2.0.0-beta4.22272.1/li
00:00:05 #77 [Verbose] > b/net6.0/System.CommandLine.dll"
00:00:05 #78 [Verbose] > #r
00:00:05 #79 [Verbose] > @"../../../../../../../.nuget/packages/fsharp.json/0.4.1/lib/netstandard2.0/FSha
00:00:05 #80 [Verbose] > rp.Json.dll"
00:00:05 #81 [Verbose] >
00:00:05 #82 [Verbose] > ── fsharp - import ─────────────────────────────────────────────────────────────
00:00:05 #83 [Verbose] > #if !INTERACTIVE
00:00:05 #84 [Verbose] > namespace Polyglot
00:00:05 #85 [Verbose] > #endif
00:00:05 #86 [Verbose] >
00:00:05 #87 [Verbose] > module Common =
00:00:05 #88 [Verbose] >
00:00:05 #89 [Verbose] > let nl = System.Environment.NewLine
00:00:05 #90 [Verbose] > let q = @""""
00:00:05 #91 [Verbose] >
00:00:05 #92 [Verbose] > let inline cons head tail = head :: tail
00:00:05 #93 [Verbose] >
00:00:05 #94 [Verbose] > module String =
00:00:05 #95 [Verbose] > let inline contains (value : string) (input : string) =
00:00:05 #96 [Verbose] > input.Contains value
00:00:05 #97 [Verbose] >
00:00:05 #98 [Verbose] > let inline endsWith (value : string) (input : string) =
00:00:05 #99 [Verbose] > input.EndsWith value
00:00:05 #100 [Verbose] >
00:00:05 #101 [Verbose] > let inline padLeft totalWidth paddingChar (input : string) =
00:00:05 #102 [Verbose] > input.PadLeft (totalWidth, paddingChar)
00:00:05 #103 [Verbose] >
00:00:05 #104 [Verbose] > let inline replace (oldValue : string) (newValue : string) (input :
00:00:05 #105 [Verbose] > string) =
00:00:05 #106 [Verbose] > input.Replace (oldValue, newValue)
00:00:05 #107 [Verbose] >
00:00:05 #108 [Verbose] > let inline split separator (input : string) =
00:00:05 #109 [Verbose] > input.Split separator
00:00:05 #110 [Verbose] >
00:00:05 #111 [Verbose] > let inline spli...
00:00:06 #112 [Verbose] >
00:00:06 #113 [Verbose] > ── fsharp - import ─────────────────────────────────────────────────────────────
00:00:06 #114 [Verbose] > #if !INTERACTIVE
00:00:06 #115 [Verbose] > namespace Polyglot
00:00:06 #116 [Verbose] > #endif
00:00:06 #117 [Verbose] >
00:00:06 #118 [Verbose] > module CommonFSharp =
00:00:06 #119 [Verbose] >
00:00:06 #120 [Verbose] > open Common
00:00:06 #121 [Verbose] >
00:00:06 #122 [Verbose] > /// ## getUnionCaseName
00:00:06 #123 [Verbose] >
00:00:06 #124 [Verbose] > let inline getUnionCaseName<'T> (x: 'T) =
00:00:06 #125 [Verbose] > match Reflection.FSharpValue.GetUnionFields(x, typeof<'T>) with
00:00:06 #126 [Verbose] > | case, _ -> case.Name
00:00:06 #127 [Verbose] >
00:00:06 #128 [Verbose] >
00:00:06 #129 [Verbose] > ── fsharp - import ─────────────────────────────────────────────────────────────
00:00:06 #130 [Verbose] > #if !INTERACTIVE
00:00:06 #131 [Verbose] > namespace Polyglot
00:00:06 #132 [Verbose] > #endif
00:00:06 #133 [Verbose] >
00:00:06 #134 [Verbose] > module Crypto =
00:00:06 #135 [Verbose] >
00:00:06 #136 [Verbose] > open Common
00:00:06 #137 [Verbose] >
00:00:06 #138 [Verbose] > /// ## hashText
00:00:06 #139 [Verbose] >
00:00:06 #140 [Verbose] > let hashText (input : string) =
00:00:06 #141 [Verbose] > use sha256 = System.Security.Cryptography.SHA256.Create ()
00:00:06 #142 [Verbose] > input
00:00:06 #143 [Verbose] > |> System.Text.Encoding.UTF8.GetBytes
00:00:06 #144 [Verbose] > |> sha256.ComputeHash
00:00:06 #145 [Verbose] > |> Array.map (fun b -> b.ToString "x2")
00:00:06 #146 [Verbose] > |> String.concat ""
00:00:06 #147 [Verbose] >
00:00:06 #148 [Verbose] >
00:00:06 #149 [Verbose] > ── fsharp - import ─────────────────────────────────────────────────────────────
00:00:06 #150 [Verbose] > #if !INTERACTIVE
00:00:06 #151 [Verbose] > namespace Polyglot
00:00:06 #152 [Verbose] > #endif
00:00:06 #153 [Verbose] >
00:00:06 #154 [Verbose] > module Async =
00:00:06 #155 [Verbose] >
00:00:06 #156 [Verbose] > open Common
00:00:06 #157 [Verbose] >
00:00:06 #158 [Verbose] > /// ## choice
00:00:06 #159 [Verbose] >
00:00:06 #160 [Verbose] > let inline choice asyncs = async {
00:00:06 #161 [Verbose] > let e = Event<_> ()
00:00:06 #162 [Verbose] > use cts = new System.Threading.CancellationTokenSource ()
00:00:06 #163 [Verbose] > let fn =
00:00:06 #164 [Verbose] > asyncs
00:00:06 #165 [Verbose] > |> Seq.map (fun a -> async {
00:00:06 #166 [Verbose] > let! x = a
00:00:06 #167 [Verbose] > e.Trigger x
00:00:06 #168 [Verbose] > })
00:00:06 #169 [Verbose] > |> Async.Parallel
00:00:06 #170 [Verbose] > |> Async.Ignore
00:00:06 #171 [Verbose] > Async.Start (fn, cts.Token)
00:00:06 #172 [Verbose] > let! result = Async.AwaitEvent e.Publish
00:00:06 #173 [Verbose] > cts.Cancel ()
00:00:06 #174 [Verbose] > return result
00:00:06 #175 [Verbose] > }
00:00:06 #176 [Verbose] >
00:00:06 #177 [Verbose] > /// ## map
00:00:06 #178 [Verbose] >
00:00:06 #179 [Verbose] > let inline map fn a = async {
00:00:06 #180 [Verbose] > let! x = a
00:00:06 #181 [Verbose] > return fn x
00:00:06 #182 [Verbose] > }
00:00:06 #183 [Verbose] >
00:00:06 #184 [Verbose] > /// ## catch
00:00:06 #185 [Verbose] >
00:00:06 #186 [Verbose] > let inline catch a =
00:00:06 #187 [Verbose] > a
00:00:06 #188 [Verbose] > |> Async.Catch
00:00:06 #189 [Verbose] > ...
00:00:06 #190 [Verbose] >
00:00:06 #191 [Verbose] > ── fsharp - import ─────────────────────────────────────────────────────────────
00:00:06 #192 [Verbose] > #if !INTERACTIVE
00:00:06 #193 [Verbose] > namespace Polyglot
00:00:06 #194 [Verbose] > #endif
00:00:06 #195 [Verbose] >
00:00:06 #196 [Verbose] > module AsyncSeq =
00:00:06 #197 [Verbose] >
00:00:06 #198 [Verbose] > open Common
00:00:06 #199 [Verbose] >
00:00:06 #200 [Verbose] > /// ## subscribeEvent
00:00:06 #201 [Verbose] >
00:00:06 #202 [Verbose] > let inline subscribeEvent (event: IEvent<'H, 'A>) map =
00:00:06 #203 [Verbose] > let observable = System.Reactive.Linq.Observable.FromEventPattern<'H,
00:00:06 #204 [Verbose] > 'A>(event.AddHandler, event.RemoveHandler)
00:00:06 #205 [Verbose] > System.Reactive.Linq.Observable.Select (observable, fun event -> map
00:00:06 #206 [Verbose] > event.EventArgs)
00:00:06 #207 [Verbose] > |> FSharp.Control.AsyncSeq.ofObservableBuffered
00:00:06 #208 [Verbose] >
00:00:06 #209 [Verbose] > let subscribeToken (token : System.Threading.CancellationToken) =
00:00:06 #210 [Verbose] > let tcs = new System.Threading.Tasks.TaskCompletionSource ()
00:00:06 #211 [Verbose] > System.Action tcs.SetResult |> token.Register |> ignore
00:00:06 #212 [Verbose] > let start = System.DateTime.Now.Ticks
00:00:06 #213 [Verbose] > FSharp.Control.AsyncSeq.unfoldAsync
00:00:06 #214 [Verbose] > (fun (...
00:00:06 #215 [Verbose] >
00:00:06 #216 [Verbose] > ── fsharp - import ─────────────────────────────────────────────────────────────
00:00:06 #217 [Verbose] > #if !INTERACTIVE
00:00:06 #218 [Verbose] > namespace Polyglot
00:00:06 #219 [Verbose] > #endif
00:00:06 #220 [Verbose] >
00:00:06 #221 [Verbose] > module Networking =
00:00:06 #222 [Verbose] >
00:00:06 #223 [Verbose] > open Common
00:00:06 #224 [Verbose] >
00:00:06 #225 [Verbose] > /// ## testPortOpen
00:00:06 #226 [Verbose] >
00:00:06 #227 [Verbose] > let inline testPortOpen port = async {
00:00:06 #228 [Verbose] > let! ct = Async.CancellationToken
00:00:06 #229 [Verbose] > use client = new System.Net.Sockets.TcpClient ()
00:00:06 #230 [Verbose] > try
00:00:06 #231 [Verbose] > do! client.ConnectAsync ("127.0.0.1", port, ct) |>
00:00:06 #232 [Verbose] > Async.awaitValueTaskUnit
00:00:06 #233 [Verbose] > return true
00:00:06 #234 [Verbose] > with ex ->
00:00:06 #235 [Verbose] > trace Verbose (fun () -> $"testPortOpen / ex: {ex |>
00:00:06 #236 [Verbose] > printException}") getLocals
00:00:06 #237 [Verbose] > return false
00:00:06 #238 [Verbose] > }
00:00:06 #239 [Verbose] >
00:00:06 #240 [Verbose] > let inline testPortOpenTimeout timeout port = async {
00:00:06 #241 [Verbose] > let! result =
00:00:06 #242 [Verbose] > testPortOpen port
00:00:06 #243 [Verbose] > |> Async.runWithTimeoutAsync timeout
00:00:06 #244 [Verbose] > return
00:00:06 #245 [Verbose] > match result with
00:00:06 #246 [Verbose] > | None -> false
00:00:06 #247 [Verbose] > ...
00:00:07 #248 [Verbose] >
00:00:07 #249 [Verbose] > ── fsharp - import ─────────────────────────────────────────────────────────────
00:00:07 #250 [Verbose] > #if !INTERACTIVE
00:00:07 #251 [Verbose] > namespace Polyglot
00:00:07 #252 [Verbose] > #endif
00:00:07 #253 [Verbose] >
00:00:07 #254 [Verbose] > module Runtime =
00:00:07 #255 [Verbose] >
00:00:07 #256 [Verbose] > open Common
00:00:07 #257 [Verbose] >
00:00:07 #258 [Verbose] > /// ## isWindows
00:00:07 #259 [Verbose] >
00:00:07 #260 [Verbose] > let isWindows =
00:00:07 #261 [Verbose] > fun () ->
00:00:07 #262 [Verbose] > System.Runtime.InteropServices.RuntimeInformation.IsOSPlatform
00:00:07 #263 [Verbose] > System.Runtime.InteropServices.OSPlatform.Windows
00:00:07 #264 [Verbose] > |> memoize
00:00:07 #265 [Verbose] >
00:00:07 #266 [Verbose] > /// ## getExecutableSuffix
00:00:07 #267 [Verbose] >
00:00:07 #268 [Verbose] > let inline getExecutableSuffix () =
00:00:07 #269 [Verbose] > if isWindows ()
00:00:07 #270 [Verbose] > then ".exe"
00:00:07 #271 [Verbose] > else ""
00:00:07 #272 [Verbose] >
00:00:07 #273 [Verbose] > /// ## splitCommand
00:00:07 #274 [Verbose] >
00:00:07 #275 [Verbose] > type private CommandParseStep =
00:00:07 #276 [Verbose] > | Start
00:00:07 #277 [Verbose] > | Path of quoted: bool
00:00:07 #278 [Verbose] > | Arguments
00:00:07 #279 [Verbose] >
00:00:07 #280 [Verbose] > let splitCommand (command: string) =
00:00:07 #281 [Verbose] > let rec loop (path, args) chars step =
00:00:07 #282 [Verbose] > match chars, step with
00:00:07 #283 [Verbose] > | ('"' | '\'') :: tail, _ when path = "" -> loop (pat...
00:00:07 #284 [Verbose] >
00:00:07 #285 [Verbose] > ── fsharp - import ─────────────────────────────────────────────────────────────
00:00:07 #286 [Verbose] > #if !INTERACTIVE
00:00:07 #287 [Verbose] > namespace Polyglot
00:00:07 #288 [Verbose] > #endif
00:00:07 #289 [Verbose] >
00:00:07 #290 [Verbose] > module FileSystem =
00:00:07 #291 [Verbose] >
00:00:07 #292 [Verbose] > open Common
00:00:07 #293 [Verbose] >
00:00:07 #294 [Verbose] > /// ## Operators
00:00:07 #295 [Verbose] >
00:00:07 #296 [Verbose] > module Operators =
00:00:07 #297 [Verbose] > let inline (</>) a b =
00:00:07 #298 [Verbose] > System.IO.Path.Combine (a, b)
00:00:07 #299 [Verbose] >
00:00:07 #300 [Verbose] > open Operators
00:00:07 #301 [Verbose] >
00:00:07 #302 [Verbose] > /// ## createTempDirectoryName
00:00:07 #303 [Verbose] >
00:00:07 #304 [Verbose] > let inline createTempDirectoryName () =
00:00:07 #305 [Verbose] > let root = System.Reflection.Assembly.GetEntryAssembly().GetName().Name
00:00:07 #306 [Verbose] >
00:00:07 #307 [Verbose] > System.IO.Path.GetTempPath ()
00:00:07 #308 [Verbose] > </> $"!{root}"
00:00:07 #309 [Verbose] > </> string (newGuidFromDateTime System.DateTime.Now)
00:00:07 #310 [Verbose] >
00:00:07 #311 [Verbose] > /// ## createTempDirectory
00:00:07 #312 [Verbose] >
00:00:07 #313 [Verbose] > let inline createTempDirectory () =
00:00:07 #314 [Verbose] > let tempFolder = createTempDirectoryName ()
00:00:07 #315 [Verbose] > let result = System.IO.Directory.CreateDirectory tempFolder
00:00:07 #316 [Verbose] >
00:00:07 #317 [Verbose] > if not result.Exists then
00:00:07 #318 [Verbose] > let ge...
00:00:09 #319 [Verbose] >
00:00:09 #320 [Verbose] > ── fsharp - import ─────────────────────────────────────────────────────────────
00:00:09 #321 [Verbose] > open Common
00:00:09 #322 [Verbose] > open FileSystem.Operators
00:00:09 #323 [Verbose] >
00:00:09 #324 [Verbose] > ── fsharp - import ─────────────────────────────────────────────────────────────
00:00:09 #325 [Verbose] > let tmpSpiralPath = Path.GetTempPath () </> "!dotnet-interactive-spiral"
00:00:09 #326 [Verbose] > let linePlotsDataPath = tmpSpiralPath </> "line-plots-data"
00:00:09 #327 [Verbose] > let linePlotsSvgPath = tmpSpiralPath </> "line-plots-svg"
00:00:09 #328 [Verbose] >
00:00:09 #329 [Verbose] > [[ tmpSpiralPath; linePlotsDataPath; linePlotsSvgPath ]]
00:00:09 #330 [Verbose] > |> List.iter (fun dir -> if Directory.Exists dir |> not then
00:00:09 #331 [Verbose] > Directory.CreateDirectory dir |> ignore)
00:00:09 #332 [Verbose] >
00:00:09 #333 [Verbose] > Formatter.Register<struct (string * string * string * struct (string * float
00:00:09 #334 [Verbose] > array * float array) array)> (
00:00:09 #335 [Verbose] > (fun struct (caption, x_desc, y_desc, ys) ->
00:00:09 #336 [Verbose] > let json = (caption, x_desc, y_desc, ys) |> FSharp.Json.Json.serialize
00:00:09 #337 [Verbose] > async {
00:00:09 #338 [Verbose] > let hashHex = json |> Crypto.hashText
00:00:09 #339 [Verbose] > let svgPath = linePlotsSvgPath </> $"{hashHex}.svg"
00:00:09 #340 [Verbose] >
00:00:09 #341 [Verbose] > if System.IO.File.Exi...
00:00:09 #342 [Verbose] >
00:00:09 #343 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:09 #344 [Verbose] > // // test
00:00:09 #345 [Verbose] >
00:00:09 #346 [Verbose] > open testing
00:00:10 #347 [Verbose] > Building /tmp/!dotnet-repl/20240320-1229-3700-0071-01a89ff3f85c/main.spi
00:00:12 #348 [Verbose] >
00:00:12 #349 [Verbose] > ╭─[ 2.20s - stdout ]───────────────────────────────────────────────────────────╮
00:00:12 #350 [Verbose] > │ () │
00:00:12 #351 [Verbose] > │ │
00:00:12 #352 [Verbose] > │ │
00:00:12 #353 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:12 #354 [Verbose] >
00:00:12 #355 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:12 #356 [Verbose] > open listm'_operators
00:00:12 #357 [Verbose] > Building /tmp/!dotnet-repl/20240320-1229-3878-7885-73653e7338dc/main.spi
00:00:12 #358 [Verbose] >
00:00:12 #359 [Verbose] > ╭─[ 146.28ms - stdout ]────────────────────────────────────────────────────────╮
00:00:12 #360 [Verbose] > │ () │
00:00:12 #361 [Verbose] > │ │
00:00:12 #362 [Verbose] > │ │
00:00:12 #363 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:12 #364 [Verbose] >
00:00:12 #365 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:12 #366 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:12 #367 [Verbose] > │ ## init_series │
00:00:12 #368 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:12 #369 [Verbose] >
00:00:12 #370 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:12 #371 [Verbose] > // // test
00:00:12 #372 [Verbose] >
00:00:12 #373 [Verbose] > inl x : a _ f64 = am'.init_series -3 3 0.01
00:00:12 #374 [Verbose] > inl y = x |> am.map math.square
00:00:12 #375 [Verbose] > "square", "x", "y", ;[[ "square", x, y ]]
00:00:12 #376 [Verbose] > Building /tmp/!dotnet-repl/20240320-1229-3893-9359-9ebaaa4d8d1a/main.spi
00:00:12 #377 [Verbose] >
00:00:12 #378 [Verbose] > ╭─[ 312.98ms - return value ]──────────────────────────────────────────────────╮
00:00:12 #379 [Verbose] > │ <svg width="640" height="480" viewBox="0 0 640 480" │
00:00:12 #380 [Verbose] > │ xmlns="http://www.w3.org/2000/svg"> │
00:00:12 #381 [Verbose] > │ <rect x="0" y="0" width="640" height="480" opacity="1" fill="#141414" │
00:00:12 #382 [Verbose] > │ stroke="none"/> │
00:00:12 #383 [Verbose] > │ <text x="320" y="10" dy="0.76em" text-anchor="middle" │
00:00:12 #384 [Verbose] > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1" │
00:00:12 #385 [Verbose] > │ fill="#FFFFFF"> │
00:00:12 #386 [Verbose] > │ square │
00:00:12 #387 [Verbose] > │ </text> │
00:00:12 #388 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="61" y1="424" x2="61" │
00:00:12 #389 [Verbose] > │ y2="75"/> │
00:00:12 #390 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" y1="424" x2="69" │
00:00:12 #391 [Verbose] > │ y2="75"/> │
00:00:12 #392 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="78" y1="424" x2="78" │
00:00:12 #393 [Verbose] > │ y2="75"/> │
00:00:12 #394 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="86" y1="424" x2="86" │
00:00:12 #395 [Verbose] > │ y2="75"/> │
00:00:12 #396 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="94" y1="424" x2="94" │
00:00:12 #397 [Verbose] > │ ... │
00:00:12 #398 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:12 #399 [Verbose] >
00:00:12 #400 [Verbose] > ╭─[ 322.55ms - stdout ]────────────────────────────────────────────────────────╮
00:00:12 #401 [Verbose] > │ type Mut0 = {mutable l0 : int32} │
00:00:12 #402 [Verbose] > │ let rec method1 (v0 : Mut0) : bool = │
00:00:12 #403 [Verbose] > │ let v1 : int32 = v0.l0 │
00:00:12 #404 [Verbose] > │ let v2 : bool = v1 < 601 │
00:00:12 #405 [Verbose] > │ v2 │
00:00:12 #406 [Verbose] > │ and method2 (v0 : int32, v1 : Mut0) : bool = │
00:00:12 #407 [Verbose] > │ let v2 : int32 = v1.l0 │
00:00:12 #408 [Verbose] > │ let v3 : bool = v2 < v0 │
00:00:12 #409 [Verbose] > │ v3 │
00:00:12 #410 [Verbose] > │ and method3 (v0 : (struct (string * (float []) * (float [])) [])) : (struct │
00:00:12 #411 [Verbose] > │ (string * (float []) * (float [])) []) = │
00:00:12 #412 [Verbose] > │ v0 │
00:00:12 #413 [Verbose] > │ and method0 () : struct (string * string * string * (struct (string * (float │
00:00:12 #414 [Verbose] > │ []) * (float [])) [])) = │
00:00:12 #415 [Verbose] > │ let v0 : (float []) = Array.zeroCreate<float> (601) │
00:00:12 #416 [Verbose] > │ let v1 : Mut0 = {l0 = 0} : Mut0 │
00:00:12 #417 [Verbose] > │ while method1(v1) do │
00:00:12 #418 [Verbose] > │ let v3 : int32 = v1.l0 │
00:00:12 #419 [Verbose] > │ let v4 : float = float v3 │
00:00:12 #420 [Verbose] > │ let v5 : float = 0.01 * v4 │
00:00:12 #421 [Verbose] > │ let v6 : float = -3.0 + v5 │
00:00:12 #422 [Verbose] > │ v0.[int v3] <- v6 │
00:00:12 #423 [Verbose] > │ let v7 : int32 = v3 + 1 │
00:00:12 #424 [Verbose] > │ v1.l0 <- v7 │
00:00:12 #425 [Verbose] > │ () │
00:00:12 #426 [Verbose] > │ let v8 : int32 = v0.Length │
00:00:12 #427 [Verbose] > │ let v9 : (float []) = Array.zeroCreate<float> (v8) │
00:00:12 #428 [Verbose] > │ let v10 : Mut0 = {l0 = 0} : Mut0 │
00:00:12 #429 [Verbose] > │ while method2(v8, v10) do │
00:00:12 #430 [Verbose] > │ let v12 : int32 = v10.l0 │
00:00:12 #431 [Verbose] > │ let v13 : float = v0.[int v12] │
00:00:12 #432 [Verbose] > │ let v14 : float = v13 ** 2.0 │
00:00:12 #433 [Verbose] > │ v9.[int v12] <- v14 │
00:00:12 #434 [Verbose] > │ let v15 : int32 = v12 + 1 │
00:00:12 #435 [Verbose] > │ v10.l0 <- v15 │
00:00:12 #436 [Verbose] > │ () │
00:00:12 #437 [Verbose] > │ let v16 : string = "square" │
00:00:12 #438 [Verbose] > │ let v17 : (struct (string * (float []) * (float [])) []) = [|struct │
00:00:12 #439 [Verbose] > │ (v16, v0, v9)|] │
00:00:12 #440 [Verbose] > │ let v18 : (struct (string * (float []) * (float [])) []) = method3(v17) │
00:00:12 #441 [Verbose] > │ let v19 : string = "x" │
00:00:12 #442 [Verbose] > │ let v20 : string = "y" │
00:00:12 #443 [Verbose] > │ struct (v16, v19, v20, v18) │
00:00:12 #444 [Verbose] > │ method0() │
00:00:12 #445 [Verbose] > │ │
00:00:12 #446 [Verbose] > │ │
00:00:12 #447 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:12 #448 [Verbose] >
00:00:12 #449 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:12 #450 [Verbose] > // // test
00:00:12 #451 [Verbose] >
00:00:12 #452 [Verbose] > inl x : a _ f64 = am'.init_series -10 10 0.1
00:00:12 #453 [Verbose] > inl y_sin = x |> am.map sin
00:00:12 #454 [Verbose] > inl y_cos = x |> am.map cos
00:00:12 #455 [Verbose] > "sin cos", "x", "y", ;[[ "sin", x, y_sin; "cos", x, y_cos ]]
00:00:12 #456 [Verbose] > Building /tmp/!dotnet-repl/20240320-1229-3926-2615-257f6ad0274d/main.spi
00:00:12 #457 [Verbose] >
00:00:12 #458 [Verbose] > ╭─[ 195.47ms - return value ]──────────────────────────────────────────────────╮
00:00:12 #459 [Verbose] > │ <svg width="640" height="480" viewBox="0 0 640 480" │
00:00:12 #460 [Verbose] > │ xmlns="http://www.w3.org/2000/svg"> │
00:00:12 #461 [Verbose] > │ <rect x="0" y="0" width="640" height="480" opacity="1" fill="#141414" │
00:00:12 #462 [Verbose] > │ stroke="none"/> │
00:00:12 #463 [Verbose] > │ <text x="320" y="10" dy="0.76em" text-anchor="middle" │
00:00:12 #464 [Verbose] > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1" │
00:00:12 #465 [Verbose] > │ fill="#FFFFFF"> │
00:00:12 #466 [Verbose] > │ sin cos │
00:00:12 #467 [Verbose] > │ </text> │
00:00:12 #468 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="57" y1="424" x2="57" │
00:00:12 #469 [Verbose] > │ y2="75"/> │
00:00:12 #470 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" y1="424" x2="69" │
00:00:12 #471 [Verbose] > │ y2="75"/> │
00:00:12 #472 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="82" y1="424" x2="82" │
00:00:12 #473 [Verbose] > │ y2="75"/> │
00:00:12 #474 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="94" y1="424" x2="94" │
00:00:12 #475 [Verbose] > │ y2="75"/> │
00:00:12 #476 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="107" y1="424" │
00:00:12 #477 [Verbose] > │ x2="10... │
00:00:12 #478 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:12 #479 [Verbose] >
00:00:12 #480 [Verbose] > ╭─[ 199.02ms - stdout ]────────────────────────────────────────────────────────╮
00:00:12 #481 [Verbose] > │ type Mut0 = {mutable l0 : int32} │
00:00:12 #482 [Verbose] > │ let rec method1 (v0 : Mut0) : bool = │
00:00:12 #483 [Verbose] > │ let v1 : int32 = v0.l0 │
00:00:12 #484 [Verbose] > │ let v2 : bool = v1 < 201 │
00:00:12 #485 [Verbose] > │ v2 │
00:00:12 #486 [Verbose] > │ and method2 (v0 : int32, v1 : Mut0) : bool = │
00:00:12 #487 [Verbose] > │ let v2 : int32 = v1.l0 │
00:00:12 #488 [Verbose] > │ let v3 : bool = v2 < v0 │
00:00:12 #489 [Verbose] > │ v3 │
00:00:12 #490 [Verbose] > │ and method3 (v0 : (struct (string * (float []) * (float [])) [])) : (struct │
00:00:12 #491 [Verbose] > │ (string * (float []) * (float [])) []) = │
00:00:12 #492 [Verbose] > │ v0 │
00:00:12 #493 [Verbose] > │ and method0 () : struct (string * string * string * (struct (string * (float │
00:00:12 #494 [Verbose] > │ []) * (float [])) [])) = │
00:00:12 #495 [Verbose] > │ let v0 : (float []) = Array.zeroCreate<float> (201) │
00:00:12 #496 [Verbose] > │ let v1 : Mut0 = {l0 = 0} : Mut0 │
00:00:12 #497 [Verbose] > │ while method1(v1) do │
00:00:12 #498 [Verbose] > │ let v3 : int32 = v1.l0 │
00:00:12 #499 [Verbose] > │ let v4 : float = float v3 │
00:00:12 #500 [Verbose] > │ let v5 : float = 0.1 * v4 │
00:00:12 #501 [Verbose] > │ let v6 : float = -10.0 + v5 │
00:00:12 #502 [Verbose] > │ v0.[int v3] <- v6 │
00:00:12 #503 [Verbose] > │ let v7 : int32 = v3 + 1 │
00:00:12 #504 [Verbose] > │ v1.l0 <- v7 │
00:00:12 #505 [Verbose] > │ () │
00:00:12 #506 [Verbose] > │ let v8 : int32 = v0.Length │
00:00:12 #507 [Verbose] > │ let v9 : (float []) = Array.zeroCreate<float> (v8) │
00:00:12 #508 [Verbose] > │ let v10 : Mut0 = {l0 = 0} : Mut0 │
00:00:12 #509 [Verbose] > │ while method2(v8, v10) do │
00:00:12 #510 [Verbose] > │ let v12 : int32 = v10.l0 │
00:00:12 #511 [Verbose] > │ let v13 : float = v0.[int v12] │
00:00:12 #512 [Verbose] > │ let v14 : float = sin v13 │
00:00:12 #513 [Verbose] > │ v9.[int v12] <- v14 │
00:00:12 #514 [Verbose] > │ let v15 : int32 = v12 + 1 │
00:00:12 #515 [Verbose] > │ v10.l0 <- v15 │
00:00:12 #516 [Verbose] > │ () │
00:00:12 #517 [Verbose] > │ let v16 : (float []) = Array.zeroCreate<float> (v8) │
00:00:12 #518 [Verbose] > │ let v17 : Mut0 = {l0 = 0} : Mut0 │
00:00:12 #519 [Verbose] > │ while method2(v8, v17) do │
00:00:12 #520 [Verbose] > │ let v19 : int32 = v17.l0 │
00:00:12 #521 [Verbose] > │ let v20 : float = v0.[int v19] │
00:00:12 #522 [Verbose] > │ let v21 : float = cos v20 │
00:00:12 #523 [Verbose] > │ v16.[int v19] <- v21 │
00:00:12 #524 [Verbose] > │ let v22 : int32 = v19 + 1 │
00:00:12 #525 [Verbose] > │ v17.l0 <- v22 │
00:00:12 #526 [Verbose] > │ () │
00:00:12 #527 [Verbose] > │ let v23 : string = "sin" │
00:00:12 #528 [Verbose] > │ let v24 : string = "cos" │
00:00:12 #529 [Verbose] > │ let v25 : (struct (string * (float []) * (float [])) []) = [|struct │
00:00:12 #530 [Verbose] > │ (v23, v0, v9); struct (v24, v0, v16)|] │
00:00:12 #531 [Verbose] > │ let v26 : (struct (string * (float []) * (float [])) []) = method3(v25) │
00:00:12 #532 [Verbose] > │ let v27 : string = "sin cos" │
00:00:12 #533 [Verbose] > │ let v28 : string = "x" │
00:00:12 #534 [Verbose] > │ let v29 : string = "y" │
00:00:12 #535 [Verbose] > │ struct (v27, v28, v29, v26) │
00:00:12 #536 [Verbose] > │ method0() │
00:00:12 #537 [Verbose] > │ │
00:00:12 #538 [Verbose] > │ │
00:00:12 #539 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:12 #540 [Verbose] >
00:00:12 #541 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:12 #542 [Verbose] > // // test
00:00:12 #543 [Verbose] >
00:00:12 #544 [Verbose] > inl y_pos y0 vy0 ay t =
00:00:12 #545 [Verbose] > y0 + vy0 * t + ay * (t |> math.square) / 2
00:00:12 #546 [Verbose] >
00:00:12 #547 [Verbose] > inl x : a _ f64 = am'.init_series 0 5 0.01
00:00:12 #548 [Verbose] > inl y = x |> am.map (y_pos 0 20 -9.8)
00:00:12 #549 [Verbose] > "projectile motion", "time (s)", "", ;[[ "height of projectile (m)", x, y ]]
00:00:12 #550 [Verbose] > Building /tmp/!dotnet-repl/20240320-1229-3946-4663-40d2f48c86cc/main.spi
00:00:13 #551 [Verbose] >
00:00:13 #552 [Verbose] > ╭─[ 194.99ms - return value ]──────────────────────────────────────────────────╮
00:00:13 #553 [Verbose] > │ <svg width="640" height="480" viewBox="0 0 640 480" │
00:00:13 #554 [Verbose] > │ xmlns="http://www.w3.org/2000/svg"> │
00:00:13 #555 [Verbose] > │ <rect x="0" y="0" width="640" height="480" opacity="1" fill="#141414" │
00:00:13 #556 [Verbose] > │ stroke="none"/> │
00:00:13 #557 [Verbose] > │ <text x="320" y="10" dy="0.76em" text-anchor="middle" │
00:00:13 #558 [Verbose] > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1" │
00:00:13 #559 [Verbose] > │ fill="#FFFFFF"> │
00:00:13 #560 [Verbose] > │ projectile motion │
00:00:13 #561 [Verbose] > │ </text> │
00:00:13 #562 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="59" y1="424" x2="59" │
00:00:13 #563 [Verbose] > │ y2="75"/> │
00:00:13 #564 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" y1="424" x2="69" │
00:00:13 #565 [Verbose] > │ y2="75"/> │
00:00:13 #566 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="79" y1="424" x2="79" │
00:00:13 #567 [Verbose] > │ y2="75"/> │
00:00:13 #568 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="89" y1="424" x2="89" │
00:00:13 #569 [Verbose] > │ y2="75"/> │
00:00:13 #570 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="99" y1="42... │
00:00:13 #571 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:13 #572 [Verbose] >
00:00:13 #573 [Verbose] > ╭─[ 198.66ms - stdout ]────────────────────────────────────────────────────────╮
00:00:13 #574 [Verbose] > │ type Mut0 = {mutable l0 : int32} │
00:00:13 #575 [Verbose] > │ let rec method1 (v0 : Mut0) : bool = │
00:00:13 #576 [Verbose] > │ let v1 : int32 = v0.l0 │
00:00:13 #577 [Verbose] > │ let v2 : bool = v1 < 501 │
00:00:13 #578 [Verbose] > │ v2 │
00:00:13 #579 [Verbose] > │ and method2 (v0 : int32, v1 : Mut0) : bool = │
00:00:13 #580 [Verbose] > │ let v2 : int32 = v1.l0 │
00:00:13 #581 [Verbose] > │ let v3 : bool = v2 < v0 │
00:00:13 #582 [Verbose] > │ v3 │
00:00:13 #583 [Verbose] > │ and method3 (v0 : (struct (string * (float []) * (float [])) [])) : (struct │
00:00:13 #584 [Verbose] > │ (string * (float []) * (float [])) []) = │
00:00:13 #585 [Verbose] > │ v0 │
00:00:13 #586 [Verbose] > │ and method0 () : struct (string * string * string * (struct (string * (float │
00:00:13 #587 [Verbose] > │ []) * (float [])) [])) = │
00:00:13 #588 [Verbose] > │ let v0 : (float []) = Array.zeroCreate<float> (501) │
00:00:13 #589 [Verbose] > │ let v1 : Mut0 = {l0 = 0} : Mut0 │
00:00:13 #590 [Verbose] > │ while method1(v1) do │
00:00:13 #591 [Verbose] > │ let v3 : int32 = v1.l0 │
00:00:13 #592 [Verbose] > │ let v4 : float = float v3 │
00:00:13 #593 [Verbose] > │ let v5 : float = 0.01 * v4 │
00:00:13 #594 [Verbose] > │ v0.[int v3] <- v5 │
00:00:13 #595 [Verbose] > │ let v6 : int32 = v3 + 1 │
00:00:13 #596 [Verbose] > │ v1.l0 <- v6 │
00:00:13 #597 [Verbose] > │ () │
00:00:13 #598 [Verbose] > │ let v7 : int32 = v0.Length │
00:00:13 #599 [Verbose] > │ let v8 : (float []) = Array.zeroCreate<float> (v7) │
00:00:13 #600 [Verbose] > │ let v9 : Mut0 = {l0 = 0} : Mut0 │
00:00:13 #601 [Verbose] > │ while method2(v7, v9) do │
00:00:13 #602 [Verbose] > │ let v11 : int32 = v9.l0 │
00:00:13 #603 [Verbose] > │ let v12 : float = v0.[int v11] │
00:00:13 #604 [Verbose] > │ let v13 : float = 20.0 * v12 │
00:00:13 #605 [Verbose] > │ let v14 : float = v12 ** 2.0 │
00:00:13 #606 [Verbose] > │ let v15 : float = -9.8 * v14 │
00:00:13 #607 [Verbose] > │ let v16 : float = v15 / 2.0 │
00:00:13 #608 [Verbose] > │ let v17 : float = v13 + v16 │
00:00:13 #609 [Verbose] > │ v8.[int v11] <- v17 │
00:00:13 #610 [Verbose] > │ let v18 : int32 = v11 + 1 │
00:00:13 #611 [Verbose] > │ v9.l0 <- v18 │
00:00:13 #612 [Verbose] > │ () │
00:00:13 #613 [Verbose] > │ let v19 : string = "height of projectile (m)" │
00:00:13 #614 [Verbose] > │ let v20 : (struct (string * (float []) * (float [])) []) = [|struct │
00:00:13 #615 [Verbose] > │ (v19, v0, v8)|] │
00:00:13 #616 [Verbose] > │ let v21 : (struct (string * (float []) * (float [])) []) = method3(v20) │
00:00:13 #617 [Verbose] > │ let v22 : string = "projectile motion" │
00:00:13 #618 [Verbose] > │ let v23 : string = "time (s)" │
00:00:13 #619 [Verbose] > │ let v24 : string = "" │
00:00:13 #620 [Verbose] > │ struct (v22, v23, v24, v21) │
00:00:13 #621 [Verbose] > │ method0() │
00:00:13 #622 [Verbose] > │ │
00:00:13 #623 [Verbose] > │ │
00:00:13 #624 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:13 #625 [Verbose] >
00:00:13 #626 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:13 #627 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:13 #628 [Verbose] > │ ## velocity_cf │
00:00:13 #629 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:13 #630 [Verbose] >
00:00:13 #631 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:13 #632 [Verbose] > type mass = f64
00:00:13 #633 [Verbose] > type time = f64
00:00:13 #634 [Verbose] > type position = f64
00:00:13 #635 [Verbose] > type velocity = f64
00:00:13 #636 [Verbose] > type force = f64
00:00:13 #637 [Verbose] >
00:00:13 #638 [Verbose] > type velocity_cf = mass -> velocity -> list force -> (time -> velocity)
00:00:13 #639 [Verbose] >
00:00:13 #640 [Verbose] > inl velocity_cf m v0 fs =
00:00:13 #641 [Verbose] > inl f_net = fs |> listm'.sum
00:00:13 #642 [Verbose] > inl a0 = f_net / m
00:00:13 #643 [Verbose] > inl v t = v0 + a0 * t
00:00:13 #644 [Verbose] > v
00:00:13 #645 [Verbose] > Building /tmp/!dotnet-repl/20240320-1229-3967-6702-6281ae49efbc/main.spi
00:00:13 #646 [Verbose] >
00:00:13 #647 [Verbose] > ╭─[ 155.51ms - stdout ]────────────────────────────────────────────────────────╮
00:00:13 #648 [Verbose] > │ () │
00:00:13 #649 [Verbose] > │ │
00:00:13 #650 [Verbose] > │ │
00:00:13 #651 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:13 #652 [Verbose] >
00:00:13 #653 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:13 #654 [Verbose] > // // test
00:00:13 #655 [Verbose] >
00:00:13 #656 [Verbose] > velocity_cf 0.1f64 0.6 [[ 0.04; -0.08 ]] 0
00:00:13 #657 [Verbose] > |> _assert_eq 0.6
00:00:13 #658 [Verbose] >
00:00:13 #659 [Verbose] > velocity_cf 0.1f64 0.6 [[ 0.04; -0.08 ]] 1
00:00:13 #660 [Verbose] > |> _assert_eq 0.2
00:00:13 #661 [Verbose] > Building /tmp/!dotnet-repl/20240320-1229-3982-8261-873741e85538/main.spi
00:00:13 #662 [Verbose] >
00:00:13 #663 [Verbose] > ╭─[ 166.66ms - stdout ]────────────────────────────────────────────────────────╮
00:00:13 #664 [Verbose] > │ let rec method0 () : unit = │
00:00:13 #665 [Verbose] > │ let v0 : string = $"__expect / actual: %A{0.6} / expected: %A{0.6}" │
00:00:13 #666 [Verbose] > │ let v1 : string = $"__expect / actual: %A{0.2} / expected: %A{0.2}" │
00:00:13 #667 [Verbose] > │ () │
00:00:13 #668 [Verbose] > │ method0() │
00:00:13 #669 [Verbose] > │ │
00:00:13 #670 [Verbose] > │ │
00:00:13 #671 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:13 #672 [Verbose] >
00:00:13 #673 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:13 #674 [Verbose] > // // test
00:00:13 #675 [Verbose] >
00:00:13 #676 [Verbose] > inl x = am'.init_series 0 4 0.1
00:00:13 #677 [Verbose] > inl y = x |> am.map (velocity_cf 0.1f64 0.6 [[ 0.04; -0.08 ]])
00:00:13 #678 [Verbose] > "car on an air track", "time (s)", "", ;[[ "velocity of car (m/s)", x, y ]]
00:00:13 #679 [Verbose] > Building /tmp/!dotnet-repl/20240320-1229-3999-9938-98e1493f0d58/main.spi
00:00:13 #680 [Verbose] >
00:00:13 #681 [Verbose] > ╭─[ 259.46ms - return value ]──────────────────────────────────────────────────╮
00:00:13 #682 [Verbose] > │ <svg width="640" height="480" viewBox="0 0 640 480" │
00:00:13 #683 [Verbose] > │ xmlns="http://www.w3.org/2000/svg"> │
00:00:13 #684 [Verbose] > │ <rect x="0" y="0" width="640" height="480" opacity="1" fill="#141414" │
00:00:13 #685 [Verbose] > │ stroke="none"/> │
00:00:13 #686 [Verbose] > │ <text x="320" y="10" dy="0.76em" text-anchor="middle" │
00:00:13 #687 [Verbose] > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1" │
00:00:13 #688 [Verbose] > │ fill="#FFFFFF"> │
00:00:13 #689 [Verbose] > │ car on an air track │
00:00:13 #690 [Verbose] > │ </text> │
00:00:13 #691 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="57" y1="424" x2="57" │
00:00:13 #692 [Verbose] > │ y2="75"/> │
00:00:13 #693 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" y1="424" x2="69" │
00:00:13 #694 [Verbose] > │ y2="75"/> │
00:00:13 #695 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="82" y1="424" x2="82" │
00:00:13 #696 [Verbose] > │ y2="75"/> │
00:00:13 #697 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="94" y1="424" x2="94" │
00:00:13 #698 [Verbose] > │ y2="75"/> │
00:00:13 #699 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="107" y1=... │
00:00:13 #700 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:13 #701 [Verbose] >
00:00:13 #702 [Verbose] > ╭─[ 264.79ms - stdout ]────────────────────────────────────────────────────────╮
00:00:13 #703 [Verbose] > │ type Mut0 = {mutable l0 : int32} │
00:00:13 #704 [Verbose] > │ let rec method1 (v0 : Mut0) : bool = │
00:00:13 #705 [Verbose] > │ let v1 : int32 = v0.l0 │
00:00:13 #706 [Verbose] > │ let v2 : bool = v1 < 41 │
00:00:13 #707 [Verbose] > │ v2 │
00:00:13 #708 [Verbose] > │ and method2 (v0 : int32, v1 : Mut0) : bool = │
00:00:13 #709 [Verbose] > │ let v2 : int32 = v1.l0 │
00:00:13 #710 [Verbose] > │ let v3 : bool = v2 < v0 │
00:00:13 #711 [Verbose] > │ v3 │
00:00:13 #712 [Verbose] > │ and method3 (v0 : (struct (string * (float []) * (float [])) [])) : (struct │
00:00:13 #713 [Verbose] > │ (string * (float []) * (float [])) []) = │
00:00:13 #714 [Verbose] > │ v0 │
00:00:13 #715 [Verbose] > │ and method0 () : struct (string * string * string * (struct (string * (float │
00:00:13 #716 [Verbose] > │ []) * (float [])) [])) = │
00:00:13 #717 [Verbose] > │ let v0 : (float []) = Array.zeroCreate<float> (41) │
00:00:13 #718 [Verbose] > │ let v1 : Mut0 = {l0 = 0} : Mut0 │
00:00:13 #719 [Verbose] > │ while method1(v1) do │
00:00:13 #720 [Verbose] > │ let v3 : int32 = v1.l0 │
00:00:13 #721 [Verbose] > │ let v4 : float = float v3 │
00:00:13 #722 [Verbose] > │ let v5 : float = 0.1 * v4 │
00:00:13 #723 [Verbose] > │ v0.[int v3] <- v5 │
00:00:13 #724 [Verbose] > │ let v6 : int32 = v3 + 1 │
00:00:13 #725 [Verbose] > │ v1.l0 <- v6 │
00:00:13 #726 [Verbose] > │ () │
00:00:13 #727 [Verbose] > │ let v7 : int32 = v0.Length │
00:00:13 #728 [Verbose] > │ let v8 : (float []) = Array.zeroCreate<float> (v7) │
00:00:13 #729 [Verbose] > │ let v9 : Mut0 = {l0 = 0} : Mut0 │
00:00:13 #730 [Verbose] > │ while method2(v7, v9) do │
00:00:13 #731 [Verbose] > │ let v11 : int32 = v9.l0 │
00:00:13 #732 [Verbose] > │ let v12 : float = v0.[int v11] │
00:00:13 #733 [Verbose] > │ let v13 : float = -0.39999999999999997 * v12 │
00:00:13 #734 [Verbose] > │ let v14 : float = 0.6 + v13 │
00:00:13 #735 [Verbose] > │ v8.[int v11] <- v14 │
00:00:13 #736 [Verbose] > │ let v15 : int32 = v11 + 1 │
00:00:13 #737 [Verbose] > │ v9.l0 <- v15 │
00:00:13 #738 [Verbose] > │ () │
00:00:13 #739 [Verbose] > │ let v16 : string = "velocity of car (m/s)" │
00:00:13 #740 [Verbose] > │ let v17 : (struct (string * (float []) * (float [])) []) = [|struct │
00:00:13 #741 [Verbose] > │ (v16, v0, v8)|] │
00:00:13 #742 [Verbose] > │ let v18 : (struct (string * (float []) * (float [])) []) = method3(v17) │
00:00:13 #743 [Verbose] > │ let v19 : string = "car on an air track" │
00:00:13 #744 [Verbose] > │ let v20 : string = "time (s)" │
00:00:13 #745 [Verbose] > │ let v21 : string = "" │
00:00:13 #746 [Verbose] > │ struct (v19, v20, v21, v18) │
00:00:13 #747 [Verbose] > │ method0() │
00:00:13 #748 [Verbose] > │ │
00:00:13 #749 [Verbose] > │ │
00:00:13 #750 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:13 #751 [Verbose] >
00:00:13 #752 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:13 #753 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:13 #754 [Verbose] > │ ## derivative │
00:00:13 #755 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:13 #756 [Verbose] >
00:00:13 #757 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:13 #758 [Verbose] > type derivative = (f64 -> f64) -> f64 -> f64
00:00:13 #759 [Verbose] >
00:00:13 #760 [Verbose] > inl derivative dt : derivative =
00:00:13 #761 [Verbose] > fun x t =>
00:00:13 #762 [Verbose] > (x (t + dt / 2) - x (t - dt / 2)) / dt
00:00:13 #763 [Verbose] > Building /tmp/!dotnet-repl/20240320-1229-4026-2667-2cb019c445c5/main.spi
00:00:13 #764 [Verbose] >
00:00:13 #765 [Verbose] > ╭─[ 148.12ms - stdout ]────────────────────────────────────────────────────────╮
00:00:13 #766 [Verbose] > │ () │
00:00:13 #767 [Verbose] > │ │
00:00:13 #768 [Verbose] > │ │
00:00:13 #769 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:13 #770 [Verbose] >
00:00:13 #771 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:13 #772 [Verbose] > // // test
00:00:13 #773 [Verbose] >
00:00:13 #774 [Verbose] > derivative 1 (fun x => x ** 4 / 4) 1 - 1
00:00:13 #775 [Verbose] > |> _assert_approx_eq None 0.25
00:00:13 #776 [Verbose] >
00:00:13 #777 [Verbose] > derivative 0.001 (fun x => x ** 4 / 4) 1 - 1
00:00:13 #778 [Verbose] > |> _assert_approx_eq None 0.0000002499998827953931
00:00:13 #779 [Verbose] >
00:00:13 #780 [Verbose] > derivative 0.000001 (fun x => x ** 4 / 4) 1 - 1
00:00:13 #781 [Verbose] > |> _assert_approx_eq None 0.000000000001000088900582341
00:00:13 #782 [Verbose] >
00:00:13 #783 [Verbose] > derivative 0.000000001 (fun x => x ** 4 / 4) 1 - 1
00:00:13 #784 [Verbose] > |> _assert_approx_eq None 0.00000008274037099909037
00:00:13 #785 [Verbose] >
00:00:13 #786 [Verbose] > derivative 0.000000000001 (fun x => x ** 4 / 4) 1 - 1
00:00:13 #787 [Verbose] > |> _assert_approx_eq None 0.00008890058234101161
00:00:13 #788 [Verbose] >
00:00:13 #789 [Verbose] > derivative 0.000000000000001 (fun x => x ** 4 / 4) 1 - 1
00:00:13 #790 [Verbose] > |> _assert_approx_eq None -0.0007992778373592246
00:00:13 #791 [Verbose] >
00:00:13 #792 [Verbose] > derivative 0.000000000000000001 (fun x => x ** 4 / 4) 1 - 1
00:00:13 #793 [Verbose] > |> _assert_approx_eq None -1
00:00:13 #794 [Verbose] > Building /tmp/!dotnet-repl/20240320-1229-4041-4142-4a6d26d82214/main.spi
00:00:13 #795 [Verbose] >
00:00:13 #796 [Verbose] > ╭─[ 165.60ms - stdout ]────────────────────────────────────────────────────────╮
00:00:13 #797 [Verbose] > │ let rec method0 () : unit = │
00:00:13 #798 [Verbose] > │ let v0 : string = $"__expect / actual: %A{0.25} / expected: %A{0.25}" │
00:00:13 #799 [Verbose] > │ let v1 : string = $"__expect / actual: %A{2.499998827953931E-07} / │
00:00:13 #800 [Verbose] > │ expected: %A{2.499998827953931E-07}" │
00:00:13 #801 [Verbose] > │ let v2 : string = $"__expect / actual: %A{1.000088900582341E-12} / │
00:00:13 #802 [Verbose] > │ expected: %A{1.000088900582341E-12}" │
00:00:13 #803 [Verbose] > │ let v3 : string = $"__expect / actual: %A{8.274037099909037E-08} / │
00:00:13 #804 [Verbose] > │ expected: %A{8.274037099909037E-08}" │
00:00:13 #805 [Verbose] > │ let v4 : string = $"__expect / actual: %A{8.890058234101161E-05} / │
00:00:13 #806 [Verbose] > │ expected: %A{8.890058234101161E-05}" │
00:00:13 #807 [Verbose] > │ let v5 : string = $"__expect / actual: %A{-0.0007992778373592246} / │
00:00:13 #808 [Verbose] > │ expected: %A{-0.0007992778373592246}" │
00:00:13 #809 [Verbose] > │ let v6 : string = $"__expect / actual: %A{-1.0} / expected: %A{-1.0}" │
00:00:13 #810 [Verbose] > │ () │
00:00:13 #811 [Verbose] > │ method0() │
00:00:13 #812 [Verbose] > │ │
00:00:13 #813 [Verbose] > │ │
00:00:13 #814 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:13 #815 [Verbose] >
00:00:13 #816 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:13 #817 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:13 #818 [Verbose] > │ ## integration │
00:00:13 #819 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:13 #820 [Verbose] >
00:00:13 #821 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:13 #822 [Verbose] > type integration = (f64 -> f64) -> f64 -> f64 -> f64
00:00:13 #823 [Verbose] >
00:00:13 #824 [Verbose] > inl integral dt : integration =
00:00:13 #825 [Verbose] > fun f a b =>
00:00:13 #826 [Verbose] > inl rec loop t y =
00:00:13 #827 [Verbose] > if t < b
00:00:13 #828 [Verbose] > then loop (t + dt) (y + f t * dt)
00:00:13 #829 [Verbose] > else t, y
00:00:13 #830 [Verbose] > loop (a + dt / 2) 0
00:00:13 #831 [Verbose] > |> snd
00:00:14 #832 [Verbose] > Building /tmp/!dotnet-repl/20240320-1229-4058-5816-5e01c50e5c13/main.spi
00:00:14 #833 [Verbose] >
00:00:14 #834 [Verbose] > ╭─[ 144.67ms - stdout ]────────────────────────────────────────────────────────╮
00:00:14 #835 [Verbose] > │ () │
00:00:14 #836 [Verbose] > │ │
00:00:14 #837 [Verbose] > │ │
00:00:14 #838 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:14 #839 [Verbose] >
00:00:14 #840 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:14 #841 [Verbose] > // // test
00:00:14 #842 [Verbose] >
00:00:14 #843 [Verbose] > integral 0.01 math.square 0 1
00:00:14 #844 [Verbose] > |> _assert_approx_eq None 0.33332500000000004
00:00:14 #845 [Verbose] > Building /tmp/!dotnet-repl/20240320-1229-4072-7266-793a46529dd7/main.spi
00:00:14 #846 [Verbose] >
00:00:14 #847 [Verbose] > ╭─[ 157.03ms - stdout ]────────────────────────────────────────────────────────╮
00:00:14 #848 [Verbose] > │ let rec method0 () : unit = │
00:00:14 #849 [Verbose] > │ let v0 : string = $"__expect / actual: %A{0.3333250000000004} / │
00:00:14 #850 [Verbose] > │ expected: %A{0.33332500000000004}" │
00:00:14 #851 [Verbose] > │ () │
00:00:14 #852 [Verbose] > │ method0() │
00:00:14 #853 [Verbose] > │ │
00:00:14 #854 [Verbose] > │ │
00:00:14 #855 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:14 #856 [Verbose] >
00:00:14 #857 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:14 #858 [Verbose] > inl integral' dt : integration =
00:00:14 #859 [Verbose] > fun f a b =>
00:00:14 #860 [Verbose] > listm'.init_series (a + dt / 2) (b - dt / 2) dt
00:00:14 #861 [Verbose] > |> listm.map (f >> (*) dt)
00:00:14 #862 [Verbose] > |> listm'.sum
00:00:14 #863 [Verbose] > Building /tmp/!dotnet-repl/20240320-1229-4088-8851-806d080af96a/main.spi
00:00:14 #864 [Verbose] >
00:00:14 #865 [Verbose] > ╭─[ 148.96ms - stdout ]────────────────────────────────────────────────────────╮
00:00:14 #866 [Verbose] > │ () │
00:00:14 #867 [Verbose] > │ │
00:00:14 #868 [Verbose] > │ │
00:00:14 #869 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:14 #870 [Verbose] >
00:00:14 #871 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:14 #872 [Verbose] > // // test
00:00:14 #873 [Verbose] >
00:00:14 #874 [Verbose] > integral' 0.1 math.square 0 1
00:00:14 #875 [Verbose] > |> _assert_approx_eq None (integral 0.1 math.square 0 1)
00:00:14 #876 [Verbose] > Building /tmp/!dotnet-repl/20240320-1229-4103-0334-02ce2c8cef45/main.spi
00:00:14 #877 [Verbose] >
00:00:14 #878 [Verbose] > ╭─[ 154.14ms - stdout ]────────────────────────────────────────────────────────╮
00:00:14 #879 [Verbose] > │ let rec method0 () : unit = │
00:00:14 #880 [Verbose] > │ let v0 : string = $"__expect / actual: %A{0.3325000000000001} / │
00:00:14 #881 [Verbose] > │ expected: %A{0.33249999999999996}" │
00:00:14 #882 [Verbose] > │ () │
00:00:14 #883 [Verbose] > │ method0() │
00:00:14 #884 [Verbose] > │ │
00:00:14 #885 [Verbose] > │ │
00:00:14 #886 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:14 #887 [Verbose] >
00:00:14 #888 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:14 #889 [Verbose] > inl integral'' dt : integration =
00:00:14 #890 [Verbose] > fun f a b =>
00:00:14 #891 [Verbose] > am'.init_series (a + dt / 2) (b - dt / 2) dt
00:00:14 #892 [Verbose] > |> am.map (f >> (*) dt)
00:00:14 #893 [Verbose] > |> am'.sum
00:00:14 #894 [Verbose] > Building /tmp/!dotnet-repl/20240320-1229-4118-1884-13602b88c7fe/main.spi
00:00:14 #895 [Verbose] >
00:00:14 #896 [Verbose] > ╭─[ 149.29ms - stdout ]────────────────────────────────────────────────────────╮
00:00:14 #897 [Verbose] > │ () │
00:00:14 #898 [Verbose] > │ │
00:00:14 #899 [Verbose] > │ │
00:00:14 #900 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:14 #901 [Verbose] >
00:00:14 #902 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:14 #903 [Verbose] > // // test
00:00:14 #904 [Verbose] >
00:00:14 #905 [Verbose] > integral'' 0.01 math.square 0 1
00:00:14 #906 [Verbose] > |> _assert_approx_eq None (integral 0.01 math.square 0 1)
00:00:14 #907 [Verbose] > Building /tmp/!dotnet-repl/20240320-1229-4133-3381-37585ef6b3c4/main.spi
00:00:14 #908 [Verbose] >
00:00:14 #909 [Verbose] > ╭─[ 216.82ms - stdout ]────────────────────────────────────────────────────────╮
00:00:14 #910 [Verbose] > │ type Mut0 = {mutable l0 : int32} │
00:00:14 #911 [Verbose] > │ and Mut1 = {mutable l0 : int32; mutable l1 : float} │
00:00:14 #912 [Verbose] > │ let rec method1 (v0 : Mut0) : bool = │
00:00:14 #913 [Verbose] > │ let v1 : int32 = v0.l0 │
00:00:14 #914 [Verbose] > │ let v2 : bool = v1 < 100 │
00:00:14 #915 [Verbose] > │ v2 │
00:00:14 #916 [Verbose] > │ and method2 (v0 : int32, v1 : Mut0) : bool = │
00:00:14 #917 [Verbose] > │ let v2 : int32 = v1.l0 │
00:00:14 #918 [Verbose] > │ let v3 : bool = v2 < v0 │
00:00:14 #919 [Verbose] > │ v3 │
00:00:14 #920 [Verbose] > │ and method3 (v0 : int32, v1 : Mut1) : bool = │
00:00:14 #921 [Verbose] > │ let v2 : int32 = v1.l0 │
00:00:14 #922 [Verbose] > │ let v3 : bool = v2 < v0 │
00:00:14 #923 [Verbose] > │ v3 │
00:00:14 #924 [Verbose] > │ and method4 (v0 : bool) : bool = │
00:00:14 #925 [Verbose] > │ v0 │
00:00:14 #926 [Verbose] > │ and method0 () : unit = │
00:00:14 #927 [Verbose] > │ let v0 : (float []) = Array.zeroCreate<float> (100) │
00:00:14 #928 [Verbose] > │ let v1 : Mut0 = {l0 = 0} : Mut0 │
00:00:14 #929 [Verbose] > │ while method1(v1) do │
00:00:14 #930 [Verbose] > │ let v3 : int32 = v1.l0 │
00:00:14 #931 [Verbose] > │ let v4 : float = float v3 │
00:00:14 #932 [Verbose] > │ let v5 : float = 0.01 * v4 │
00:00:14 #933 [Verbose] > │ let v6 : float = 0.005 + v5 │
00:00:14 #934 [Verbose] > │ v0.[int v3] <- v6 │
00:00:14 #935 [Verbose] > │ let v7 : int32 = v3 + 1 │
00:00:14 #936 [Verbose] > │ v1.l0 <- v7 │
00:00:14 #937 [Verbose] > │ () │
00:00:14 #938 [Verbose] > │ let v8 : int32 = v0.Length │
00:00:14 #939 [Verbose] > │ let v9 : (float []) = Array.zeroCreate<float> (v8) │
00:00:14 #940 [Verbose] > │ let v10 : Mut0 = {l0 = 0} : Mut0 │
00:00:14 #941 [Verbose] > │ while method2(v8, v10) do │
00:00:14 #942 [Verbose] > │ let v12 : int32 = v10.l0 │
00:00:14 #943 [Verbose] > │ let v13 : float = v0.[int v12] │
00:00:14 #944 [Verbose] > │ let v14 : float = v13 ** 2.0 │
00:00:14 #945 [Verbose] > │ let v15 : float = 0.01 * v14 │
00:00:14 #946 [Verbose] > │ v9.[int v12] <- v15 │
00:00:14 #947 [Verbose] > │ let v16 : int32 = v12 + 1 │
00:00:14 #948 [Verbose] > │ v10.l0 <- v16 │
00:00:14 #949 [Verbose] > │ () │
00:00:14 #950 [Verbose] > │ let v17 : int32 = v9.Length │
00:00:14 #951 [Verbose] > │ let v18 : Mut1 = {l0 = 0; l1 = 0.0} : Mut1 │
00:00:14 #952 [Verbose] > │ while method3(v17, v18) do │
00:00:14 #953 [Verbose] > │ let v20 : int32 = v18.l0 │
00:00:14 #954 [Verbose] > │ let v21 : float = v18.l1 │
00:00:14 #955 [Verbose] > │ let v22 : float = v9.[int v20] │
00:00:14 #956 [Verbose] > │ let v23 : float = v21 + v22 │
00:00:14 #957 [Verbose] > │ let v24 : int32 = v20 + 1 │
00:00:14 #958 [Verbose] > │ v18.l0 <- v24 │
00:00:14 #959 [Verbose] > │ v18.l1 <- v23 │
00:00:14 #960 [Verbose] > │ () │
00:00:14 #961 [Verbose] > │ let v25 : float = v18.l1 │
00:00:14 #962 [Verbose] > │ let v26 : float = 0.3333250000000004 - v25 │
00:00:14 #963 [Verbose] > │ let v27 : float = -v26 │
00:00:14 #964 [Verbose] > │ let v28 : bool = v26 >= v27 │
00:00:14 #965 [Verbose] > │ let v29 : float = │
00:00:14 #966 [Verbose] > │ if v28 then │
00:00:14 #967 [Verbose] > │ v26 │
00:00:14 #968 [Verbose] > │ else │
00:00:14 #969 [Verbose] > │ v27 │
00:00:14 #970 [Verbose] > │ let v30 : bool = v29 < 1E-08 │
00:00:14 #971 [Verbose] > │ let v32 : bool = │
00:00:14 #972 [Verbose] > │ if v30 then │
00:00:14 #973 [Verbose] > │ true │
00:00:14 #974 [Verbose] > │ else │
00:00:14 #975 [Verbose] > │ method4(v30) │
00:00:14 #976 [Verbose] > │ let v33 : string = $"__expect / actual: %A{v25} / expected: │
00:00:14 #977 [Verbose] > │ %A{0.3333250000000004}" │
00:00:14 #978 [Verbose] > │ let v34 : bool = v32 = false │
00:00:14 #979 [Verbose] > │ if v34 then │
00:00:14 #980 [Verbose] > │ failwith<unit> v33 │
00:00:14 #981 [Verbose] > │ method0() │
00:00:14 #982 [Verbose] > │ │
00:00:14 #983 [Verbose] > │ │
00:00:14 #984 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:14 #985 [Verbose] >
00:00:14 #986 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:14 #987 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:14 #988 [Verbose] > │ ## anti_derivative │
00:00:14 #989 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:14 #990 [Verbose] >
00:00:14 #991 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:14 #992 [Verbose] > inl anti_derivative dt v0 a t =
00:00:14 #993 [Verbose] > v0 + integral' dt a 0 t
00:00:15 #994 [Verbose] > Building /tmp/!dotnet-repl/20240320-1229-4156-5609-5e6ccd7fdb21/main.spi
00:00:15 #995 [Verbose] >
00:00:15 #996 [Verbose] > ╭─[ 156.27ms - stdout ]────────────────────────────────────────────────────────╮
00:00:15 #997 [Verbose] > │ () │
00:00:15 #998 [Verbose] > │ │
00:00:15 #999 [Verbose] > │ │
00:00:15 #1000 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:15 #1001 [Verbose] >
00:00:15 #1002 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:15 #1003 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:15 #1004 [Verbose] > │ ## velocity_ft │
00:00:15 #1005 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:15 #1006 [Verbose] >
00:00:15 #1007 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:15 #1008 [Verbose] > type velocity_ft = mass -> velocity -> list (time -> force) -> (time ->
00:00:15 #1009 [Verbose] > velocity)
00:00:15 #1010 [Verbose] >
00:00:15 #1011 [Verbose] > inl velocity_ft dt : velocity_ft =
00:00:15 #1012 [Verbose] > fun m v0 fs =>
00:00:15 #1013 [Verbose] > inl f_net t = fs |> listm.map (fun f => f t) |> listm'.sum
00:00:15 #1014 [Verbose] > inl a t = f_net t / m
00:00:15 #1015 [Verbose] > anti_derivative dt v0 a
00:00:15 #1016 [Verbose] > Building /tmp/!dotnet-repl/20240320-1229-4171-7182-7135daa41f17/main.spi
00:00:15 #1017 [Verbose] >
00:00:15 #1018 [Verbose] > ╭─[ 164.69ms - stdout ]────────────────────────────────────────────────────────╮
00:00:15 #1019 [Verbose] > │ () │
00:00:15 #1020 [Verbose] > │ │
00:00:15 #1021 [Verbose] > │ │
00:00:15 #1022 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:15 #1023 [Verbose] >
00:00:15 #1024 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:15 #1025 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:15 #1026 [Verbose] > │ ## position_ft │
00:00:15 #1027 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:15 #1028 [Verbose] >
00:00:15 #1029 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:15 #1030 [Verbose] > type position_ft = mass -> position -> velocity -> list (time -> force) -> (time
00:00:15 #1031 [Verbose] > -> position)
00:00:15 #1032 [Verbose] >
00:00:15 #1033 [Verbose] > inl position_ft dt : position_ft =
00:00:15 #1034 [Verbose] > fun m x0 v0 fs =>
00:00:15 #1035 [Verbose] > velocity_ft dt m v0 fs
00:00:15 #1036 [Verbose] > |> anti_derivative dt x0
00:00:15 #1037 [Verbose] > Building /tmp/!dotnet-repl/20240320-1229-4188-8835-8bc279e9d3dd/main.spi
00:00:15 #1038 [Verbose] >
00:00:15 #1039 [Verbose] > ╭─[ 145.54ms - stdout ]────────────────────────────────────────────────────────╮
00:00:15 #1040 [Verbose] > │ () │
00:00:15 #1041 [Verbose] > │ │
00:00:15 #1042 [Verbose] > │ │
00:00:15 #1043 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:15 #1044 [Verbose] >
00:00:15 #1045 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:15 #1046 [Verbose] > // // test
00:00:15 #1047 [Verbose] >
00:00:15 #1048 [Verbose] > inl pedal_coast (t : time) : force =
00:00:15 #1049 [Verbose] > inl t_cycle = 20
00:00:15 #1050 [Verbose] > inl n_complete : i32 = t / t_cycle |> conv
00:00:15 #1051 [Verbose] > inl remainder = t - conv n_complete * t_cycle
00:00:15 #1052 [Verbose] > if remainder > 0 && remainder < 10
00:00:15 #1053 [Verbose] > then 10
00:00:15 #1054 [Verbose] > else 0
00:00:15 #1055 [Verbose] >
00:00:15 #1056 [Verbose] > inl x = am'.init_series -5 45 0.1
00:00:15 #1057 [Verbose] > inl y = x |> am.map pedal_coast
00:00:15 #1058 [Verbose] > "child pedaling then coasting", "time (s)", "", ;[[ "force on bike (N)", x, y ]]
00:00:15 #1059 [Verbose] > Building /tmp/!dotnet-repl/20240320-1229-4202-0293-057e038fc74a/main.spi
00:00:15 #1060 [Verbose] >
00:00:15 #1061 [Verbose] > ╭─[ 182.80ms - return value ]──────────────────────────────────────────────────╮
00:00:15 #1062 [Verbose] > │ <svg width="640" height="480" viewBox="0 0 640 480" │
00:00:15 #1063 [Verbose] > │ xmlns="http://www.w3.org/2000/svg"> │
00:00:15 #1064 [Verbose] > │ <rect x="0" y="0" width="640" height="480" opacity="1" fill="#141414" │
00:00:15 #1065 [Verbose] > │ stroke="none"/> │
00:00:15 #1066 [Verbose] > │ <text x="320" y="10" dy="0.76em" text-anchor="middle" │
00:00:15 #1067 [Verbose] > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1" │
00:00:15 #1068 [Verbose] > │ fill="#FFFFFF"> │
00:00:15 #1069 [Verbose] > │ child pedaling then coasting │
00:00:15 #1070 [Verbose] > │ </text> │
00:00:15 #1071 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="59" y1="424" x2="59" │
00:00:15 #1072 [Verbose] > │ y2="75"/> │
00:00:15 #1073 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" y1="424" x2="69" │
00:00:15 #1074 [Verbose] > │ y2="75"/> │
00:00:15 #1075 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="79" y1="424" x2="79" │
00:00:15 #1076 [Verbose] > │ y2="75"/> │
00:00:15 #1077 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="89" y1="424" x2="89" │
00:00:15 #1078 [Verbose] > │ y2="75"/> │
00:00:15 #1079 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1=... │
00:00:15 #1080 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:15 #1081 [Verbose] >
00:00:15 #1082 [Verbose] > ╭─[ 185.60ms - stdout ]────────────────────────────────────────────────────────╮
00:00:15 #1083 [Verbose] > │ type Mut0 = {mutable l0 : int32} │
00:00:15 #1084 [Verbose] > │ let rec method1 (v0 : Mut0) : bool = │
00:00:15 #1085 [Verbose] > │ let v1 : int32 = v0.l0 │
00:00:15 #1086 [Verbose] > │ let v2 : bool = v1 < 501 │
00:00:15 #1087 [Verbose] > │ v2 │
00:00:15 #1088 [Verbose] > │ and method2 (v0 : int32, v1 : Mut0) : bool = │
00:00:15 #1089 [Verbose] > │ let v2 : int32 = v1.l0 │
00:00:15 #1090 [Verbose] > │ let v3 : bool = v2 < v0 │
00:00:15 #1091 [Verbose] > │ v3 │
00:00:15 #1092 [Verbose] > │ and method3 (v0 : (struct (string * (float []) * (float [])) [])) : (struct │
00:00:15 #1093 [Verbose] > │ (string * (float []) * (float [])) []) = │
00:00:15 #1094 [Verbose] > │ v0 │
00:00:15 #1095 [Verbose] > │ and method0 () : struct (string * string * string * (struct (string * (float │
00:00:15 #1096 [Verbose] > │ []) * (float [])) [])) = │
00:00:15 #1097 [Verbose] > │ let v0 : (float []) = Array.zeroCreate<float> (501) │
00:00:15 #1098 [Verbose] > │ let v1 : Mut0 = {l0 = 0} : Mut0 │
00:00:15 #1099 [Verbose] > │ while method1(v1) do │
00:00:15 #1100 [Verbose] > │ let v3 : int32 = v1.l0 │
00:00:15 #1101 [Verbose] > │ let v4 : float = float v3 │
00:00:15 #1102 [Verbose] > │ let v5 : float = 0.1 * v4 │
00:00:15 #1103 [Verbose] > │ let v6 : float = -5.0 + v5 │
00:00:15 #1104 [Verbose] > │ v0.[int v3] <- v6 │
00:00:15 #1105 [Verbose] > │ let v7 : int32 = v3 + 1 │
00:00:15 #1106 [Verbose] > │ v1.l0 <- v7 │
00:00:15 #1107 [Verbose] > │ () │
00:00:15 #1108 [Verbose] > │ let v8 : int32 = v0.Length │
00:00:15 #1109 [Verbose] > │ let v9 : (float []) = Array.zeroCreate<float> (v8) │
00:00:15 #1110 [Verbose] > │ let v10 : Mut0 = {l0 = 0} : Mut0 │
00:00:15 #1111 [Verbose] > │ while method2(v8, v10) do │
00:00:15 #1112 [Verbose] > │ let v12 : int32 = v10.l0 │
00:00:15 #1113 [Verbose] > │ let v13 : float = v0.[int v12] │
00:00:15 #1114 [Verbose] > │ let v14 : float = v13 / 20.0 │
00:00:15 #1115 [Verbose] > │ let v15 : int32 = int32 v14 │
00:00:15 #1116 [Verbose] > │ let v16 : float = float v15 │
00:00:15 #1117 [Verbose] > │ let v17 : float = v16 * 20.0 │
00:00:15 #1118 [Verbose] > │ let v18 : float = v13 - v17 │
00:00:15 #1119 [Verbose] > │ let v19 : bool = v18 > 0.0 │
00:00:15 #1120 [Verbose] > │ let v21 : bool = │
00:00:15 #1121 [Verbose] > │ if v19 then │
00:00:15 #1122 [Verbose] > │ let v20 : bool = v18 < 10.0 │
00:00:15 #1123 [Verbose] > │ v20 │
00:00:15 #1124 [Verbose] > │ else │
00:00:15 #1125 [Verbose] > │ false │
00:00:15 #1126 [Verbose] > │ let v22 : float = │
00:00:15 #1127 [Verbose] > │ if v21 then │
00:00:15 #1128 [Verbose] > │ 10.0 │
00:00:15 #1129 [Verbose] > │ else │
00:00:15 #1130 [Verbose] > │ 0.0 │
00:00:15 #1131 [Verbose] > │ v9.[int v12] <- v22 │
00:00:15 #1132 [Verbose] > │ let v23 : int32 = v12 + 1 │
00:00:15 #1133 [Verbose] > │ v10.l0 <- v23 │
00:00:15 #1134 [Verbose] > │ () │
00:00:15 #1135 [Verbose] > │ let v24 : string = "force on bike (N)" │
00:00:15 #1136 [Verbose] > │ let v25 : (struct (string * (float []) * (float [])) []) = [|struct │
00:00:15 #1137 [Verbose] > │ (v24, v0, v9)|] │
00:00:15 #1138 [Verbose] > │ let v26 : (struct (string * (float []) * (float [])) []) = method3(v25) │
00:00:15 #1139 [Verbose] > │ let v27 : string = "child pedaling then coasting" │
00:00:15 #1140 [Verbose] > │ let v28 : string = "time (s)" │
00:00:15 #1141 [Verbose] > │ let v29 : string = "" │
00:00:15 #1142 [Verbose] > │ struct (v27, v28, v29, v26) │
00:00:15 #1143 [Verbose] > │ method0() │
00:00:15 #1144 [Verbose] > │ │
00:00:15 #1145 [Verbose] > │ │
00:00:15 #1146 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:15 #1147 [Verbose] >
00:00:15 #1148 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:15 #1149 [Verbose] > // // test
00:00:15 #1150 [Verbose] >
00:00:15 #1151 [Verbose] > inl x = am'.init_series -5 45 1
00:00:15 #1152 [Verbose] > inl y = x |> am.map (position_ft 0.1f64 20 0 0 [[ pedal_coast ]])
00:00:15 #1153 [Verbose] > "child pedaling then coasting", "time (s)", "", ;[[ "position of bike (m)", x, y
00:00:15 #1154 [Verbose] > ]]
00:00:15 #1155 [Verbose] > Building /tmp/!dotnet-repl/20240320-1229-4221-2194-225211e70b44/main.spi
00:00:16 #1156 [Verbose] >
00:00:16 #1157 [Verbose] > ╭─[ 488.19ms - return value ]──────────────────────────────────────────────────╮
00:00:16 #1158 [Verbose] > │ <svg width="640" height="480" viewBox="0 0 640 480" │
00:00:16 #1159 [Verbose] > │ xmlns="http://www.w3.org/2000/svg"> │
00:00:16 #1160 [Verbose] > │ <rect x="0" y="0" width="640" height="480" opacity="1" fill="#141414" │
00:00:16 #1161 [Verbose] > │ stroke="none"/> │
00:00:16 #1162 [Verbose] > │ <text x="320" y="10" dy="0.76em" text-anchor="middle" │
00:00:16 #1163 [Verbose] > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1" │
00:00:16 #1164 [Verbose] > │ fill="#FFFFFF"> │
00:00:16 #1165 [Verbose] > │ child pedaling then coasting │
00:00:16 #1166 [Verbose] > │ </text> │
00:00:16 #1167 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="59" y1="424" x2="59" │
00:00:16 #1168 [Verbose] > │ y2="75"/> │
00:00:16 #1169 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" y1="424" x2="69" │
00:00:16 #1170 [Verbose] > │ y2="75"/> │
00:00:16 #1171 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="79" y1="424" x2="79" │
00:00:16 #1172 [Verbose] > │ y2="75"/> │
00:00:16 #1173 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="89" y1="424" x2="89" │
00:00:16 #1174 [Verbose] > │ y2="75"/> │
00:00:16 #1175 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1=... │
00:00:16 #1176 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:16 #1177 [Verbose] >
00:00:16 #1178 [Verbose] > ╭─[ 491.74ms - stdout ]────────────────────────────────────────────────────────╮
00:00:16 #1179 [Verbose] > │ type Mut0 = {mutable l0 : int32} │
00:00:16 #1180 [Verbose] > │ and UH0 = │
00:00:16 #1181 [Verbose] > │ | UH0_0 of float * UH0 │
00:00:16 #1182 [Verbose] > │ | UH0_1 │
00:00:16 #1183 [Verbose] > │ let rec method1 (v0 : Mut0) : bool = │
00:00:16 #1184 [Verbose] > │ let v1 : int32 = v0.l0 │
00:00:16 #1185 [Verbose] > │ let v2 : bool = v1 < 51 │
00:00:16 #1186 [Verbose] > │ v2 │
00:00:16 #1187 [Verbose] > │ and method2 (v0 : int32, v1 : Mut0) : bool = │
00:00:16 #1188 [Verbose] > │ let v2 : int32 = v1.l0 │
00:00:16 #1189 [Verbose] > │ let v3 : bool = v2 < v0 │
00:00:16 #1190 [Verbose] > │ v3 │
00:00:16 #1191 [Verbose] > │ and method3 (v0 : float, v1 : float) : UH0 = │
00:00:16 #1192 [Verbose] > │ let v2 : bool = v1 < v0 │
00:00:16 #1193 [Verbose] > │ if v2 then │
00:00:16 #1194 [Verbose] > │ let v3 : float = 0.1 * v1 │
00:00:16 #1195 [Verbose] > │ let v4 : float = 0.05 + v3 │
00:00:16 #1196 [Verbose] > │ let v5 : float = v1 + 1.0 │
00:00:16 #1197 [Verbose] > │ let v6 : UH0 = method3(v0, v5) │
00:00:16 #1198 [Verbose] > │ UH0_0(v4, v6) │
00:00:16 #1199 [Verbose] > │ else │
00:00:16 #1200 [Verbose] > │ UH0_1 │
00:00:16 #1201 [Verbose] > │ and method5 (v0 : UH0, v1 : UH0) : UH0 = │
00:00:16 #1202 [Verbose] > │ match v0 with │
00:00:16 #1203 [Verbose] > │ | UH0_0(v2, v3) -> (* Cons *) │
00:00:16 #1204 [Verbose] > │ let v4 : UH0 = method5(v3, v1) │
00:00:16 #1205 [Verbose] > │ let v5 : float = v2 / 20.0 │
00:00:16 #1206 [Verbose] > │ let v6 : int32 = int32 v5 │
00:00:16 #1207 [Verbose] > │ let v7 : float = float v6 │
00:00:16 #1208 [Verbose] > │ let v8 : float = v7 * 20.0 │
00:00:16 #1209 [Verbose] > │ let v9 : float = v2 - v8 │
00:00:16 #1210 [Verbose] > │ let v10 : bool = v9 > 0.0 │
00:00:16 #1211 [Verbose] > │ let v12 : bool = │
00:00:16 #1212 [Verbose] > │ if v10 then │
00:00:16 #1213 [Verbose] > │ let v11 : bool = v9 < 10.0 │
00:00:16 #1214 [Verbose] > │ v11 │
00:00:16 #1215 [Verbose] > │ else │
00:00:16 #1216 [Verbose] > │ false │
00:00:16 #1217 [Verbose] > │ let v13 : float = │
00:00:16 #1218 [Verbose] > │ if v12 then │
00:00:16 #1219 [Verbose] > │ 10.0 │
00:00:16 #1220 [Verbose] > │ else │
00:00:16 #1221 [Verbose] > │ 0.0 │
00:00:16 #1222 [Verbose] > │ let v14 : float = v13 / 20.0 │
00:00:16 #1223 [Verbose] > │ let v15 : float = 0.1 * v14 │
00:00:16 #1224 [Verbose] > │ UH0_0(v15, v4) │
00:00:16 #1225 [Verbose] > │ | UH0_1 -> (* Nil *) │
00:00:16 #1226 [Verbose] > │ v1 │
00:00:16 #1227 [Verbose] > │ and method6 (v0 : UH0, v1 : float) : float = │
00:00:16 #1228 [Verbose] > │ match v0 with │
00:00:16 #1229 [Verbose] > │ | UH0_0(v2, v3) -> (* Cons *) │
00:00:16 #1230 [Verbose] > │ let v4 : float = v1 + v2 │
00:00:16 #1231 [Verbose] > │ method6(v3, v4) │
00:00:16 #1232 [Verbose] > │ | UH0_1 -> (* Nil *) │
00:00:16 #1233 [Verbose] > │ v1 │
00:00:16 #1234 [Verbose] > │ and method4 (v0 : UH0, v1 : UH0) : UH0 = │
00:00:16 #1235 [Verbose] > │ match v0 with │
00:00:16 #1236 [Verbose] > │ | UH0_0(v2, v3) -> (* Cons *) │
00:00:16 #1237 [Verbose] > │ let v4 : UH0 = method4(v3, v1) │
00:00:16 #1238 [Verbose] > │ let v5 : float = v2 - 0.05 │
00:00:16 #1239 [Verbose] > │ let v6 : float = v5 - 0.05 │
00:00:16 #1240 [Verbose] > │ let v7 : float = v6 / 0.1 │
00:00:16 #1241 [Verbose] > │ let v8 : float = v7 + 1.0 │
00:00:16 #1242 [Verbose] > │ let v9 : float = 0.0 │
00:00:16 #1243 [Verbose] > │ let v10 : UH0 = method3(v8, v9) │
00:00:16 #1244 [Verbose] > │ let v11 : UH0 = UH0_1 │
00:00:16 #1245 [Verbose] > │ let v12 : UH0 = method5(v10, v11) │
00:00:16 #1246 [Verbose] > │ let v13 : float = 0.0 │
00:00:16 #1247 [Verbose] > │ let v14 : float = method6(v12, v13) │
00:00:16 #1248 [Verbose] > │ let v15 : float = 0.1 * v14 │
00:00:16 #1249 [Verbose] > │ UH0_0(v15, v4) │
00:00:16 #1250 [Verbose] > │ | UH0_1 -> (* Nil *) │
00:00:16 #1251 [Verbose] > │ v1 │
00:00:16 #1252 [Verbose] > │ and method7 (v0 : (struct (string * (float []) * (float [])) [])) : (struct │
00:00:16 #1253 [Verbose] > │ (string * (float []) * (float [])) []) = │
00:00:16 #1254 [Verbose] > │ v0 │
00:00:16 #1255 [Verbose] > │ and method0 () : struct (string * string * string * (struct (string * (float │
00:00:16 #1256 [Verbose] > │ []) * (float [])) [])) = │
00:00:16 #1257 [Verbose] > │ let v0 : (float []) = Array.zeroCreate<float> (51) │
00:00:16 #1258 [Verbose] > │ let v1 : Mut0 = {l0 = 0} : Mut0 │
00:00:16 #1259 [Verbose] > │ while method1(v1) do │
00:00:16 #1260 [Verbose] > │ let v3 : int32 = v1.l0 │
00:00:16 #1261 [Verbose] > │ let v4 : float = float v3 │
00:00:16 #1262 [Verbose] > │ let v5 : float = -5.0 + v4 │
00:00:16 #1263 [Verbose] > │ v0.[int v3] <- v5 │
00:00:16 #1264 [Verbose] > │ let v6 : int32 = v3 + 1 │
00:00:16 #1265 [Verbose] > │ v1.l0 <- v6 │
00:00:16 #1266 [Verbose] > │ () │
00:00:16 #1267 [Verbose] > │ let v7 : int32 = v0.Length │
00:00:16 #1268 [Verbose] > │ let v8 : (float []) = Array.zeroCreate<float> (v7) │
00:00:16 #1269 [Verbose] > │ let v9 : Mut0 = {l0 = 0} : Mut0 │
00:00:16 #1270 [Verbose] > │ while method2(v7, v9) do │
00:00:16 #1271 [Verbose] > │ let v11 : int32 = v9.l0 │
00:00:16 #1272 [Verbose] > │ let v12 : float = v0.[int v11] │
00:00:16 #1273 [Verbose] > │ let v13 : float = v12 - 0.05 │
00:00:16 #1274 [Verbose] > │ let v14 : float = v13 - 0.05 │
00:00:16 #1275 [Verbose] > │ let v15 : float = v14 / 0.1 │
00:00:16 #1276 [Verbose] > │ let v16 : float = v15 + 1.0 │
00:00:16 #1277 [Verbose] > │ let v17 : float = 0.0 │
00:00:16 #1278 [Verbose] > │ let v18 : UH0 = method3(v16, v17) │
00:00:16 #1279 [Verbose] > │ let v19 : UH0 = UH0_1 │
00:00:16 #1280 [Verbose] > │ let v20 : UH0 = method4(v18, v19) │
00:00:16 #1281 [Verbose] > │ let v21 : float = 0.0 │
00:00:16 #1282 [Verbose] > │ let v22 : float = method6(v20, v21) │
00:00:16 #1283 [Verbose] > │ v8.[int v11] <- v22 │
00:00:16 #1284 [Verbose] > │ let v23 : int32 = v11 + 1 │
00:00:16 #1285 [Verbose] > │ v9.l0 <- v23 │
00:00:16 #1286 [Verbose] > │ () │
00:00:16 #1287 [Verbose] > │ let v24 : string = "position of bike (m)" │
00:00:16 #1288 [Verbose] > │ let v25 : (struct (string * (float []) * (float [])) []) = [|struct │
00:00:16 #1289 [Verbose] > │ (v24, v0, v8)|] │
00:00:16 #1290 [Verbose] > │ let v26 : (struct (string * (float []) * (float [])) []) = method7(v25) │
00:00:16 #1291 [Verbose] > │ let v27 : string = "child pedaling then coasting" │
00:00:16 #1292 [Verbose] > │ let v28 : string = "time (s)" │
00:00:16 #1293 [Verbose] > │ let v29 : string = "" │
00:00:16 #1294 [Verbose] > │ struct (v27, v28, v29, v26) │
00:00:16 #1295 [Verbose] > │ method0() │
00:00:16 #1296 [Verbose] > │ │
00:00:16 #1297 [Verbose] > │ │
00:00:16 #1298 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:16 #1299 [Verbose] >
00:00:16 #1300 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:16 #1301 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:16 #1302 [Verbose] > │ ## velocity_fv │
00:00:16 #1303 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:16 #1304 [Verbose] >
00:00:16 #1305 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:16 #1306 [Verbose] > inl newton_second_v m fs v0 =
00:00:16 #1307 [Verbose] > fs |> listm.map (fun f => f v0) |> listm'.sum |> fun x => x / m
00:00:16 #1308 [Verbose] >
00:00:16 #1309 [Verbose] > inl update_velocity dt m fs v0 =
00:00:16 #1310 [Verbose] > v0 + newton_second_v m fs v0 * dt
00:00:16 #1311 [Verbose] >
00:00:16 #1312 [Verbose] > inl velocity_fv dt m v0 fs t =
00:00:16 #1313 [Verbose] > stream.iterate (update_velocity dt m fs) v0
00:00:16 #1314 [Verbose] > |> stream.try_item (t / dt |> math.round |> abs)
00:00:16 #1315 [Verbose] > |> optionm'.default_value 0
00:00:16 #1316 [Verbose] > Building /tmp/!dotnet-repl/20240320-1229-4272-7237-7075cd241bf3/main.spi
00:00:16 #1317 [Verbose] >
00:00:16 #1318 [Verbose] > ╭─[ 163.59ms - stdout ]────────────────────────────────────────────────────────╮
00:00:16 #1319 [Verbose] > │ () │
00:00:16 #1320 [Verbose] > │ │
00:00:16 #1321 [Verbose] > │ │
00:00:16 #1322 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:16 #1323 [Verbose] >
00:00:16 #1324 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:16 #1325 [Verbose] > inl f_air drag rho area v =
00:00:16 #1326 [Verbose] > -drag * rho * area * abs v * v / 2
00:00:16 #1327 [Verbose] > Building /tmp/!dotnet-repl/20240320-1229-4288-8800-855c9a865edf/main.spi
00:00:16 #1328 [Verbose] >
00:00:16 #1329 [Verbose] > ╭─[ 160.93ms - stdout ]────────────────────────────────────────────────────────╮
00:00:16 #1330 [Verbose] > │ () │
00:00:16 #1331 [Verbose] > │ │
00:00:16 #1332 [Verbose] > │ │
00:00:16 #1333 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:16 #1334 [Verbose] >
00:00:16 #1335 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:16 #1336 [Verbose] > // // test
00:00:16 #1337 [Verbose] >
00:00:16 #1338 [Verbose] > inl x = am'.init_series 0 60 0.5
00:00:16 #1339 [Verbose] > inl y = x |> am.map (velocity_fv 1 70 0f64 [[ fun _ => 100; f_air 2 1.225 0.6
00:00:16 #1340 [Verbose] > ]])
00:00:16 #1341 [Verbose] > "bike velocity", "time (s)", "", ;[[ "velocity of bike (m/s)", x, y ]]
00:00:16 #1342 [Verbose] > Building /tmp/!dotnet-repl/20240320-1229-4304-0414-03e2411af485/main.spi
00:00:16 #1343 [Verbose] >
00:00:16 #1344 [Verbose] > ╭─[ 399.43ms - return value ]──────────────────────────────────────────────────╮
00:00:16 #1345 [Verbose] > │ <svg width="640" height="480" viewBox="0 0 640 480" │
00:00:16 #1346 [Verbose] > │ xmlns="http://www.w3.org/2000/svg"> │
00:00:16 #1347 [Verbose] > │ <rect x="0" y="0" width="640" height="480" opacity="1" fill="#141414" │
00:00:16 #1348 [Verbose] > │ stroke="none"/> │
00:00:16 #1349 [Verbose] > │ <text x="320" y="10" dy="0.76em" text-anchor="middle" │
00:00:16 #1350 [Verbose] > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1" │
00:00:16 #1351 [Verbose] > │ fill="#FFFFFF"> │
00:00:16 #1352 [Verbose] > │ bike velocity │
00:00:16 #1353 [Verbose] > │ </text> │
00:00:16 #1354 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="61" y1="424" x2="61" │
00:00:16 #1355 [Verbose] > │ y2="75"/> │
00:00:16 #1356 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" y1="424" x2="69" │
00:00:16 #1357 [Verbose] > │ y2="75"/> │
00:00:16 #1358 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="78" y1="424" x2="78" │
00:00:16 #1359 [Verbose] > │ y2="75"/> │
00:00:16 #1360 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="86" y1="424" x2="86" │
00:00:16 #1361 [Verbose] > │ y2="75"/> │
00:00:16 #1362 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="94" y1="424" x... │
00:00:16 #1363 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:16 #1364 [Verbose] >
00:00:16 #1365 [Verbose] > ╭─[ 405.66ms - stdout ]────────────────────────────────────────────────────────╮
00:00:16 #1366 [Verbose] > │ type Mut0 = {mutable l0 : int32} │
00:00:16 #1367 [Verbose] > │ and UH0 = │
00:00:16 #1368 [Verbose] > │ | UH0_0 of float * (unit -> UH0) │
00:00:16 #1369 [Verbose] > │ | UH0_1 │
00:00:16 #1370 [Verbose] > │ and [<Struct>] US0 = │
00:00:16 #1371 [Verbose] > │ | US0_0 │
00:00:16 #1372 [Verbose] > │ | US0_1 of f1_0 : float │
00:00:16 #1373 [Verbose] > │ let rec method1 (v0 : Mut0) : bool = │
00:00:16 #1374 [Verbose] > │ let v1 : int32 = v0.l0 │
00:00:16 #1375 [Verbose] > │ let v2 : bool = v1 < 121 │
00:00:16 #1376 [Verbose] > │ v2 │
00:00:16 #1377 [Verbose] > │ and method2 (v0 : int32, v1 : Mut0) : bool = │
00:00:16 #1378 [Verbose] > │ let v2 : int32 = v1.l0 │
00:00:16 #1379 [Verbose] > │ let v3 : bool = v2 < v0 │
00:00:16 #1380 [Verbose] > │ v3 │
00:00:16 #1381 [Verbose] > │ and closure129 () () : UH0 = │
00:00:16 #1382 [Verbose] > │ let v0 : (unit -> UH0) = closure129() │
00:00:16 #1383 [Verbose] > │ UH0_0(11.664236870396083, v0) │
00:00:16 #1384 [Verbose] > │ and closure128 () () : UH0 = │
00:00:16 #1385 [Verbose] > │ let v0 : (unit -> UH0) = closure129() │
00:00:16 #1386 [Verbose] > │ UH0_0(11.664236870396081, v0) │
00:00:16 #1387 [Verbose] > │ and closure127 () () : UH0 = │
00:00:16 #1388 [Verbose] > │ let v0 : (unit -> UH0) = closure128() │
00:00:16 #1389 [Verbose] > │ UH0_0(11.66423687039608, v0) │
00:00:16 #1390 [Verbose] > │ and closure126 () () : UH0 = │
00:00:16 #1391 [Verbose] > │ let v0 : (unit -> UH0) = closure127() │
00:00:16 #1392 [Verbose] > │ UH0_0(11.664236870396078, v0) │
00:00:16 #1393 [Verbose] > │ and closure125 () () : UH0 = │
00:00:16 #1394 [Verbose] > │ let v0 : (unit -> UH0) = closure126() │
00:00:16 #1395 [Verbose] > │ UH0_0(11.664236870396074, v0) │
00:00:16 #1396 [Verbose] > │ and closure124 () () : UH0 = │
00:00:16 #1397 [Verbose] > │ let v0 : (unit -> UH0) = closure125() │
00:00:16 #1398 [Verbose] > │ UH0_0(11.66423687039607, v0) │
00:00:16 #1399 [Verbose] > │ and closure123 () () : UH0 = │
00:00:16 #1400 [Verbose] > │ let v0 : (unit -> UH0) = closure124() │
00:00:16 #1401 [Verbose] > │ UH0_0(11.664236870396065, v0) │
00:00:16 #1402 [Verbose] > │ and closure122 () () : UH0 = │
00:00:16 #1403 [Verbose] > │ let v0 : (unit -> UH0) = closure123() │
00:00:16 #1404 [Verbose] > │ UH0_0(11.664236870396058, v0) │
00:00:16 #1405 [Verbose] > │ and closure121 () () : UH0 = │
00:00:16 #1406 [Verbose] > │ let v0 : (unit -> UH0) = closure122() │
00:00:16 #1407 [Verbose] > │ UH0_0(11.66423687039605, v0) │
00:00:16 #1408 [Verbose] > │ and closure120 () () : UH0 = │
00:00:16 #1409 [Verbose] > │ let v0 : (unit -> UH0) = closure121() │
00:00:16 #1410 [Verbose] > │ UH0_0(11.664236870396037, v0) │
00:00:16 #1411 [Verbose] > │ and closure119 () () : UH0 = │
00:00:16 #1412 [Verbose] > │ let v0 : (unit -> UH0) = closure120() │
00:00:16 #1413 [Verbose] > │ UH0_0(11.66423687039602, v0) │
00:00:16 #1414 [Verbose] > │ and closure118 () () : UH0 = │
00:00:16 #1415 [Verbose] > │ let v0 : (unit -> UH0) = closure119() │
00:00:16 #1416 [Verbose] > │ UH0_0(11.664236870396, v0) │
00:00:16 #1417 [Verbose] > │ and closure117 () () : UH0 = │
00:00:16 #1418 [Verbose] > │ let v0 : (unit -> UH0) = closure118() │
00:00:16 #1419 [Verbose] > │ UH0_0(11.664236870395971, v0) │
00:00:16 #1420 [Verbose] > │ and closure116 () () : UH0 = │
00:00:16 #1421 [Verbose] > │ let v0 : (unit -> UH0) = closure117() │
00:00:16 #1422 [Verbose] > │ UH0_0(11.664236870395934, v0) │
00:00:16 #1423 [Verbose] > │ and closure115 () () : UH0 = │
00:00:16 #1424 [Verbose] > │ let v0 : (unit -> UH0) = closure116() │
00:00:16 #1425 [Verbose] > │ UH0_0(11.664236870395884, v0) │
00:00:16 #1426 [Verbose] > │ and closure114 () () : UH0 = │
00:00:16 #1427 [Verbose] > │ let v0 : (unit -> UH0) = closure115() │
00:00:16 #1428 [Verbose] > │ UH0_0(11.664236870395818, v0) │
00:00:16 #1429 [Verbose] > │ and closure113 () () : UH0 = │
00:00:16 #1430 [Verbose] > │ let v0 : (unit -> UH0) = closure114() │
00:00:16 #1431 [Verbose] > │ UH0_0(11.664236870395731, v0) │
00:00:16 #1432 [Verbose] > │ and closure112 () () : UH0 = │
00:00:16 #1433 [Verbose] > │ let v0 : (unit -> UH0) = closure113() │
00:00:16 #1434 [Verbose] > │ UH0_0(11.664236870395616, v0) │
00:00:16 #1435 [Verbose] > │ and closure111 () () : UH0 = │
00:00:16 #1436 [Verbose] > │ let v0 : (unit -> UH0) = closure112() │
00:00:16 #1437 [Verbose] > │ UH0_0(11.664236870395463, v0) │
00:00:16 #1438 [Verbose] > │ and closure110 () () : UH0 = │
00:00:16 #1439 [Verbose] > │ let v0 : (unit -> UH0) = closure111() │
00:00:16 #1440 [Verbose] > │ UH0_0(11.66423687039526, v0) │
00:00:16 #1441 [Verbose] > │ and closure109 () () : UH0 = │
00:00:16 #1442 [Verbose] > │ let v0 : (unit -> UH0) = closure110() │
00:00:16 #1443 [Verbose] > │ UH0_0(11.664236870394992, v0) │
00:00:16 #1444 [Verbose] > │ and closure108 () () : UH0 = │
00:00:16 #1445 [Verbose] > │ let v0 : (unit -> UH0) = closure109() │
00:00:16 #1446 [Verbose] > │ UH0_0(11.664236870394637, v0) │
00:00:16 #1447 [Verbose] > │ and closure107 () () : UH0 = │
00:00:16 #1448 [Verbose] > │ let v0 : (unit -> UH0) = closure108() │
00:00:16 #1449 [Verbose] > │ UH0_0(11.664236870394168, v0) │
00:00:16 #1450 [Verbose] > │ and closure106 () () : UH0 = │
00:00:16 #1451 [Verbose] > │ let v0 : (unit -> UH0) = closure107() │
00:00:16 #1452 [Verbose] > │ UH0_0(11.664236870393546, v0) │
00:00:16 #1453 [Verbose] > │ and closure105 () () : UH0 = │
00:00:16 #1454 [Verbose] > │ let v0 : (unit -> UH0) = closure106() │
00:00:16 #1455 [Verbose] > │ UH0_0(11.664236870392722, v0) │
00:00:16 #1456 [Verbose] > │ and closure104 () () : UH0 = │
00:00:16 #1457 [Verbose] > │ let v0 : (unit -> UH0) = closure105() │
00:00:16 #1458 [Verbose] > │ UH0_0(11.664236870391631, v0) │
00:00:16 #1459 [Verbose] > │ and closure103 () () : UH0 = │
00:00:16 #1460 [Verbose] > │ let v0 : (unit -> UH0) = closure104() │
00:00:16 #1461 [Verbose] > │ UH0_0(11.664236870390187, v0) │
00:00:16 #1462 [Verbose] > │ and closure102 () () : UH0 = │
00:00:16 #1463 [Verbose] > │ let v0 : (unit -> UH0) = closure103() │
00:00:16 #1464 [Verbose] > │ UH0_0(11.664236870388274, v0) │
00:00:16 #1465 [Verbose] > │ and closure101 () () : UH0 = │
00:00:16 #1466 [Verbose] > │ let v0 : (unit -> UH0) = closure102() │
00:00:16 #1467 [Verbose] > │ UH0_0(11.66423687038574, v0) │
00:00:16 #1468 [Verbose] > │ and closure100 () () : UH0 = │
00:00:16 #1469 [Verbose] > │ let v0 : (unit -> UH0) = closure101() │
00:00:16 #1470 [Verbose] > │ UH0_0(11.664236870382384, v0) │
00:00:16 #1471 [Verbose] > │ and closure99 () () : UH0 = │
00:00:16 #1472 [Verbose] > │ let v0 : (unit -> UH0) = closure100() │
00:00:16 #1473 [Verbose] > │ UH0_0(11.664236870377938, v0) │
00:00:16 #1474 [Verbose] > │ and closure98 () () : UH0 = │
00:00:16 #1475 [Verbose] > │ let v0 : (unit -> UH0) = closure99() │
00:00:16 #1476 [Verbose] > │ UH0_0(11.66423687037205, v0) │
00:00:16 #1477 [Verbose] > │ and closure97 () () : UH0 = │
00:00:16 #1478 [Verbose] > │ let v0 : (unit -> UH0) = closure98() │
00:00:16 #1479 [Verbose] > │ UH0_0(11.664236870364254, v0) │
00:00:16 #1480 [Verbose] > │ and closure96 () () : UH0 = │
00:00:16 #1481 [Verbose] > │ let v0 : (unit -> UH0) = closure97() │
00:00:16 #1482 [Verbose] > │ UH0_0(11.664236870353927, v0) │
00:00:16 #1483 [Verbose] > │ and closure95 () () : UH0 = │
00:00:16 #1484 [Verbose] > │ let v0 : (unit -> UH0) = closure96() │
00:00:16 #1485 [Verbose] > │ UH0_0(11.664236870340249, v0) │
00:00:16 #1486 [Verbose] > │ and closure94 () () : UH0 = │
00:00:16 #1487 [Verbose] > │ let v0 : (unit -> UH0) = closure95() │
00:00:16 #1488 [Verbose] > │ UH0_0(11.664236870322135, v0) │
00:00:16 #1489 [Verbose] > │ and closure93 () () : UH0 = │
00:00:16 #1490 [Verbose] > │ let v0 : (unit -> UH0) = closure94() │
00:00:16 #1491 [Verbose] > │ UH0_0(11.664236870298145, v0) │
00:00:16 #1492 [Verbose] > │ and closure92 () () : UH0 = │
00:00:16 #1493 [Verbose] > │ let v0 : (unit -> UH0) = closure93() │
00:00:16 #1494 [Verbose] > │ UH0_0(11.664236870266372, v0) │
00:00:16 #1495 [Verbose] > │ and closure91 () () : UH0 = │
00:00:16 #1496 [Verbose] > │ let v0 : (unit -> UH0) = closure92() │
00:00:16 #1497 [Verbose] > │ UH0_0(11.664236870224292, v0) │
00:00:16 #1498 [Verbose] > │ and closure90 () () : UH0 = │
00:00:16 #1499 [Verbose] > │ let v0 : (unit -> UH0) = closure91() │
00:00:16 #1500 [Verbose] > │ UH0_0(11.66423687016856, v0) │
00:00:16 #1501 [Verbose] > │ and closure89 () () : UH0 = │
00:00:16 #1502 [Verbose] > │ let v0 : (unit -> UH0) = closure90() │
00:00:16 #1503 [Verbose] > │ UH0_0(11.664236870094747, v0) │
00:00:16 #1504 [Verbose] > │ and closure88 () () : UH0 = │
00:00:16 #1505 [Verbose] > │ let v0 : (unit -> UH0) = closure89() │
00:00:16 #1506 [Verbose] > │ UH0_0(11.664236869996989, v0) │
00:00:16 #1507 [Verbose] > │ and closure87 () () : UH0 = │
00:00:16 #1508 [Verbose] > │ let v0 : (unit -> UH0) = closure88() │
00:00:16 #1509 [Verbose] > │ UH0_0(11.664236869867516, v0) │
00:00:16 #1510 [Verbose] > │ and closure86 () () : UH0 = │
00:00:16 #1511 [Verbose] > │ let v0 : (unit -> UH0) = closure87() │
00:00:16 #1512 [Verbose] > │ UH0_0(11.66423686969604, v0) │
00:00:16 #1513 [Verbose] > │ and closure85 () () : UH0 = │
00:00:16 #1514 [Verbose] > │ let v0 : (unit -> UH0) = closure86() │
00:00:16 #1515 [Verbose] > │ UH0_0(11.664236869468937, v0) │
00:00:16 #1516 [Verbose] > │ and closure84 () () : UH0 = │
00:00:16 #1517 [Verbose] > │ let v0 : (unit -> UH0) = closure85() │
00:00:16 #1518 [Verbose] > │ UH0_0(11.664236869168157, v0) │
00:00:16 #1519 [Verbose] > │ and closure83 () () : UH0 = │
00:00:16 #1520 [Verbose] > │ let v0 : (unit -> UH0) = closure84() │
00:00:16 #1521 [Verbose] > │ UH0_0(11.6642368687698, v0) │
00:00:16 #1522 [Verbose] > │ and closure82 () () : UH0 = │
00:00:16 #1523 [Verbose] > │ let v0 : (unit -> UH0) = closure83() │
00:00:16 #1524 [Verbose] > │ UH0_0(11.664236868242211, v0) │
00:00:16 #1525 [Verbose] > │ and closure81 () () : UH0 = │
00:00:16 #1526 [Verbose] > │ let v0 : (unit -> UH0) = closure82() │
00:00:16 #1527 [Verbose] > │ UH0_0(11.664236867543465, v0) │
00:00:16 #1528 [Verbose] > │ and closure80 () () : UH0 = │
00:00:16 #1529 [Verbose] > │ let v0 : (unit -> UH0) = closure81() │
00:00:16 #1530 [Verbose] > │ UH0_0(11.664236866618037, v0) │
00:00:16 #1531 [Verbose] > │ and closure79 () () : UH0 = │
00:00:16 #1532 [Verbose] > │ let v0 : (unit -> UH0) = closure80() │
00:00:16 #1533 [Verbose] > │ UH0_0(11.664236865392386, v0) │
00:00:16 #1534 [Verbose] > │ and closure78 () () : UH0 = │
00:00:16 #1535 [Verbose] > │ let v0 : (unit -> UH0) = closure79() │
00:00:16 #1536 [Verbose] > │ UH0_0(11.664236863769117, v0) │
00:00:16 #1537 [Verbose] > │ and closure77 () () : UH0 = │
00:00:16 #1538 [Verbose] > │ let v0 : (unit -> UH0) = closure78() │
00:00:16 #1539 [Verbose] > │ UH0_0(11.664236861619237, v0) │
00:00:16 #1540 [Verbose] > │ and closure76 () () : UH0 = │
00:00:16 #1541 [Verbose] > │ let v0 : (unit -> UH0) = closure77() │
00:00:16 #1542 [Verbose] > │ UH0_0(11.664236858771906, v0) │
00:00:16 #1543 [Verbose] > │ and closure75 () () : UH0 = │
00:00:16 #1544 [Verbose] > │ let v0 : (unit -> UH0) = closure76() │
00:00:16 #1545 [Verbose] > │ UH0_0(11.66423685500086, v0) │
00:00:16 #1546 [Verbose] > │ and closure74 () () : UH0 = │
00:00:16 #1547 [Verbose] > │ let v0 : (unit -> UH0) = closure75() │
00:00:16 #1548 [Verbose] > │ UH0_0(11.664236850006436, v0) │
00:00:16 #1549 [Verbose] > │ and closure73 () () : UH0 = │
00:00:16 #1550 [Verbose] > │ let v0 : (unit -> UH0) = closure74() │
00:00:16 #1551 [Verbose] > │ UH0_0(11.664236843391752, v0) │
00:00:16 #1552 [Verbose] > │ and closure72 () () : UH0 = │
00:00:16 #1553 [Verbose] > │ let v0 : (unit -> UH0) = closure73() │
00:00:16 #1554 [Verbose] > │ UH0_0(11.664236834631172, v0) │
00:00:16 #1555 [Verbose] > │ and closure71 () () : UH0 = │
00:00:16 #1556 [Verbose] > │ let v0 : (unit -> UH0) = closure72() │
00:00:16 #1557 [Verbose] > │ UH0_0(11.66423682302854, v0) │
00:00:16 #1558 [Verbose] > │ and closure70 () () : UH0 = │
00:00:16 #1559 [Verbose] > │ let v0 : (unit -> UH0) = closure71() │
00:00:16 #1560 [Verbose] > │ UH0_0(11.664236807661855, v0) │
00:00:16 #1561 [Verbose] > │ and closure69 () () : UH0 = │
00:00:16 #1562 [Verbose] > │ let v0 : (unit -> UH0) = closure70() │
00:00:16 #1563 [Verbose] > │ UH0_0(11.664236787310005, v0) │
00:00:16 #1564 [Verbose] > │ and closure68 () () : UH0 = │
00:00:16 #1565 [Verbose] > │ let v0 : (unit -> UH0) = closure69() │
00:00:16 #1566 [Verbose] > │ UH0_0(11.664236760355733, v0) │
00:00:16 #1567 [Verbose] > │ and closure67 () () : UH0 = │
00:00:16 #1568 [Verbose] > │ let v0 : (unit -> UH0) = closure68() │
00:00:16 #1569 [Verbose] > │ UH0_0(11.664236724657123, v0) │
00:00:16 #1570 [Verbose] > │ and closure66 () () : UH0 = │
00:00:16 #1571 [Verbose] > │ let v0 : (unit -> UH0) = closure67() │
00:00:16 #1572 [Verbose] > │ UH0_0(11.66423667737739, v0) │
00:00:16 #1573 [Verbose] > │ and closure65 () () : UH0 = │
00:00:16 #1574 [Verbose] > │ let v0 : (unit -> UH0) = closure66() │
00:00:16 #1575 [Verbose] > │ UH0_0(11.664236614759462, v0) │
00:00:16 #1576 [Verbose] > │ and closure64 () () : UH0 = │
00:00:16 #1577 [Verbose] > │ let v0 : (unit -> UH0) = closure65() │
00:00:16 #1578 [Verbose] > │ UH0_0(11.664236531827415, v0) │
00:00:16 #1579 [Verbose] > │ and closure63 () () : UH0 = │
00:00:16 #1580 [Verbose] > │ let v0 : (unit -> UH0) = closure64() │
00:00:16 #1581 [Verbose] > │ UH0_0(11.664236421991067, v0) │
00:00:16 #1582 [Verbose] > │ and closure62 () () : UH0 = │
00:00:16 #1583 [Verbose] > │ let v0 : (unit -> UH0) = closure63() │
00:00:16 #1584 [Verbose] > │ UH0_0(11.664236276522294, v0) │
00:00:16 #1585 [Verbose] > │ and closure61 () () : UH0 = │
00:00:16 #1586 [Verbose] > │ let v0 : (unit -> UH0) = closure62() │
00:00:16 #1587 [Verbose] > │ UH0_0(11.664236083861448, v0) │
00:00:16 #1588 [Verbose] > │ and closure60 () () : UH0 = │
00:00:16 #1589 [Verbose] > │ let v0 : (unit -> UH0) = closure61() │
00:00:16 #1590 [Verbose] > │ UH0_0(11.664235828698772, v0) │
00:00:16 #1591 [Verbose] > │ and closure59 () () : UH0 = │
00:00:16 #1592 [Verbose] > │ let v0 : (unit -> UH0) = closure60() │
00:00:16 #1593 [Verbose] > │ UH0_0(11.664235490757811, v0) │
00:00:16 #1594 [Verbose] > │ and closure58 () () : UH0 = │
00:00:16 #1595 [Verbose] > │ let v0 : (unit -> UH0) = closure59() │
00:00:16 #1596 [Verbose] > │ UH0_0(11.664235043184158, v0) │
00:00:16 #1597 [Verbose] > │ and closure57 () () : UH0 = │
00:00:16 #1598 [Verbose] > │ let v0 : (unit -> UH0) = closure58() │
00:00:16 #1599 [Verbose] > │ UH0_0(11.66423445041147, v0) │
00:00:16 #1600 [Verbose] > │ and closure56 () () : UH0 = │
00:00:16 #1601 [Verbose] > │ let v0 : (unit -> UH0) = closure57() │
00:00:16 #1602 [Verbose] > │ UH0_0(11.664233665335203, v0) │
00:00:16 #1603 [Verbose] > │ and closure55 () () : UH0 = │
00:00:16 #1604 [Verbose] > │ let v0 : (unit -> UH0) = closure56() │
00:00:16 #1605 [Verbose] > │ UH0_0(11.664232625569467, v0) │
00:00:16 #1606 [Verbose] > │ and closure54 () () : UH0 = │
00:00:16 #1607 [Verbose] > │ let v0 : (unit -> UH0) = closure55() │
00:00:16 #1608 [Verbose] > │ UH0_0(11.664231248489562, v0) │
00:00:16 #1609 [Verbose] > │ and closure53 () () : UH0 = │
00:00:16 #1610 [Verbose] > │ let v0 : (unit -> UH0) = closure54() │
00:00:16 #1611 [Verbose] > │ UH0_0(11.664229424666262, v0) │
00:00:16 #1612 [Verbose] > │ and closure52 () () : UH0 = │
00:00:16 #1613 [Verbose] > │ let v0 : (unit -> UH0) = closure53() │
00:00:16 #1614 [Verbose] > │ UH0_0(11.66422700917009, v0) │
00:00:16 #1615 [Verbose] > │ and closure51 () () : UH0 = │
00:00:16 #1616 [Verbose] > │ let v0 : (unit -> UH0) = closure52() │
00:00:16 #1617 [Verbose] > │ UH0_0(11.664223810054642, v0) │
00:00:16 #1618 [Verbose] > │ and closure50 () () : UH0 = │
00:00:16 #1619 [Verbose] > │ let v0 : (unit -> UH0) = closure51() │
00:00:16 #1620 [Verbose] > │ UH0_0(11.664219573103773, v0) │
00:00:16 #1621 [Verbose] > │ and closure49 () () : UH0 = │
00:00:16 #1622 [Verbose] > │ let v0 : (unit -> UH0) = closure50() │
00:00:16 #1623 [Verbose] > │ UH0_0(11.6642139616307, v0) │
00:00:16 #1624 [Verbose] > │ and closure48 () () : UH0 = │
00:00:16 #1625 [Verbose] > │ let v0 : (unit -> UH0) = closure49() │
00:00:16 #1626 [Verbose] > │ UH0_0(11.664206529723813, v0) │
00:00:16 #1627 [Verbose] > │ and closure47 () () : UH0 = │
00:00:16 #1628 [Verbose] > │ let v0 : (unit -> UH0) = closure48() │
00:00:16 #1629 [Verbose] > │ UH0_0(11.664196686813408, v0) │
00:00:16 #1630 [Verbose] > │ and closure46 () () : UH0 = │
00:00:16 #1631 [Verbose] > │ let v0 : (unit -> UH0) = closure47() │
00:00:16 #1632 [Verbose] > │ UH0_0(11.664183650743945, v0) │
00:00:16 #1633 [Verbose] > │ and closure45 () () : UH0 = │
00:00:16 #1634 [Verbose] > │ let v0 : (unit -> UH0) = closure46() │
00:00:16 #1635 [Verbose] > │ UH0_0(11.664166385623318, v0) │
00:00:16 #1636 [Verbose] > │ and closure44 () () : UH0 = │
00:00:16 #1637 [Verbose] > │ let v0 : (unit -> UH0) = closure45() │
00:00:16 #1638 [Verbose] > │ UH0_0(11.664143519511356, v0) │
00:00:16 #1639 [Verbose] > │ and closure43 () () : UH0 = │
00:00:16 #1640 [Verbose] > │ let v0 : (unit -> UH0) = closure44() │
00:00:16 #1641 [Verbose] > │ UH0_0(11.664113235408447, v0) │
00:00:16 #1642 [Verbose] > │ and closure42 () () : UH0 = │
00:00:16 #1643 [Verbose] > │ let v0 : (unit -> UH0) = closure43() │
00:00:16 #1644 [Verbose] > │ UH0_0(11.66407312688485, v0) │
00:00:16 #1645 [Verbose] > │ and closure41 () () : UH0 = │
00:00:16 #1646 [Verbose] > │ let v0 : (unit -> UH0) = closure42() │
00:00:16 #1647 [Verbose] > │ UH0_0(11.664020006883758, v0) │
00:00:16 #1648 [Verbose] > │ and closure40 () () : UH0 = │
00:00:16 #1649 [Verbose] > │ let v0 : (unit -> UH0) = closure41() │
00:00:16 #1650 [Verbose] > │ UH0_0(11.663949654514292, v0) │
00:00:16 #1651 [Verbose] > │ and closure39 () () : UH0 = │
00:00:16 #1652 [Verbose] > │ let v0 : (unit -> UH0) = closure40() │
00:00:16 #1653 [Verbose] > │ UH0_0(11.663856479730171, v0) │
00:00:16 #1654 [Verbose] > │ and closure38 () () : UH0 = │
00:00:16 #1655 [Verbose] > │ let v0 : (unit -> UH0) = closure39() │
00:00:16 #1656 [Verbose] > │ UH0_0(11.663733079277343, v0) │
00:00:16 #1657 [Verbose] > │ and closure37 () () : UH0 = │
00:00:16 #1658 [Verbose] > │ let v0 : (unit -> UH0) = closure38() │
00:00:16 #1659 [Verbose] > │ UH0_0(11.663569648675777, v0) │
00:00:16 #1660 [Verbose] > │ and closure36 () () : UH0 = │
00:00:16 #1661 [Verbose] > │ let v0 : (unit -> UH0) = closure37() │
00:00:16 #1662 [Verbose] > │ UH0_0(11.663353203599439, v0) │
00:00:16 #1663 [Verbose] > │ and closure35 () () : UH0 = │
00:00:16 #1664 [Verbose] > │ let v0 : (unit -> UH0) = closure36() │
00:00:16 #1665 [Verbose] > │ UH0_0(11.663066548940721, v0) │
00:00:16 #1666 [Verbose] > │ and closure34 () () : UH0 = │
00:00:16 #1667 [Verbose] > │ let v0 : (unit -> UH0) = closure35() │
00:00:16 #1668 [Verbose] > │ UH0_0(11.662686913915445, v0) │
00:00:16 #1669 [Verbose] > │ and closure33 () () : UH0 = │
00:00:16 #1670 [Verbose] > │ let v0 : (unit -> UH0) = closure34() │
00:00:16 #1671 [Verbose] > │ UH0_0(11.662184145236864, v0) │
00:00:16 #1672 [Verbose] > │ and closure32 () () : UH0 = │
00:00:16 #1673 [Verbose] > │ let v0 : (unit -> UH0) = closure33() │
00:00:16 #1674 [Verbose] > │ UH0_0(11.661518315638029, v0) │
00:00:16 #1675 [Verbose] > │ and closure31 () () : UH0 = │
00:00:16 #1676 [Verbose] > │ let v0 : (unit -> UH0) = closure32() │
00:00:16 #1677 [Verbose] > │ UH0_0(11.66063655920926, v0) │
00:00:16 #1678 [Verbose] > │ and closure30 () () : UH0 = │
00:00:16 #1679 [Verbose] > │ let v0 : (unit -> UH0) = closure31() │
00:00:16 #1680 [Verbose] > │ UH0_0(11.659468884709733, v0) │
00:00:16 #1681 [Verbose] > │ and closure29 () () : UH0 = │
00:00:16 #1682 [Verbose] > │ let v0 : (unit -> UH0) = closure30() │
00:00:16 #1683 [Verbose] > │ UH0_0(11.657922638782631, v0) │
00:00:16 #1684 [Verbose] > │ and closure28 () () : UH0 = │
00:00:16 #1685 [Verbose] > │ let v0 : (unit -> UH0) = closure29() │
00:00:16 #1686 [Verbose] > │ UH0_0(11.655875187195818, v0) │
00:00:16 #1687 [Verbose] > │ and closure27 () () : UH0 = │
00:00:16 #1688 [Verbose] > │ let v0 : (unit -> UH0) = closure28() │
00:00:16 #1689 [Verbose] > │ UH0_0(11.653164246713697, v0) │
00:00:16 #1690 [Verbose] > │ and closure26 () () : UH0 = │
00:00:16 #1691 [Verbose] > │ let v0 : (unit -> UH0) = closure27() │
00:00:16 #1692 [Verbose] > │ UH0_0(11.64957512416459, v0) │
00:00:16 #1693 [Verbose] > │ and closure25 () () : UH0 = │
00:00:16 #1694 [Verbose] > │ let v0 : (unit -> UH0) = closure26() │
00:00:16 #1695 [Verbose] > │ UH0_0(11.644823892116417, v0) │
00:00:16 #1696 [Verbose] > │ and closure24 () () : UH0 = │
00:00:16 #1697 [Verbose] > │ let v0 : (unit -> UH0) = closure25() │
00:00:16 #1698 [Verbose] > │ UH0_0(11.63853524018339, v0) │
00:00:16 #1699 [Verbose] > │ and closure23 () () : UH0 = │
00:00:16 #1700 [Verbose] > │ let v0 : (unit -> UH0) = closure24() │
00:00:16 #1701 [Verbose] > │ UH0_0(11.630213374558416, v0) │
00:00:16 #1702 [Verbose] > │ and closure22 () () : UH0 = │
00:00:16 #1703 [Verbose] > │ let v0 : (unit -> UH0) = closure23() │
00:00:16 #1704 [Verbose] > │ UH0_0(11.619203884549703, v0) │
00:00:16 #1705 [Verbose] > │ and closure21 () () : UH0 = │
00:00:16 #1706 [Verbose] > │ let v0 : (unit -> UH0) = closure22() │
00:00:16 #1707 [Verbose] > │ UH0_0(11.604643948207235, v0) │
00:00:16 #1708 [Verbose] > │ and closure20 () () : UH0 = │
00:00:16 #1709 [Verbose] > │ let v0 : (unit -> UH0) = closure21() │
00:00:16 #1710 [Verbose] > │ UH0_0(11.585397618384544, v0) │
00:00:16 #1711 [Verbose] > │ and closure19 () () : UH0 = │
00:00:16 #1712 [Verbose] > │ let v0 : (unit -> UH0) = closure20() │
00:00:16 #1713 [Verbose] > │ UH0_0(11.559972254267073, v0) │
00:00:16 #1714 [Verbose] > │ and closure18 () () : UH0 = │
00:00:16 #1715 [Verbose] > │ let v0 : (unit -> UH0) = closure19() │
00:00:16 #1716 [Verbose] > │ UH0_0(11.526411536153837, v0) │
00:00:16 #1717 [Verbose] > │ and closure17 () () : UH0 = │
00:00:16 #1718 [Verbose] > │ let v0 : (unit -> UH0) = closure18() │
00:00:16 #1719 [Verbose] > │ UH0_0(11.48216011776808, v0) │
00:00:16 #1720 [Verbose] > │ and closure16 () () : UH0 = │
00:00:16 #1721 [Verbose] > │ let v0 : (unit -> UH0) = closure17() │
00:00:16 #1722 [Verbose] > │ UH0_0(11.42389519391233, v0) │
00:00:16 #1723 [Verbose] > │ and closure15 () () : UH0 = │
00:00:16 #1724 [Verbose] > │ let v0 : (unit -> UH0) = closure16() │
00:00:16 #1725 [Verbose] > │ UH0_0(11.347321723441393, v0) │
00:00:16 #1726 [Verbose] > │ and closure14 () () : UH0 = │
00:00:16 #1727 [Verbose] > │ let v0 : (unit -> UH0) = closure15() │
00:00:16 #1728 [Verbose] > │ UH0_0(11.246931775734161, v0) │
00:00:16 #1729 [Verbose] > │ and closure13 () () : UH0 = │
00:00:16 #1730 [Verbose] > │ let v0 : (unit -> UH0) = closure14() │
00:00:16 #1731 [Verbose] > │ UH0_0(11.115736011467376, v0) │
00:00:16 #1732 [Verbose] > │ and closure12 () () : UH0 = │
00:00:16 #1733 [Verbose] > │ let v0 : (unit -> UH0) = closure13() │
00:00:16 #1734 [Verbose] > │ UH0_0(10.94498876251829, v0) │
00:00:16 #1735 [Verbose] > │ and closure11 () () : UH0 = │
00:00:16 #1736 [Verbose] > │ let v0 : (unit -> UH0) = closure12() │
00:00:16 #1737 [Verbose] > │ UH0_0(10.72394989903564, v0) │
00:00:16 #1738 [Verbose] > │ and closure10 () () : UH0 = │
00:00:16 #1739 [Verbose] > │ let v0 : (unit -> UH0) = closure11() │
00:00:16 #1740 [Verbose] > │ UH0_0(10.439758275369812, v0) │
00:00:16 #1741 [Verbose] > │ and closure9 () () : UH0 = │
00:00:16 #1742 [Verbose] > │ let v0 : (unit -> UH0) = closure10() │
00:00:16 #1743 [Verbose] > │ UH0_0(10.077531599826058, v0) │
00:00:16 #1744 [Verbose] > │ and closure8 () () : UH0 = │
00:00:16 #1745 [Verbose] > │ let v0 : (unit -> UH0) = closure9() │
00:00:16 #1746 [Verbose] > │ UH0_0(9.62084761372258, v0) │
00:00:16 #1747 [Verbose] > │ and closure7 () () : UH0 = │
00:00:16 #1748 [Verbose] > │ let v0 : (unit -> UH0) = closure8() │
00:00:16 #1749 [Verbose] > │ UH0_0(9.052781056066443, v0) │
00:00:16 #1750 [Verbose] > │ and closure6 () () : UH0 = │
00:00:16 #1751 [Verbose] > │ let v0 : (unit -> UH0) = closure7() │
00:00:16 #1752 [Verbose] > │ UH0_0(8.357635347880503, v0) │
00:00:16 #1753 [Verbose] > │ and closure5 () () : UH0 = │
00:00:16 #1754 [Verbose] > │ let v0 : (unit -> UH0) = closure6() │
00:00:16 #1755 [Verbose] > │ UH0_0(7.523376447621674, v0) │
00:00:16 #1756 [Verbose] > │ and closure4 () () : UH0 = │
00:00:16 #1757 [Verbose] > │ let v0 : (unit -> UH0) = closure5() │
00:00:16 #1758 [Verbose] > │ UH0_0(6.544529054818572, v0) │
00:00:16 #1759 [Verbose] > │ and closure3 () () : UH0 = │
00:00:16 #1760 [Verbose] > │ let v0 : (unit -> UH0) = closure4() │
00:00:16 #1761 [Verbose] > │ UH0_0(5.424976512996006, v0) │
00:00:16 #1762 [Verbose] > │ and closure2 () () : UH0 = │
00:00:16 #1763 [Verbose] > │ let v0 : (unit -> UH0) = closure3() │
00:00:16 #1764 [Verbose] > │ UH0_0(4.179852321428571, v0) │
00:00:16 #1765 [Verbose] > │ and closure1 () () : UH0 = │
00:00:16 #1766 [Verbose] > │ let v0 : (unit -> UH0) = closure2() │
00:00:16 #1767 [Verbose] > │ UH0_0(2.835714285714286, v0) │
00:00:16 #1768 [Verbose] > │ and closure0 () () : UH0 = │
00:00:16 #1769 [Verbose] > │ let v0 : (unit -> UH0) = closure1() │
00:00:16 #1770 [Verbose] > │ UH0_0(1.4285714285714286, v0) │
00:00:16 #1771 [Verbose] > │ and method3 (v0 : float, v1 : UH0) : US0 = │
00:00:16 #1772 [Verbose] > │ match v1 with │
00:00:16 #1773 [Verbose] > │ | UH0_0(v2, v3) -> (* StreamCons *) │
00:00:16 #1774 [Verbose] > │ let v4 : bool = v0 <= 0.0 │
00:00:16 #1775 [Verbose] > │ if v4 then │
00:00:16 #1776 [Verbose] > │ US0_1(v2) │
00:00:16 #1777 [Verbose] > │ else │
00:00:16 #1778 [Verbose] > │ let v6 : float = v0 - 1.0 │
00:00:16 #1779 [Verbose] > │ let v7 : UH0 = v3 () │
00:00:16 #1780 [Verbose] > │ method3(v6, v7) │
00:00:16 #1781 [Verbose] > │ | UH0_1 -> (* StreamNil *) │
00:00:16 #1782 [Verbose] > │ US0_0 │
00:00:16 #1783 [Verbose] > │ and method4 (v0 : (struct (string * (float []) * (float [])) [])) : (struct │
00:00:16 #1784 [Verbose] > │ (string * (float []) * (float [])) []) = │
00:00:16 #1785 [Verbose] > │ v0 │
00:00:16 #1786 [Verbose] > │ and method0 () : struct (string * string * string * (struct (string * (float │
00:00:16 #1787 [Verbose] > │ []) * (float [])) [])) = │
00:00:16 #1788 [Verbose] > │ let v0 : (float []) = Array.zeroCreate<float> (121) │
00:00:16 #1789 [Verbose] > │ let v1 : Mut0 = {l0 = 0} : Mut0 │
00:00:16 #1790 [Verbose] > │ while method1(v1) do │
00:00:16 #1791 [Verbose] > │ let v3 : int32 = v1.l0 │
00:00:16 #1792 [Verbose] > │ let v4 : float = float v3 │
00:00:16 #1793 [Verbose] > │ let v5 : float = 0.5 * v4 │
00:00:16 #1794 [Verbose] > │ v0.[int v3] <- v5 │
00:00:16 #1795 [Verbose] > │ let v6 : int32 = v3 + 1 │
00:00:16 #1796 [Verbose] > │ v1.l0 <- v6 │
00:00:16 #1797 [Verbose] > │ () │
00:00:16 #1798 [Verbose] > │ let v7 : int32 = v0.Length │
00:00:16 #1799 [Verbose] > │ let v8 : (float []) = Array.zeroCreate<float> (v7) │
00:00:16 #1800 [Verbose] > │ let v9 : Mut0 = {l0 = 0} : Mut0 │
00:00:16 #1801 [Verbose] > │ while method2(v7, v9) do │
00:00:16 #1802 [Verbose] > │ let v11 : int32 = v9.l0 │
00:00:16 #1803 [Verbose] > │ let v12 : float = v0.[int v11] │
00:00:16 #1804 [Verbose] > │ let v13 : float = round v12 │
00:00:16 #1805 [Verbose] > │ let v14 : float = -v13 │
00:00:16 #1806 [Verbose] > │ let v15 : bool = v13 >= v14 │
00:00:16 #1807 [Verbose] > │ let v16 : float = │
00:00:16 #1808 [Verbose] > │ if v15 then │
00:00:16 #1809 [Verbose] > │ v13 │
00:00:16 #1810 [Verbose] > │ else │
00:00:16 #1811 [Verbose] > │ v14 │
00:00:16 #1812 [Verbose] > │ let v17 : float = 0.0 │
00:00:16 #1813 [Verbose] > │ let v18 : (unit -> UH0) = closure0() │
00:00:16 #1814 [Verbose] > │ let v19 : UH0 = UH0_0(v17, v18) │
00:00:16 #1815 [Verbose] > │ let v20 : US0 = method3(v16, v19) │
00:00:16 #1816 [Verbose] > │ let v23 : float = │
00:00:16 #1817 [Verbose] > │ match v20 with │
00:00:16 #1818 [Verbose] > │ | US0_0 -> (* None *) │
00:00:16 #1819 [Verbose] > │ 0.0 │
00:00:16 #1820 [Verbose] > │ | US0_1(v21) -> (* Some *) │
00:00:16 #1821 [Verbose] > │ v21 │
00:00:16 #1822 [Verbose] > │ v8.[int v11] <- v23 │
00:00:16 #1823 [Verbose] > │ let v24 : int32 = v11 + 1 │
00:00:16 #1824 [Verbose] > │ v9.l0 <- v24 │
00:00:16 #1825 [Verbose] > │ () │
00:00:16 #1826 [Verbose] > │ let v25 : string = "velocity of bike (m/s)" │
00:00:16 #1827 [Verbose] > │ let v26 : (struct (string * (float []) * (float [])) []) = [|struct │
00:00:16 #1828 [Verbose] > │ (v25, v0, v8)|] │
00:00:16 #1829 [Verbose] > │ let v27 : (struct (string * (float []) * (float [])) []) = method4(v26) │
00:00:16 #1830 [Verbose] > │ let v28 : string = "bike velocity" │
00:00:16 #1831 [Verbose] > │ let v29 : string = "time (s)" │
00:00:16 #1832 [Verbose] > │ let v30 : string = "" │
00:00:16 #1833 [Verbose] > │ struct (v28, v29, v30, v27) │
00:00:16 #1834 [Verbose] > │ method0() │
00:00:16 #1835 [Verbose] > │ │
00:00:16 #1836 [Verbose] > │ │
00:00:16 #1837 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:16 #1838 [Verbose] >
00:00:16 #1839 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:16 #1840 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:16 #1841 [Verbose] > │ ## velocity_ftv │
00:00:16 #1842 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:16 #1843 [Verbose] >
00:00:16 #1844 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:16 #1845 [Verbose] > inl newton_second_tv m fs (t, v0) =
00:00:16 #1846 [Verbose] > inl f_net = fs |> listm.map (fun f => f (t, v0)) |> listm'.sum
00:00:16 #1847 [Verbose] > inl acc = f_net / m
00:00:16 #1848 [Verbose] > 1, acc
00:00:16 #1849 [Verbose] >
00:00:16 #1850 [Verbose] > inl update_tv dt m fs (t, v0) =
00:00:16 #1851 [Verbose] > inl dtdt, dvdt = newton_second_tv m fs (t, v0)
00:00:16 #1852 [Verbose] > t + dtdt * dt, v0 + dvdt * dt
00:00:16 #1853 [Verbose] >
00:00:16 #1854 [Verbose] > inl velocity_ftv dt m tv0 fs t =
00:00:16 #1855 [Verbose] > stream.iterate (join update_tv dt m fs) tv0
00:00:16 #1856 [Verbose] > |> stream.try_item (t / dt |> math.round |> abs)
00:00:16 #1857 [Verbose] > |> optionm.map snd
00:00:16 #1858 [Verbose] > |> optionm'.default_value 0
00:00:16 #1859 [Verbose] > Building /tmp/!dotnet-repl/20240320-1229-4347-4710-44b8956a9da2/main.spi
00:00:17 #1860 [Verbose] >
00:00:17 #1861 [Verbose] > ╭─[ 209.46ms - stdout ]────────────────────────────────────────────────────────╮
00:00:17 #1862 [Verbose] > │ () │
00:00:17 #1863 [Verbose] > │ │
00:00:17 #1864 [Verbose] > │ │
00:00:17 #1865 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:17 #1866 [Verbose] >
00:00:17 #1867 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:17 #1868 [Verbose] > // // test
00:00:17 #1869 [Verbose] >
00:00:17 #1870 [Verbose] > inl x = am'.init_series 0 100 0.1
00:00:17 #1871 [Verbose] > inl y =
00:00:17 #1872 [Verbose] > x
00:00:17 #1873 [Verbose] > |> am.map (
00:00:17 #1874 [Verbose] > velocity_ftv 0.1 20 (dyn (0, 0)) [[ fun (t, _) => pedal_coast t; fun (_,
00:00:17 #1875 [Verbose] > v) => f_air 2 1.225 0.5 v ]]
00:00:17 #1876 [Verbose] > )
00:00:17 #1877 [Verbose] > "pedaling and coasting with air", "time (s)", "", ;[[ "velocity of bike (m/s)",
00:00:17 #1878 [Verbose] > x, y ]]
00:00:17 #1879 [Verbose] > Building /tmp/!dotnet-repl/20240320-1229-4368-6814-6da198d80a65/main.spi
00:00:17 #1880 [Verbose] >
00:00:17 #1881 [Verbose] > ╭─[ 344.28ms - return value ]──────────────────────────────────────────────────╮
00:00:17 #1882 [Verbose] > │ <svg width="640" height="480" viewBox="0 0 640 480" │
00:00:17 #1883 [Verbose] > │ xmlns="http://www.w3.org/2000/svg"> │
00:00:17 #1884 [Verbose] > │ <rect x="0" y="0" width="640" height="480" opacity="1" fill="#141414" │
00:00:17 #1885 [Verbose] > │ stroke="none"/> │
00:00:17 #1886 [Verbose] > │ <text x="320" y="10" dy="0.76em" text-anchor="middle" │
00:00:17 #1887 [Verbose] > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1" │
00:00:17 #1888 [Verbose] > │ fill="#FFFFFF"> │
00:00:17 #1889 [Verbose] > │ pedaling and coasting with air │
00:00:17 #1890 [Verbose] > │ </text> │
00:00:17 #1891 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="59" y1="424" x2="59" │
00:00:17 #1892 [Verbose] > │ y2="75"/> │
00:00:17 #1893 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" y1="424" x2="69" │
00:00:17 #1894 [Verbose] > │ y2="75"/> │
00:00:17 #1895 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="79" y1="424" x2="79" │
00:00:17 #1896 [Verbose] > │ y2="75"/> │
00:00:17 #1897 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="89" y1="424" x2="89" │
00:00:17 #1898 [Verbose] > │ y2="75"/> │
00:00:17 #1899 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x... │
00:00:17 #1900 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:17 #1901 [Verbose] >
00:00:17 #1902 [Verbose] > ╭─[ 347.70ms - stdout ]────────────────────────────────────────────────────────╮
00:00:17 #1903 [Verbose] > │ type Mut0 = {mutable l0 : int32} │
00:00:17 #1904 [Verbose] > │ and UH0 = │
00:00:17 #1905 [Verbose] > │ | UH0_0 of float * float * (unit -> UH0) │
00:00:17 #1906 [Verbose] > │ | UH0_1 │
00:00:17 #1907 [Verbose] > │ and [<Struct>] US0 = │
00:00:17 #1908 [Verbose] > │ | US0_0 │
00:00:17 #1909 [Verbose] > │ | US0_1 of f1_0 : float * f1_1 : float │
00:00:17 #1910 [Verbose] > │ and [<Struct>] US1 = │
00:00:17 #1911 [Verbose] > │ | US1_0 │
00:00:17 #1912 [Verbose] > │ | US1_1 of f1_0 : float │
00:00:17 #1913 [Verbose] > │ let rec method1 (v0 : Mut0) : bool = │
00:00:17 #1914 [Verbose] > │ let v1 : int32 = v0.l0 │
00:00:17 #1915 [Verbose] > │ let v2 : bool = v1 < 1001 │
00:00:17 #1916 [Verbose] > │ v2 │
00:00:17 #1917 [Verbose] > │ and method2 (v0 : int32, v1 : Mut0) : bool = │
00:00:17 #1918 [Verbose] > │ let v2 : int32 = v1.l0 │
00:00:17 #1919 [Verbose] > │ let v3 : bool = v2 < v0 │
00:00:17 #1920 [Verbose] > │ v3 │
00:00:17 #1921 [Verbose] > │ and closure0 () struct (v0 : float, v1 : float) : struct (float * float) = │
00:00:17 #1922 [Verbose] > │ let v2 : float = -v1 │
00:00:17 #1923 [Verbose] > │ let v3 : bool = v1 >= v2 │
00:00:17 #1924 [Verbose] > │ let v4 : float = │
00:00:17 #1925 [Verbose] > │ if v3 then │
00:00:17 #1926 [Verbose] > │ v1 │
00:00:17 #1927 [Verbose] > │ else │
00:00:17 #1928 [Verbose] > │ v2 │
00:00:17 #1929 [Verbose] > │ let v5 : float = -1.225 * v4 │
00:00:17 #1930 [Verbose] > │ let v6 : float = v5 * v1 │
00:00:17 #1931 [Verbose] > │ let v7 : float = v6 / 2.0 │
00:00:17 #1932 [Verbose] > │ let v8 : float = v0 / 20.0 │
00:00:17 #1933 [Verbose] > │ let v9 : int32 = int32 v8 │
00:00:17 #1934 [Verbose] > │ let v10 : float = float v9 │
00:00:17 #1935 [Verbose] > │ let v11 : float = v10 * 20.0 │
00:00:17 #1936 [Verbose] > │ let v12 : float = v0 - v11 │
00:00:17 #1937 [Verbose] > │ let v13 : bool = v12 > 0.0 │
00:00:17 #1938 [Verbose] > │ let v15 : bool = │
00:00:17 #1939 [Verbose] > │ if v13 then │
00:00:17 #1940 [Verbose] > │ let v14 : bool = v12 < 10.0 │
00:00:17 #1941 [Verbose] > │ v14 │
00:00:17 #1942 [Verbose] > │ else │
00:00:17 #1943 [Verbose] > │ false │
00:00:17 #1944 [Verbose] > │ let v16 : float = │
00:00:17 #1945 [Verbose] > │ if v15 then │
00:00:17 #1946 [Verbose] > │ 10.0 │
00:00:17 #1947 [Verbose] > │ else │
00:00:17 #1948 [Verbose] > │ 0.0 │
00:00:17 #1949 [Verbose] > │ let v17 : float = v16 + v7 │
00:00:17 #1950 [Verbose] > │ let v18 : float = v17 / 20.0 │
00:00:17 #1951 [Verbose] > │ let v19 : float = v0 + 0.1 │
00:00:17 #1952 [Verbose] > │ let v20 : float = v18 * 0.1 │
00:00:17 #1953 [Verbose] > │ let v21 : float = v1 + v20 │
00:00:17 #1954 [Verbose] > │ struct (v19, v21) │
00:00:17 #1955 [Verbose] > │ and method3 () : (struct (float * float) -> struct (float * float)) = │
00:00:17 #1956 [Verbose] > │ closure0() │
00:00:17 #1957 [Verbose] > │ and closure1 (v0 : (struct (float * float) -> struct (float * float)), v1 : │
00:00:17 #1958 [Verbose] > │ float, v2 : float, v3 : float, v4 : float) () : UH0 = │
00:00:17 #1959 [Verbose] > │ let struct (v5 : float, v6 : float) = v0 struct (v3, v4) │
00:00:17 #1960 [Verbose] > │ let v7 : (unit -> UH0) = closure1(v0, v1, v2, v5, v6) │
00:00:17 #1961 [Verbose] > │ UH0_0(v3, v4, v7) │
00:00:17 #1962 [Verbose] > │ and method4 (v0 : float, v1 : UH0) : US0 = │
00:00:17 #1963 [Verbose] > │ match v1 with │
00:00:17 #1964 [Verbose] > │ | UH0_0(v2, v3, v4) -> (* StreamCons *) │
00:00:17 #1965 [Verbose] > │ let v5 : bool = v0 <= 0.0 │
00:00:17 #1966 [Verbose] > │ if v5 then │
00:00:17 #1967 [Verbose] > │ US0_1(v2, v3) │
00:00:17 #1968 [Verbose] > │ else │
00:00:17 #1969 [Verbose] > │ let v7 : float = v0 - 1.0 │
00:00:17 #1970 [Verbose] > │ let v8 : UH0 = v4 () │
00:00:17 #1971 [Verbose] > │ method4(v7, v8) │
00:00:17 #1972 [Verbose] > │ | UH0_1 -> (* StreamNil *) │
00:00:17 #1973 [Verbose] > │ US0_0 │
00:00:17 #1974 [Verbose] > │ and method5 (v0 : (struct (string * (float []) * (float [])) [])) : (struct │
00:00:17 #1975 [Verbose] > │ (string * (float []) * (float [])) []) = │
00:00:17 #1976 [Verbose] > │ v0 │
00:00:17 #1977 [Verbose] > │ and method0 () : struct (string * string * string * (struct (string * (float │
00:00:17 #1978 [Verbose] > │ []) * (float [])) [])) = │
00:00:17 #1979 [Verbose] > │ let v0 : (float []) = Array.zeroCreate<float> (1001) │
00:00:17 #1980 [Verbose] > │ let v1 : Mut0 = {l0 = 0} : Mut0 │
00:00:17 #1981 [Verbose] > │ while method1(v1) do │
00:00:17 #1982 [Verbose] > │ let v3 : int32 = v1.l0 │
00:00:17 #1983 [Verbose] > │ let v4 : float = float v3 │
00:00:17 #1984 [Verbose] > │ let v5 : float = 0.1 * v4 │
00:00:17 #1985 [Verbose] > │ v0.[int v3] <- v5 │
00:00:17 #1986 [Verbose] > │ let v6 : int32 = v3 + 1 │
00:00:17 #1987 [Verbose] > │ v1.l0 <- v6 │
00:00:17 #1988 [Verbose] > │ () │
00:00:17 #1989 [Verbose] > │ let v7 : float = 0.0 │
00:00:17 #1990 [Verbose] > │ let v8 : float = 0.0 │
00:00:17 #1991 [Verbose] > │ let v9 : int32 = v0.Length │
00:00:17 #1992 [Verbose] > │ let v10 : (float []) = Array.zeroCreate<float> (v9) │
00:00:17 #1993 [Verbose] > │ let v11 : Mut0 = {l0 = 0} : Mut0 │
00:00:17 #1994 [Verbose] > │ while method2(v9, v11) do │
00:00:17 #1995 [Verbose] > │ let v13 : int32 = v11.l0 │
00:00:17 #1996 [Verbose] > │ let v14 : float = v0.[int v13] │
00:00:17 #1997 [Verbose] > │ let v15 : (struct (float * float) -> struct (float * float)) = │
00:00:17 #1998 [Verbose] > │ method3() │
00:00:17 #1999 [Verbose] > │ let struct (v16 : float, v17 : float) = v15 struct (v7, v8) │
00:00:17 #2000 [Verbose] > │ let v18 : float = v14 / 0.1 │
00:00:17 #2001 [Verbose] > │ let v19 : float = round v18 │
00:00:17 #2002 [Verbose] > │ let v20 : float = -v19 │
00:00:17 #2003 [Verbose] > │ let v21 : bool = v19 >= v20 │
00:00:17 #2004 [Verbose] > │ let v22 : float = │
00:00:17 #2005 [Verbose] > │ if v21 then │
00:00:17 #2006 [Verbose] > │ v19 │
00:00:17 #2007 [Verbose] > │ else │
00:00:17 #2008 [Verbose] > │ v20 │
00:00:17 #2009 [Verbose] > │ let v23 : (unit -> UH0) = closure1(v15, v7, v8, v16, v17) │
00:00:17 #2010 [Verbose] > │ let v24 : UH0 = UH0_0(v7, v8, v23) │
00:00:17 #2011 [Verbose] > │ let v25 : US0 = method4(v22, v24) │
00:00:17 #2012 [Verbose] > │ let v31 : US1 = │
00:00:17 #2013 [Verbose] > │ match v25 with │
00:00:17 #2014 [Verbose] > │ | US0_0 -> (* None *) │
00:00:17 #2015 [Verbose] > │ US1_0 │
00:00:17 #2016 [Verbose] > │ | US0_1(v26, v27) -> (* Some *) │
00:00:17 #2017 [Verbose] > │ US1_1(v27) │
00:00:17 #2018 [Verbose] > │ let v34 : float = │
00:00:17 #2019 [Verbose] > │ match v31 with │
00:00:17 #2020 [Verbose] > │ | US1_0 -> (* None *) │
00:00:17 #2021 [Verbose] > │ 0.0 │
00:00:17 #2022 [Verbose] > │ | US1_1(v32) -> (* Some *) │
00:00:17 #2023 [Verbose] > │ v32 │
00:00:17 #2024 [Verbose] > │ v10.[int v13] <- v34 │
00:00:17 #2025 [Verbose] > │ let v35 : int32 = v13 + 1 │
00:00:17 #2026 [Verbose] > │ v11.l0 <- v35 │
00:00:17 #2027 [Verbose] > │ () │
00:00:17 #2028 [Verbose] > │ let v36 : string = "velocity of bike (m/s)" │
00:00:17 #2029 [Verbose] > │ let v37 : (struct (string * (float []) * (float [])) []) = [|struct │
00:00:17 #2030 [Verbose] > │ (v36, v0, v10)|] │
00:00:17 #2031 [Verbose] > │ let v38 : (struct (string * (float []) * (float [])) []) = method5(v37) │
00:00:17 #2032 [Verbose] > │ let v39 : string = "pedaling and coasting with air" │
00:00:17 #2033 [Verbose] > │ let v40 : string = "time (s)" │
00:00:17 #2034 [Verbose] > │ let v41 : string = "" │
00:00:17 #2035 [Verbose] > │ struct (v39, v40, v41, v38) │
00:00:17 #2036 [Verbose] > │ method0() │
00:00:17 #2037 [Verbose] > │ │
00:00:17 #2038 [Verbose] > │ │
00:00:17 #2039 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:17 #2040 [Verbose] >
00:00:17 #2041 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:17 #2042 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:17 #2043 [Verbose] > │ ## velocity_ftxv │
00:00:17 #2044 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:17 #2045 [Verbose] >
00:00:17 #2046 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:17 #2047 [Verbose] > nominal state_1d = time * position * velocity
00:00:17 #2048 [Verbose] > nominal rrr = f64 * f64 * f64
00:00:17 #2049 [Verbose] >
00:00:17 #2050 [Verbose] > inl newton_second_1d m fs (state_1d (t, x0, v0)) =
00:00:17 #2051 [Verbose] > inl f_net = fs |> listm.map (fun f => f (state_1d (t, x0, v0))) |>
00:00:17 #2052 [Verbose] > listm'.sum
00:00:17 #2053 [Verbose] > inl acc = f_net / m
00:00:17 #2054 [Verbose] > rrr (1f64, v0, acc)
00:00:17 #2055 [Verbose] >
00:00:17 #2056 [Verbose] > inl euler_1d dt deriv (state_1d (t0, x0, v0) as t) =
00:00:17 #2057 [Verbose] > inl (rrr (_, _, dvdt)) = deriv t
00:00:17 #2058 [Verbose] > inl t1 = t0 + dt
00:00:17 #2059 [Verbose] > inl x1 = x0 + v0 * dt
00:00:17 #2060 [Verbose] > inl v1 = v0 + dvdt * dt
00:00:17 #2061 [Verbose] > state_1d (t1, x1, v1)
00:00:17 #2062 [Verbose] >
00:00:17 #2063 [Verbose] > inl update_txv dt m fs =
00:00:17 #2064 [Verbose] > newton_second_1d m fs |> euler_1d dt
00:00:17 #2065 [Verbose] >
00:00:17 #2066 [Verbose] > inl states_txv dt m txv0 fs =
00:00:17 #2067 [Verbose] > seq.iterate_ (update_txv dt m fs) txv0
00:00:17 #2068 [Verbose] >
00:00:17 #2069 [Verbose] > inl velocity_1d sts t =
00:00:17 #2070 [Verbose] > inl (state_1d (t0, _, _)) = sts 0
00:00:17 #2071 [Verbose] > inl (state_1d (t1, _, _)) = sts 1
00:00:17 #2072 [Verbose] > inl dt = t1 - t0
00:00:17 #2073 [Verbose] > inl num_steps = t / dt |> math.round |> abs
00:00:17 #2074 [Verbose] > inl (state_1d (_, _, v0)) = sts num_steps
00:00:17 #2075 [Verbose] > v0
00:00:17 #2076 [Verbose] >
00:00:17 #2077 [Verbose] > inl velocity_ftxv dt m txv0 fs =
00:00:17 #2078 [Verbose] > states_txv dt m txv0 fs |> velocity_1d
00:00:17 #2079 [Verbose] >
00:00:17 #2080 [Verbose] > inl position_1d sts t =
00:00:17 #2081 [Verbose] > inl (state_1d (t0, _, _)) = sts 0
00:00:17 #2082 [Verbose] > inl (state_1d (t1, _, _)) = sts 1
00:00:17 #2083 [Verbose] > inl dt = t1 - t0
00:00:17 #2084 [Verbose] > inl num_steps = t / dt |> math.round |> abs
00:00:17 #2085 [Verbose] > inl (state_1d (_, x0, _)) = sts num_steps
00:00:17 #2086 [Verbose] > x0
00:00:17 #2087 [Verbose] >
00:00:17 #2088 [Verbose] > inl position_ftxv dt m txv0 fs =
00:00:17 #2089 [Verbose] > states_txv dt m txv0 fs |> position_1d
00:00:17 #2090 [Verbose] >
00:00:17 #2091 [Verbose] > inl spring_force k (state_1d (_, x0, _)) =
00:00:17 #2092 [Verbose] > -k * x0
00:00:17 #2093 [Verbose] > Building /tmp/!dotnet-repl/20240320-1229-4403-0340-076471513d9f/main.spi
00:00:17 #2094 [Verbose] >
00:00:17 #2095 [Verbose] > ╭─[ 144.08ms - stdout ]────────────────────────────────────────────────────────╮
00:00:17 #2096 [Verbose] > │ () │
00:00:17 #2097 [Verbose] > │ │
00:00:17 #2098 [Verbose] > │ │
00:00:17 #2099 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:17 #2100 [Verbose] >
00:00:17 #2101 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:17 #2102 [Verbose] > // // test
00:00:17 #2103 [Verbose] >
00:00:17 #2104 [Verbose] > inl damped_ho_forces () =
00:00:17 #2105 [Verbose] > [[
00:00:17 #2106 [Verbose] > spring_force 0.8
00:00:17 #2107 [Verbose] > fun (state_1d (_, _, v0)) => f_air 2 1.225 (pi * math.square 0.02) v0
00:00:17 #2108 [Verbose] > fun _ => -0.0027 * 9.80665
00:00:17 #2109 [Verbose] > ]]
00:00:17 #2110 [Verbose] >
00:00:17 #2111 [Verbose] > inl damped_ho_states () =
00:00:17 #2112 [Verbose] > states_txv 0.001 0.0027 (state_1d (0, 0.1, 0)) (damped_ho_forces ())
00:00:17 #2113 [Verbose] >
00:00:17 #2114 [Verbose] > inl pingpong_position t =
00:00:17 #2115 [Verbose] > position_ftxv 0.001 0.0027 (state_1d (0, 0.1, 0)) (damped_ho_forces ()) t
00:00:17 #2116 [Verbose] >
00:00:17 #2117 [Verbose] > inl x : a _ f64 = am'.init_series 0 3 0.01
00:00:17 #2118 [Verbose] > inl y = x |> am.map pingpong_position
00:00:17 #2119 [Verbose] > "ping pong ball on a slinky", "time (s)", "", ;[[ "position (m)", x, y ]]
00:00:17 #2120 [Verbose] > Building /tmp/!dotnet-repl/20240320-1229-4417-1769-170e591b74b4/main.spi
00:00:17 #2121 [Verbose] >
00:00:17 #2122 [Verbose] > ╭─[ 235.10ms - return value ]──────────────────────────────────────────────────╮
00:00:17 #2123 [Verbose] > │ <svg width="640" height="480" viewBox="0 0 640 480" │
00:00:17 #2124 [Verbose] > │ xmlns="http://www.w3.org/2000/svg"> │
00:00:17 #2125 [Verbose] > │ <rect x="0" y="0" width="640" height="480" opacity="1" fill="#141414" │
00:00:17 #2126 [Verbose] > │ stroke="none"/> │
00:00:17 #2127 [Verbose] > │ <text x="320" y="10" dy="0.76em" text-anchor="middle" │
00:00:17 #2128 [Verbose] > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1" │
00:00:17 #2129 [Verbose] > │ fill="#FFFFFF"> │
00:00:17 #2130 [Verbose] > │ ping pong ball on a slinky │
00:00:17 #2131 [Verbose] > │ </text> │
00:00:17 #2132 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="61" y1="424" x2="61" │
00:00:17 #2133 [Verbose] > │ y2="75"/> │
00:00:17 #2134 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" y1="424" x2="69" │
00:00:17 #2135 [Verbose] > │ y2="75"/> │
00:00:17 #2136 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="78" y1="424" x2="78" │
00:00:17 #2137 [Verbose] > │ y2="75"/> │
00:00:17 #2138 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="86" y1="424" x2="86" │
00:00:17 #2139 [Verbose] > │ y2="75"/> │
00:00:17 #2140 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="9... │
00:00:17 #2141 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:17 #2142 [Verbose] >
00:00:17 #2143 [Verbose] > ╭─[ 237.79ms - stdout ]────────────────────────────────────────────────────────╮
00:00:17 #2144 [Verbose] > │ type Mut0 = {mutable l0 : int32} │
00:00:17 #2145 [Verbose] > │ let rec method1 (v0 : Mut0) : bool = │
00:00:17 #2146 [Verbose] > │ let v1 : int32 = v0.l0 │
00:00:17 #2147 [Verbose] > │ let v2 : bool = v1 < 301 │
00:00:17 #2148 [Verbose] > │ v2 │
00:00:17 #2149 [Verbose] > │ and method2 (v0 : int32, v1 : Mut0) : bool = │
00:00:17 #2150 [Verbose] > │ let v2 : int32 = v1.l0 │
00:00:17 #2151 [Verbose] > │ let v3 : bool = v2 < v0 │
00:00:17 #2152 [Verbose] > │ v3 │
00:00:17 #2153 [Verbose] > │ and method3 (v0 : float, v1 : float, v2 : float, v3 : float) : struct (float │
00:00:17 #2154 [Verbose] > │ * float * float) = │
00:00:17 #2155 [Verbose] > │ let v4 : bool = v3 <= 0.0 │
00:00:17 #2156 [Verbose] > │ if v4 then │
00:00:17 #2157 [Verbose] > │ struct (v0, v1, v2) │
00:00:17 #2158 [Verbose] > │ else │
00:00:17 #2159 [Verbose] > │ let v5 : float = -v2 │
00:00:17 #2160 [Verbose] > │ let v6 : bool = v2 >= v5 │
00:00:17 #2161 [Verbose] > │ let v7 : float = │
00:00:17 #2162 [Verbose] > │ if v6 then │
00:00:17 #2163 [Verbose] > │ v2 │
00:00:17 #2164 [Verbose] > │ else │
00:00:17 #2165 [Verbose] > │ v5 │
00:00:17 #2166 [Verbose] > │ let v8 : float = -0.0030787608005179976 * v7 │
00:00:17 #2167 [Verbose] > │ let v9 : float = v8 * v2 │
00:00:17 #2168 [Verbose] > │ let v10 : float = v9 / 2.0 │
00:00:17 #2169 [Verbose] > │ let v11 : float = -0.8 * v1 │
00:00:17 #2170 [Verbose] > │ let v12 : float = v11 + v10 │
00:00:17 #2171 [Verbose] > │ let v13 : float = v12 + -0.026477955 │
00:00:17 #2172 [Verbose] > │ let v14 : float = v13 / 0.0027 │
00:00:17 #2173 [Verbose] > │ let v15 : float = v0 + 0.001 │
00:00:17 #2174 [Verbose] > │ let v16 : float = v2 * 0.001 │
00:00:17 #2175 [Verbose] > │ let v17 : float = v1 + v16 │
00:00:17 #2176 [Verbose] > │ let v18 : float = v14 * 0.001 │
00:00:17 #2177 [Verbose] > │ let v19 : float = v2 + v18 │
00:00:17 #2178 [Verbose] > │ let v20 : float = v3 - 1.0 │
00:00:17 #2179 [Verbose] > │ method3(v15, v17, v19, v20) │
00:00:17 #2180 [Verbose] > │ and method4 (v0 : (struct (string * (float []) * (float [])) [])) : (struct │
00:00:17 #2181 [Verbose] > │ (string * (float []) * (float [])) []) = │
00:00:17 #2182 [Verbose] > │ v0 │
00:00:17 #2183 [Verbose] > │ and method0 () : struct (string * string * string * (struct (string * (float │
00:00:17 #2184 [Verbose] > │ []) * (float [])) [])) = │
00:00:17 #2185 [Verbose] > │ let v0 : (float []) = Array.zeroCreate<float> (301) │
00:00:17 #2186 [Verbose] > │ let v1 : Mut0 = {l0 = 0} : Mut0 │
00:00:17 #2187 [Verbose] > │ while method1(v1) do │
00:00:17 #2188 [Verbose] > │ let v3 : int32 = v1.l0 │
00:00:17 #2189 [Verbose] > │ let v4 : float = float v3 │
00:00:17 #2190 [Verbose] > │ let v5 : float = 0.01 * v4 │
00:00:17 #2191 [Verbose] > │ v0.[int v3] <- v5 │
00:00:17 #2192 [Verbose] > │ let v6 : int32 = v3 + 1 │
00:00:17 #2193 [Verbose] > │ v1.l0 <- v6 │
00:00:17 #2194 [Verbose] > │ () │
00:00:17 #2195 [Verbose] > │ let v7 : int32 = v0.Length │
00:00:17 #2196 [Verbose] > │ let v8 : (float []) = Array.zeroCreate<float> (v7) │
00:00:17 #2197 [Verbose] > │ let v9 : Mut0 = {l0 = 0} : Mut0 │
00:00:17 #2198 [Verbose] > │ while method2(v7, v9) do │
00:00:17 #2199 [Verbose] > │ let v11 : int32 = v9.l0 │
00:00:17 #2200 [Verbose] > │ let v12 : float = v0.[int v11] │
00:00:17 #2201 [Verbose] > │ let v13 : float = 0.0 │
00:00:17 #2202 [Verbose] > │ let v14 : float = 0.1 │
00:00:17 #2203 [Verbose] > │ let v15 : float = 0.0 │
00:00:17 #2204 [Verbose] > │ let v16 : float = 0.0 │
00:00:17 #2205 [Verbose] > │ let struct (v17 : float, v18 : float, v19 : float) = method3(v13, │
00:00:17 #2206 [Verbose] > │ v14, v15, v16) │
00:00:17 #2207 [Verbose] > │ let v20 : float = 0.0 │
00:00:17 #2208 [Verbose] > │ let v21 : float = 0.1 │
00:00:17 #2209 [Verbose] > │ let v22 : float = 0.0 │
00:00:17 #2210 [Verbose] > │ let v23 : float = 1.0 │
00:00:17 #2211 [Verbose] > │ let struct (v24 : float, v25 : float, v26 : float) = method3(v20, │
00:00:17 #2212 [Verbose] > │ v21, v22, v23) │
00:00:17 #2213 [Verbose] > │ let v27 : float = v24 - v17 │
00:00:17 #2214 [Verbose] > │ let v28 : float = v12 / v27 │
00:00:17 #2215 [Verbose] > │ let v29 : float = round v28 │
00:00:17 #2216 [Verbose] > │ let v30 : float = -v29 │
00:00:17 #2217 [Verbose] > │ let v31 : bool = v29 >= v30 │
00:00:17 #2218 [Verbose] > │ let v32 : float = │
00:00:17 #2219 [Verbose] > │ if v31 then │
00:00:17 #2220 [Verbose] > │ v29 │
00:00:17 #2221 [Verbose] > │ else │
00:00:17 #2222 [Verbose] > │ v30 │
00:00:17 #2223 [Verbose] > │ let v33 : float = 0.0 │
00:00:17 #2224 [Verbose] > │ let v34 : float = 0.1 │
00:00:17 #2225 [Verbose] > │ let v35 : float = 0.0 │
00:00:17 #2226 [Verbose] > │ let struct (v36 : float, v37 : float, v38 : float) = method3(v33, │
00:00:17 #2227 [Verbose] > │ v34, v35, v32) │
00:00:17 #2228 [Verbose] > │ v8.[int v11] <- v37 │
00:00:17 #2229 [Verbose] > │ let v39 : int32 = v11 + 1 │
00:00:17 #2230 [Verbose] > │ v9.l0 <- v39 │
00:00:17 #2231 [Verbose] > │ () │
00:00:17 #2232 [Verbose] > │ let v40 : string = "position (m)" │
00:00:17 #2233 [Verbose] > │ let v41 : (struct (string * (float []) * (float [])) []) = [|struct │
00:00:17 #2234 [Verbose] > │ (v40, v0, v8)|] │
00:00:17 #2235 [Verbose] > │ let v42 : (struct (string * (float []) * (float [])) []) = method4(v41) │
00:00:17 #2236 [Verbose] > │ let v43 : string = "ping pong ball on a slinky" │
00:00:17 #2237 [Verbose] > │ let v44 : string = "time (s)" │
00:00:17 #2238 [Verbose] > │ let v45 : string = "" │
00:00:17 #2239 [Verbose] > │ struct (v43, v44, v45, v42) │
00:00:17 #2240 [Verbose] > │ method0() │
00:00:17 #2241 [Verbose] > │ │
00:00:17 #2242 [Verbose] > │ │
00:00:17 #2243 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:17 #2244 [Verbose] >
00:00:17 #2245 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:17 #2246 [Verbose] > // // test
00:00:17 #2247 [Verbose] >
00:00:17 #2248 [Verbose] > inl pingpong_velocity t =
00:00:17 #2249 [Verbose] > velocity_ftxv 0.001 0.0027 (state_1d (0, 0.1, 0)) (damped_ho_forces ()) t
00:00:17 #2250 [Verbose] >
00:00:17 #2251 [Verbose] > inl x = am'.init_series 0 3 0.01
00:00:17 #2252 [Verbose] > inl y = x |> am.map pingpong_velocity
00:00:17 #2253 [Verbose] > "ping pong ball on a slinky", "time (s)", "", ;[[ "velocity (m/s)", x, y ]]
00:00:17 #2254 [Verbose] > Building /tmp/!dotnet-repl/20240320-1229-4441-4184-42b316968434/main.spi
00:00:18 #2255 [Verbose] >
00:00:18 #2256 [Verbose] > ╭─[ 209.00ms - return value ]──────────────────────────────────────────────────╮
00:00:18 #2257 [Verbose] > │ <svg width="640" height="480" viewBox="0 0 640 480" │
00:00:18 #2258 [Verbose] > │ xmlns="http://www.w3.org/2000/svg"> │
00:00:18 #2259 [Verbose] > │ <rect x="0" y="0" width="640" height="480" opacity="1" fill="#141414" │
00:00:18 #2260 [Verbose] > │ stroke="none"/> │
00:00:18 #2261 [Verbose] > │ <text x="320" y="10" dy="0.76em" text-anchor="middle" │
00:00:18 #2262 [Verbose] > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1" │
00:00:18 #2263 [Verbose] > │ fill="#FFFFFF"> │
00:00:18 #2264 [Verbose] > │ ping pong ball on a slinky │
00:00:18 #2265 [Verbose] > │ </text> │
00:00:18 #2266 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="61" y1="424" x2="61" │
00:00:18 #2267 [Verbose] > │ y2="75"/> │
00:00:18 #2268 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" y1="424" x2="69" │
00:00:18 #2269 [Verbose] > │ y2="75"/> │
00:00:18 #2270 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="78" y1="424" x2="78" │
00:00:18 #2271 [Verbose] > │ y2="75"/> │
00:00:18 #2272 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="86" y1="424" x2="86" │
00:00:18 #2273 [Verbose] > │ y2="75"/> │
00:00:18 #2274 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="9... │
00:00:18 #2275 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:18 #2276 [Verbose] >
00:00:18 #2277 [Verbose] > ╭─[ 211.82ms - stdout ]────────────────────────────────────────────────────────╮
00:00:18 #2278 [Verbose] > │ type Mut0 = {mutable l0 : int32} │
00:00:18 #2279 [Verbose] > │ let rec method1 (v0 : Mut0) : bool = │
00:00:18 #2280 [Verbose] > │ let v1 : int32 = v0.l0 │
00:00:18 #2281 [Verbose] > │ let v2 : bool = v1 < 301 │
00:00:18 #2282 [Verbose] > │ v2 │
00:00:18 #2283 [Verbose] > │ and method2 (v0 : int32, v1 : Mut0) : bool = │
00:00:18 #2284 [Verbose] > │ let v2 : int32 = v1.l0 │
00:00:18 #2285 [Verbose] > │ let v3 : bool = v2 < v0 │
00:00:18 #2286 [Verbose] > │ v3 │
00:00:18 #2287 [Verbose] > │ and method3 (v0 : float, v1 : float, v2 : float, v3 : float) : struct (float │
00:00:18 #2288 [Verbose] > │ * float * float) = │
00:00:18 #2289 [Verbose] > │ let v4 : bool = v3 <= 0.0 │
00:00:18 #2290 [Verbose] > │ if v4 then │
00:00:18 #2291 [Verbose] > │ struct (v0, v1, v2) │
00:00:18 #2292 [Verbose] > │ else │
00:00:18 #2293 [Verbose] > │ let v5 : float = -v2 │
00:00:18 #2294 [Verbose] > │ let v6 : bool = v2 >= v5 │
00:00:18 #2295 [Verbose] > │ let v7 : float = │
00:00:18 #2296 [Verbose] > │ if v6 then │
00:00:18 #2297 [Verbose] > │ v2 │
00:00:18 #2298 [Verbose] > │ else │
00:00:18 #2299 [Verbose] > │ v5 │
00:00:18 #2300 [Verbose] > │ let v8 : float = -0.0030787608005179976 * v7 │
00:00:18 #2301 [Verbose] > │ let v9 : float = v8 * v2 │
00:00:18 #2302 [Verbose] > │ let v10 : float = v9 / 2.0 │
00:00:18 #2303 [Verbose] > │ let v11 : float = -0.8 * v1 │
00:00:18 #2304 [Verbose] > │ let v12 : float = v11 + v10 │
00:00:18 #2305 [Verbose] > │ let v13 : float = v12 + -0.026477955 │
00:00:18 #2306 [Verbose] > │ let v14 : float = v13 / 0.0027 │
00:00:18 #2307 [Verbose] > │ let v15 : float = v0 + 0.001 │
00:00:18 #2308 [Verbose] > │ let v16 : float = v2 * 0.001 │
00:00:18 #2309 [Verbose] > │ let v17 : float = v1 + v16 │
00:00:18 #2310 [Verbose] > │ let v18 : float = v14 * 0.001 │
00:00:18 #2311 [Verbose] > │ let v19 : float = v2 + v18 │
00:00:18 #2312 [Verbose] > │ let v20 : float = v3 - 1.0 │
00:00:18 #2313 [Verbose] > │ method3(v15, v17, v19, v20) │
00:00:18 #2314 [Verbose] > │ and method4 (v0 : (struct (string * (float []) * (float [])) [])) : (struct │
00:00:18 #2315 [Verbose] > │ (string * (float []) * (float [])) []) = │
00:00:18 #2316 [Verbose] > │ v0 │
00:00:18 #2317 [Verbose] > │ and method0 () : struct (string * string * string * (struct (string * (float │
00:00:18 #2318 [Verbose] > │ []) * (float [])) [])) = │
00:00:18 #2319 [Verbose] > │ let v0 : (float []) = Array.zeroCreate<float> (301) │
00:00:18 #2320 [Verbose] > │ let v1 : Mut0 = {l0 = 0} : Mut0 │
00:00:18 #2321 [Verbose] > │ while method1(v1) do │
00:00:18 #2322 [Verbose] > │ let v3 : int32 = v1.l0 │
00:00:18 #2323 [Verbose] > │ let v4 : float = float v3 │
00:00:18 #2324 [Verbose] > │ let v5 : float = 0.01 * v4 │
00:00:18 #2325 [Verbose] > │ v0.[int v3] <- v5 │
00:00:18 #2326 [Verbose] > │ let v6 : int32 = v3 + 1 │
00:00:18 #2327 [Verbose] > │ v1.l0 <- v6 │
00:00:18 #2328 [Verbose] > │ () │
00:00:18 #2329 [Verbose] > │ let v7 : int32 = v0.Length │
00:00:18 #2330 [Verbose] > │ let v8 : (float []) = Array.zeroCreate<float> (v7) │
00:00:18 #2331 [Verbose] > │ let v9 : Mut0 = {l0 = 0} : Mut0 │
00:00:18 #2332 [Verbose] > │ while method2(v7, v9) do │
00:00:18 #2333 [Verbose] > │ let v11 : int32 = v9.l0 │
00:00:18 #2334 [Verbose] > │ let v12 : float = v0.[int v11] │
00:00:18 #2335 [Verbose] > │ let v13 : float = 0.0 │
00:00:18 #2336 [Verbose] > │ let v14 : float = 0.1 │
00:00:18 #2337 [Verbose] > │ let v15 : float = 0.0 │
00:00:18 #2338 [Verbose] > │ let v16 : float = 0.0 │
00:00:18 #2339 [Verbose] > │ let struct (v17 : float, v18 : float, v19 : float) = method3(v13, │
00:00:18 #2340 [Verbose] > │ v14, v15, v16) │
00:00:18 #2341 [Verbose] > │ let v20 : float = 0.0 │
00:00:18 #2342 [Verbose] > │ let v21 : float = 0.1 │
00:00:18 #2343 [Verbose] > │ let v22 : float = 0.0 │
00:00:18 #2344 [Verbose] > │ let v23 : float = 1.0 │
00:00:18 #2345 [Verbose] > │ let struct (v24 : float, v25 : float, v26 : float) = method3(v20, │
00:00:18 #2346 [Verbose] > │ v21, v22, v23) │
00:00:18 #2347 [Verbose] > │ let v27 : float = v24 - v17 │
00:00:18 #2348 [Verbose] > │ let v28 : float = v12 / v27 │
00:00:18 #2349 [Verbose] > │ let v29 : float = round v28 │
00:00:18 #2350 [Verbose] > │ let v30 : float = -v29 │
00:00:18 #2351 [Verbose] > │ let v31 : bool = v29 >= v30 │
00:00:18 #2352 [Verbose] > │ let v32 : float = │
00:00:18 #2353 [Verbose] > │ if v31 then │
00:00:18 #2354 [Verbose] > │ v29 │
00:00:18 #2355 [Verbose] > │ else │
00:00:18 #2356 [Verbose] > │ v30 │
00:00:18 #2357 [Verbose] > │ let v33 : float = 0.0 │
00:00:18 #2358 [Verbose] > │ let v34 : float = 0.1 │
00:00:18 #2359 [Verbose] > │ let v35 : float = 0.0 │
00:00:18 #2360 [Verbose] > │ let struct (v36 : float, v37 : float, v38 : float) = method3(v33, │
00:00:18 #2361 [Verbose] > │ v34, v35, v32) │
00:00:18 #2362 [Verbose] > │ v8.[int v11] <- v38 │
00:00:18 #2363 [Verbose] > │ let v39 : int32 = v11 + 1 │
00:00:18 #2364 [Verbose] > │ v9.l0 <- v39 │
00:00:18 #2365 [Verbose] > │ () │
00:00:18 #2366 [Verbose] > │ let v40 : string = "velocity (m/s)" │
00:00:18 #2367 [Verbose] > │ let v41 : (struct (string * (float []) * (float [])) []) = [|struct │
00:00:18 #2368 [Verbose] > │ (v40, v0, v8)|] │
00:00:18 #2369 [Verbose] > │ let v42 : (struct (string * (float []) * (float [])) []) = method4(v41) │
00:00:18 #2370 [Verbose] > │ let v43 : string = "ping pong ball on a slinky" │
00:00:18 #2371 [Verbose] > │ let v44 : string = "time (s)" │
00:00:18 #2372 [Verbose] > │ let v45 : string = "" │
00:00:18 #2373 [Verbose] > │ struct (v43, v44, v45, v42) │
00:00:18 #2374 [Verbose] > │ method0() │
00:00:18 #2375 [Verbose] > │ │
00:00:18 #2376 [Verbose] > │ │
00:00:18 #2377 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:18 #2378 [Verbose] >
00:00:18 #2379 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:18 #2380 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:18 #2381 [Verbose] > │ ## shift │
00:00:18 #2382 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:18 #2383 [Verbose] >
00:00:18 #2384 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:18 #2385 [Verbose] > type update_function s = s -> s
00:00:18 #2386 [Verbose] >
00:00:18 #2387 [Verbose] > type differential_equation s ds = s -> ds
00:00:18 #2388 [Verbose] >
00:00:18 #2389 [Verbose] > type numerical_method s ds = differential_equation s ds -> update_function s
00:00:18 #2390 [Verbose] >
00:00:18 #2391 [Verbose] >
00:00:18 #2392 [Verbose] > inl solver method =
00:00:18 #2393 [Verbose] > method >> seq.iterate
00:00:18 #2394 [Verbose] > inl solver' method =
00:00:18 #2395 [Verbose] > method >> seq.iterate'
00:00:18 #2396 [Verbose] > inl solver_ method =
00:00:18 #2397 [Verbose] > method >> seq.iterate_
00:00:18 #2398 [Verbose] >
00:00:18 #2399 [Verbose] >
00:00:18 #2400 [Verbose] > inl euler_cromer_1d dt deriv (state_1d (t0, x0, v0) as t) =
00:00:18 #2401 [Verbose] > inl (rrr (_, _, dvdt)) = deriv t
00:00:18 #2402 [Verbose] > inl t1 = t0 + dt
00:00:18 #2403 [Verbose] > inl v1 = v0 + dvdt * dt
00:00:18 #2404 [Verbose] > inl x1 = x0 + v1 * dt
00:00:18 #2405 [Verbose] > state_1d (t1, x1, v1)
00:00:18 #2406 [Verbose] >
00:00:18 #2407 [Verbose] > inl update_txv_ec dt m fs =
00:00:18 #2408 [Verbose] > euler_cromer_1d dt (newton_second_1d m fs)
00:00:18 #2409 [Verbose] >
00:00:18 #2410 [Verbose] > prototype (+++) ds : ds -> ds -> ds
00:00:18 #2411 [Verbose] > prototype scale ds : f64 -> ds -> ds
00:00:18 #2412 [Verbose] >
00:00:18 #2413 [Verbose] > instance (+++) rrr = fun (rrr (dtdt0, dxdt0, dvdt0)) (rrr (dtdt1, dxdt1, dvdt1))
00:00:18 #2414 [Verbose] > =>
00:00:18 #2415 [Verbose] > rrr (dtdt0 + dtdt1, dxdt0 + dxdt1, dvdt0 + dvdt1)
00:00:18 #2416 [Verbose] >
00:00:18 #2417 [Verbose] > instance scale rrr = fun w (rrr (dtdt0, dxdt0, dvdt0)) =>
00:00:18 #2418 [Verbose] > rrr (w * dtdt0, w * dxdt0, w * dvdt0)
00:00:18 #2419 [Verbose] >
00:00:18 #2420 [Verbose] > prototype shift s : forall ds. f64 -> ds -> s -> s
00:00:18 #2421 [Verbose] >
00:00:18 #2422 [Verbose] > instance shift state_1d = fun dt ds (state_1d (t, x, v)) =>
00:00:18 #2423 [Verbose] > inl dtdt, dxdt, dvdt =
00:00:18 #2424 [Verbose] > real
00:00:18 #2425 [Verbose] > match ds with
00:00:18 #2426 [Verbose] > | rrr x => x
00:00:18 #2427 [Verbose] > | state_1d x => x
00:00:18 #2428 [Verbose] > state_1d (t + dtdt * dt, x + dxdt * dt, v + dvdt * dt)
00:00:18 #2429 [Verbose] >
00:00:18 #2430 [Verbose] > inl euler dt deriv st0 =
00:00:18 #2431 [Verbose] > shift dt (deriv st0) st0
00:00:18 #2432 [Verbose] >
00:00:18 #2433 [Verbose] > inl runge_kutta_4 dt deriv st0 =
00:00:18 #2434 [Verbose] > inl m0 = deriv st0
00:00:18 #2435 [Verbose] > inl m1 = deriv (shift (dt / 2) m0 st0)
00:00:18 #2436 [Verbose] > inl m2 = deriv (shift (dt / 2) m1 st0)
00:00:18 #2437 [Verbose] > inl m3 = deriv (shift dt m2 st0)
00:00:18 #2438 [Verbose] > shift (dt / 6) (m0 +++ m1 +++ m1 +++ m2 +++ m2 +++ m3) st0
00:00:18 #2439 [Verbose] >
00:00:18 #2440 [Verbose] > inl exponential (_, x0, v0) =
00:00:18 #2441 [Verbose] > 1f64, v0, x0
00:00:18 #2442 [Verbose] >
00:00:18 #2443 [Verbose] > inl of_state_1d (state_1d (t, x, v)) =
00:00:18 #2444 [Verbose] > t, x, v
00:00:18 #2445 [Verbose] > Building /tmp/!dotnet-repl/20240320-1229-4463-6329-66ec9f7fc6b9/main.spi
00:00:18 #2446 [Verbose] >
00:00:18 #2447 [Verbose] > ╭─[ 160.82ms - stdout ]────────────────────────────────────────────────────────╮
00:00:18 #2448 [Verbose] > │ () │
00:00:18 #2449 [Verbose] > │ │
00:00:18 #2450 [Verbose] > │ │
00:00:18 #2451 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:18 #2452 [Verbose] >
00:00:18 #2453 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:18 #2454 [Verbose] > // // test
00:00:18 #2455 [Verbose] >
00:00:18 #2456 [Verbose] > solver (euler 0.01) (of_state_1d >> exponential >> state_1d) (state_1d (0, 1,
00:00:18 #2457 [Verbose] > 1)) 800i32
00:00:18 #2458 [Verbose] > |> _assert_eq (state_1d (7.999999999999874, 2864.8311229272326,
00:00:18 #2459 [Verbose] > 2864.8311229272326))
00:00:18 #2460 [Verbose] >
00:00:18 #2461 [Verbose] > solver (euler_cromer_1d 0.1) (of_state_1d >> exponential >> rrr) (state_1d (0,
00:00:18 #2462 [Verbose] > 1, 1)) 80i32
00:00:18 #2463 [Verbose] > |> _assert_eq (state_1d (7.999999999999988, 3043.379244966009,
00:00:18 #2464 [Verbose] > 2895.0121485099035))
00:00:18 #2465 [Verbose] >
00:00:18 #2466 [Verbose] > solver (runge_kutta_4 1) (of_state_1d >> exponential >> rrr) (state_1d (0, 1,
00:00:18 #2467 [Verbose] > 1)) 8i32
00:00:18 #2468 [Verbose] > |> _assert_eq (state_1d (8.0, 2894.789038540849, 2894.789038540849))
00:00:18 #2469 [Verbose] > Building /tmp/!dotnet-repl/20240320-1229-4479-7930-75fac2789b19/main.spi
00:00:18 #2470 [Verbose] >
00:00:18 #2471 [Verbose] > ╭─[ 308.70ms - stdout ]────────────────────────────────────────────────────────╮
00:00:18 #2472 [Verbose] > │ let rec method0 () : unit = │
00:00:18 #2473 [Verbose] > │ let v0 : string = $"__expect / actual: %A{struct (7.999999999999874, │
00:00:18 #2474 [Verbose] > │ 2864.8311229272326, 2864.8311229272326)} / expected: %A{struct │
00:00:18 #2475 [Verbose] > │ (7.999999999999874, 2864.8311229272326, 2864.8311229272326)}" │
00:00:18 #2476 [Verbose] > │ let v1 : string = $"__expect / actual: %A{struct (7.999999999999988, │
00:00:18 #2477 [Verbose] > │ 3043.379244966009, 2895.0121485099035)} / expected: %A{struct │
00:00:18 #2478 [Verbose] > │ (7.999999999999988, 3043.379244966009, 2895.0121485099035)}" │
00:00:18 #2479 [Verbose] > │ let v2 : string = $"__expect / actual: %A{struct (8.0, │
00:00:18 #2480 [Verbose] > │ 2894.789038540849, 2894.789038540849)} / expected: %A{struct (8.0, │
00:00:18 #2481 [Verbose] > │ 2894.789038540849, 2894.789038540849)}" │
00:00:18 #2482 [Verbose] > │ () │
00:00:18 #2483 [Verbose] > │ method0() │
00:00:18 #2484 [Verbose] > │ │
00:00:18 #2485 [Verbose] > │ │
00:00:18 #2486 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:18 #2487 [Verbose] >
00:00:18 #2488 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:18 #2489 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:18 #2490 [Verbose] > │ ## vec │
00:00:18 #2491 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:18 #2492 [Verbose] >
00:00:18 #2493 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:18 #2494 [Verbose] > type vec =
00:00:18 #2495 [Verbose] > {
00:00:18 #2496 [Verbose] > x : f64
00:00:18 #2497 [Verbose] > y : f64
00:00:18 #2498 [Verbose] > z : f64
00:00:18 #2499 [Verbose] > }
00:00:18 #2500 [Verbose] >
00:00:18 #2501 [Verbose] > inl vec x y z : vec =
00:00:18 #2502 [Verbose] > { x y z }
00:00:18 #2503 [Verbose] > Building /tmp/!dotnet-repl/20240320-1229-4510-1024-14d51a9b8451/main.spi
00:00:18 #2504 [Verbose] >
00:00:18 #2505 [Verbose] > ╭─[ 134.25ms - stdout ]────────────────────────────────────────────────────────╮
00:00:18 #2506 [Verbose] > │ () │
00:00:18 #2507 [Verbose] > │ │
00:00:18 #2508 [Verbose] > │ │
00:00:18 #2509 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:18 #2510 [Verbose] >
00:00:18 #2511 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:18 #2512 [Verbose] > // // test
00:00:18 #2513 [Verbose] >
00:00:18 #2514 [Verbose] > vec 1 2 3 .z
00:00:18 #2515 [Verbose] > |> _assert_eq 3
00:00:18 #2516 [Verbose] > Building /tmp/!dotnet-repl/20240320-1229-4523-2375-2041243e9b70/main.spi
00:00:18 #2517 [Verbose] >
00:00:18 #2518 [Verbose] > ╭─[ 137.88ms - stdout ]────────────────────────────────────────────────────────╮
00:00:18 #2519 [Verbose] > │ let rec method0 () : unit = │
00:00:18 #2520 [Verbose] > │ let v0 : string = $"__expect / actual: %A{3.0} / expected: %A{3.0}" │
00:00:18 #2521 [Verbose] > │ () │
00:00:18 #2522 [Verbose] > │ method0() │
00:00:18 #2523 [Verbose] > │ │
00:00:18 #2524 [Verbose] > │ │
00:00:18 #2525 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:18 #2526 [Verbose] >
00:00:18 #2527 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:18 #2528 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:18 #2529 [Verbose] > │ ### consts │
00:00:18 #2530 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:18 #2531 [Verbose] >
00:00:18 #2532 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:18 #2533 [Verbose] > inl i_hat () = vec 1 0 0
00:00:18 #2534 [Verbose] > inl j_hat () = vec 0 1 0
00:00:18 #2535 [Verbose] > inl k_hat () = vec 0 0 1
00:00:18 #2536 [Verbose] > inl zero_vec () = vec 0 0 0
00:00:18 #2537 [Verbose] > Building /tmp/!dotnet-repl/20240320-1229-4537-3766-3f8850e85d25/main.spi
00:00:18 #2538 [Verbose] >
00:00:18 #2539 [Verbose] > ╭─[ 138.16ms - stdout ]────────────────────────────────────────────────────────╮
00:00:18 #2540 [Verbose] > │ () │
00:00:18 #2541 [Verbose] > │ │
00:00:18 #2542 [Verbose] > │ │
00:00:18 #2543 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:18 #2544 [Verbose] >
00:00:18 #2545 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:18 #2546 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:18 #2547 [Verbose] > │ ### ^+^ │
00:00:18 #2548 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:18 #2549 [Verbose] >
00:00:18 #2550 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:18 #2551 [Verbose] > inl (^+^) (a : vec) (b : vec) =
00:00:18 #2552 [Verbose] > vec (a.x + b.x) (a.y + b.y) (a.z + b.z)
00:00:18 #2553 [Verbose] > Building /tmp/!dotnet-repl/20240320-1229-4551-5153-5b4b1f33b68b/main.spi
00:00:19 #2554 [Verbose] >
00:00:19 #2555 [Verbose] > ╭─[ 136.98ms - stdout ]────────────────────────────────────────────────────────╮
00:00:19 #2556 [Verbose] > │ () │
00:00:19 #2557 [Verbose] > │ │
00:00:19 #2558 [Verbose] > │ │
00:00:19 #2559 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:19 #2560 [Verbose] >
00:00:19 #2561 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:19 #2562 [Verbose] > // // test
00:00:19 #2563 [Verbose] >
00:00:19 #2564 [Verbose] > vec 1 2 3 ^+^ vec 4 5 6
00:00:19 #2565 [Verbose] > |> _assert_eq (vec 5 7 9)
00:00:19 #2566 [Verbose] > Building /tmp/!dotnet-repl/20240320-1229-4565-6534-6107b7873672/main.spi
00:00:19 #2567 [Verbose] >
00:00:19 #2568 [Verbose] > ╭─[ 142.67ms - stdout ]────────────────────────────────────────────────────────╮
00:00:19 #2569 [Verbose] > │ let rec method0 () : unit = │
00:00:19 #2570 [Verbose] > │ let v0 : string = $"__expect / actual: %A{struct (5.0, 7.0, 9.0)} / │
00:00:19 #2571 [Verbose] > │ expected: %A{struct (5.0, 7.0, 9.0)}" │
00:00:19 #2572 [Verbose] > │ () │
00:00:19 #2573 [Verbose] > │ method0() │
00:00:19 #2574 [Verbose] > │ │
00:00:19 #2575 [Verbose] > │ │
00:00:19 #2576 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:19 #2577 [Verbose] >
00:00:19 #2578 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:19 #2579 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:19 #2580 [Verbose] > │ ### sum_vec │
00:00:19 #2581 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:19 #2582 [Verbose] >
00:00:19 #2583 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:19 #2584 [Verbose] > inl sum_vec vs =
00:00:19 #2585 [Verbose] > vs |> listm.fold (^+^) (zero_vec ())
00:00:19 #2586 [Verbose] > Building /tmp/!dotnet-repl/20240320-1229-4579-7958-727181eff649/main.spi
00:00:19 #2587 [Verbose] >
00:00:19 #2588 [Verbose] > ╭─[ 136.53ms - stdout ]────────────────────────────────────────────────────────╮
00:00:19 #2589 [Verbose] > │ () │
00:00:19 #2590 [Verbose] > │ │
00:00:19 #2591 [Verbose] > │ │
00:00:19 #2592 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:19 #2593 [Verbose] >
00:00:19 #2594 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:19 #2595 [Verbose] > // // test
00:00:19 #2596 [Verbose] >
00:00:19 #2597 [Verbose] > [[ vec 1 2 3; vec 4 5 6 ]]
00:00:19 #2598 [Verbose] > |> sum_vec
00:00:19 #2599 [Verbose] > |> _assert_eq (vec 5 7 9)
00:00:19 #2600 [Verbose] > Building /tmp/!dotnet-repl/20240320-1229-4593-9325-9e498ac4eec6/main.spi
00:00:19 #2601 [Verbose] >
00:00:19 #2602 [Verbose] > ╭─[ 150.46ms - stdout ]────────────────────────────────────────────────────────╮
00:00:19 #2603 [Verbose] > │ let rec method0 () : unit = │
00:00:19 #2604 [Verbose] > │ let v0 : string = $"__expect / actual: %A{struct (5.0, 7.0, 9.0)} / │
00:00:19 #2605 [Verbose] > │ expected: %A{struct (5.0, 7.0, 9.0)}" │
00:00:19 #2606 [Verbose] > │ () │
00:00:19 #2607 [Verbose] > │ method0() │
00:00:19 #2608 [Verbose] > │ │
00:00:19 #2609 [Verbose] > │ │
00:00:19 #2610 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:19 #2611 [Verbose] >
00:00:19 #2612 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:19 #2613 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:19 #2614 [Verbose] > │ ### *^ │
00:00:19 #2615 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:19 #2616 [Verbose] >
00:00:19 #2617 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:19 #2618 [Verbose] > inl (*^) c { x y z } =
00:00:19 #2619 [Verbose] > vec (c * x) (c * y) (c * z)
00:00:19 #2620 [Verbose] > Building /tmp/!dotnet-repl/20240320-1229-4608-0847-0787d4bbfe25/main.spi
00:00:19 #2621 [Verbose] >
00:00:19 #2622 [Verbose] > ╭─[ 135.73ms - stdout ]────────────────────────────────────────────────────────╮
00:00:19 #2623 [Verbose] > │ () │
00:00:19 #2624 [Verbose] > │ │
00:00:19 #2625 [Verbose] > │ │
00:00:19 #2626 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:19 #2627 [Verbose] >
00:00:19 #2628 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:19 #2629 [Verbose] > // // test
00:00:19 #2630 [Verbose] >
00:00:19 #2631 [Verbose] > 5 *^ vec 1 2 3
00:00:19 #2632 [Verbose] > |> _assert_eq (vec 5 10 15)
00:00:19 #2633 [Verbose] > Building /tmp/!dotnet-repl/20240320-1229-4622-2200-231779218124/main.spi
00:00:19 #2634 [Verbose] >
00:00:19 #2635 [Verbose] > ╭─[ 169.14ms - stdout ]────────────────────────────────────────────────────────╮
00:00:19 #2636 [Verbose] > │ let rec method0 () : unit = │
00:00:19 #2637 [Verbose] > │ let v0 : string = $"__expect / actual: %A{struct (5.0, 10.0, 15.0)} / │
00:00:19 #2638 [Verbose] > │ expected: %A{struct (5.0, 10.0, 15.0)}" │
00:00:19 #2639 [Verbose] > │ () │
00:00:19 #2640 [Verbose] > │ method0() │
00:00:19 #2641 [Verbose] > │ │
00:00:19 #2642 [Verbose] > │ │
00:00:19 #2643 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:19 #2644 [Verbose] >
00:00:19 #2645 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:19 #2646 [Verbose] > // // test
00:00:19 #2647 [Verbose] >
00:00:19 #2648 [Verbose] > 3 *^ i_hat () ^+^ 4 *^ k_hat ()
00:00:19 #2649 [Verbose] > |> _assert_eq (vec 3 0 4)
00:00:19 #2650 [Verbose] > Building /tmp/!dotnet-repl/20240320-1229-4639-3908-3d47932e8ffc/main.spi
00:00:19 #2651 [Verbose] >
00:00:19 #2652 [Verbose] > ╭─[ 140.95ms - stdout ]────────────────────────────────────────────────────────╮
00:00:19 #2653 [Verbose] > │ let rec method0 () : unit = │
00:00:19 #2654 [Verbose] > │ let v0 : string = $"__expect / actual: %A{struct (3.0, 0.0, 4.0)} / │
00:00:19 #2655 [Verbose] > │ expected: %A{struct (3.0, 0.0, 4.0)}" │
00:00:19 #2656 [Verbose] > │ () │
00:00:19 #2657 [Verbose] > │ method0() │
00:00:19 #2658 [Verbose] > │ │
00:00:19 #2659 [Verbose] > │ │
00:00:19 #2660 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:19 #2661 [Verbose] >
00:00:19 #2662 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:19 #2663 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:19 #2664 [Verbose] > │ ### ^* │
00:00:19 #2665 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:19 #2666 [Verbose] >
00:00:19 #2667 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:19 #2668 [Verbose] > inl (^*) v c =
00:00:19 #2669 [Verbose] > (*^) c v
00:00:19 #2670 [Verbose] > Building /tmp/!dotnet-repl/20240320-1229-4653-5315-5d6f8cb1863d/main.spi
00:00:20 #2671 [Verbose] >
00:00:20 #2672 [Verbose] > ╭─[ 128.20ms - stdout ]────────────────────────────────────────────────────────╮
00:00:20 #2673 [Verbose] > │ () │
00:00:20 #2674 [Verbose] > │ │
00:00:20 #2675 [Verbose] > │ │
00:00:20 #2676 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:20 #2677 [Verbose] >
00:00:20 #2678 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:20 #2679 [Verbose] > // // test
00:00:20 #2680 [Verbose] >
00:00:20 #2681 [Verbose] > vec 1 2 3 ^* 5
00:00:20 #2682 [Verbose] > |> _assert_eq (vec 5 10 15)
00:00:20 #2683 [Verbose] > Building /tmp/!dotnet-repl/20240320-1229-4666-6600-66f4d59b57d2/main.spi
00:00:20 #2684 [Verbose] >
00:00:20 #2685 [Verbose] > ╭─[ 165.18ms - stdout ]────────────────────────────────────────────────────────╮
00:00:20 #2686 [Verbose] > │ let rec method0 () : unit = │
00:00:20 #2687 [Verbose] > │ let v0 : string = $"__expect / actual: %A{struct (5.0, 10.0, 15.0)} / │
00:00:20 #2688 [Verbose] > │ expected: %A{struct (5.0, 10.0, 15.0)}" │
00:00:20 #2689 [Verbose] > │ () │
00:00:20 #2690 [Verbose] > │ method0() │
00:00:20 #2691 [Verbose] > │ │
00:00:20 #2692 [Verbose] > │ │
00:00:20 #2693 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:20 #2694 [Verbose] >
00:00:20 #2695 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:20 #2696 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:20 #2697 [Verbose] > │ ### ^/ │
00:00:20 #2698 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:20 #2699 [Verbose] >
00:00:20 #2700 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:20 #2701 [Verbose] > inl (^/) { x y z } c =
00:00:20 #2702 [Verbose] > vec (x / c) (y / c) (z / c)
00:00:20 #2703 [Verbose] > Building /tmp/!dotnet-repl/20240320-1229-4682-8278-8f216be99d3e/main.spi
00:00:20 #2704 [Verbose] >
00:00:20 #2705 [Verbose] > ╭─[ 133.80ms - stdout ]────────────────────────────────────────────────────────╮
00:00:20 #2706 [Verbose] > │ () │
00:00:20 #2707 [Verbose] > │ │
00:00:20 #2708 [Verbose] > │ │
00:00:20 #2709 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:20 #2710 [Verbose] >
00:00:20 #2711 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:20 #2712 [Verbose] > // // test
00:00:20 #2713 [Verbose] >
00:00:20 #2714 [Verbose] > vec 1 2 3 ^/ 5
00:00:20 #2715 [Verbose] > |> _assert_eq (vec 0.2 0.4 0.6)
00:00:20 #2716 [Verbose] > Building /tmp/!dotnet-repl/20240320-1229-4696-9606-925d2fcfb2db/main.spi
00:00:20 #2717 [Verbose] >
00:00:20 #2718 [Verbose] > ╭─[ 142.27ms - stdout ]────────────────────────────────────────────────────────╮
00:00:20 #2719 [Verbose] > │ let rec method0 () : unit = │
00:00:20 #2720 [Verbose] > │ let v0 : string = $"__expect / actual: %A{struct (0.2, 0.4, 0.6)} / │
00:00:20 #2721 [Verbose] > │ expected: %A{struct (0.2, 0.4, 0.6)}" │
00:00:20 #2722 [Verbose] > │ () │
00:00:20 #2723 [Verbose] > │ method0() │
00:00:20 #2724 [Verbose] > │ │
00:00:20 #2725 [Verbose] > │ │
00:00:20 #2726 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:20 #2727 [Verbose] >
00:00:20 #2728 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:20 #2729 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:20 #2730 [Verbose] > │ ### negate_vec │
00:00:20 #2731 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:20 #2732 [Verbose] >
00:00:20 #2733 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:20 #2734 [Verbose] > inl negate_vec v =
00:00:20 #2735 [Verbose] > v ^* -1
00:00:20 #2736 [Verbose] > Building /tmp/!dotnet-repl/20240320-1229-4710-1037-1ab35e757ce3/main.spi
00:00:20 #2737 [Verbose] >
00:00:20 #2738 [Verbose] > ╭─[ 133.44ms - stdout ]────────────────────────────────────────────────────────╮
00:00:20 #2739 [Verbose] > │ () │
00:00:20 #2740 [Verbose] > │ │
00:00:20 #2741 [Verbose] > │ │
00:00:20 #2742 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:20 #2743 [Verbose] >
00:00:20 #2744 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:20 #2745 [Verbose] > // // test
00:00:20 #2746 [Verbose] >
00:00:20 #2747 [Verbose] > vec 1 2 3
00:00:20 #2748 [Verbose] > |> negate_vec
00:00:20 #2749 [Verbose] > |> _assert_eq (vec -1 -2 -3)
00:00:20 #2750 [Verbose] > Building /tmp/!dotnet-repl/20240320-1229-4723-2383-24ebe411b61c/main.spi
00:00:20 #2751 [Verbose] >
00:00:20 #2752 [Verbose] > ╭─[ 133.59ms - stdout ]────────────────────────────────────────────────────────╮
00:00:20 #2753 [Verbose] > │ let rec method0 () : unit = │
00:00:20 #2754 [Verbose] > │ let v0 : string = $"__expect / actual: %A{struct (-1.0, -2.0, -3.0)} / │
00:00:20 #2755 [Verbose] > │ expected: %A{struct (-1.0, -2.0, -3.0)}" │
00:00:20 #2756 [Verbose] > │ () │
00:00:20 #2757 [Verbose] > │ method0() │
00:00:20 #2758 [Verbose] > │ │
00:00:20 #2759 [Verbose] > │ │
00:00:20 #2760 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:20 #2761 [Verbose] >
00:00:20 #2762 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:20 #2763 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:20 #2764 [Verbose] > │ ### ^-^ │
00:00:20 #2765 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:20 #2766 [Verbose] >
00:00:20 #2767 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:20 #2768 [Verbose] > inl (^-^) a b =
00:00:20 #2769 [Verbose] > a ^+^ (negate_vec b)
00:00:20 #2770 [Verbose] > Building /tmp/!dotnet-repl/20240320-1229-4737-3721-3816085a9156/main.spi
00:00:20 #2771 [Verbose] >
00:00:20 #2772 [Verbose] > ╭─[ 131.62ms - stdout ]────────────────────────────────────────────────────────╮
00:00:20 #2773 [Verbose] > │ () │
00:00:20 #2774 [Verbose] > │ │
00:00:20 #2775 [Verbose] > │ │
00:00:20 #2776 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:20 #2777 [Verbose] >
00:00:20 #2778 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:20 #2779 [Verbose] > // // test
00:00:20 #2780 [Verbose] >
00:00:20 #2781 [Verbose] > vec 1 2 3 ^-^ vec 4 5 6
00:00:20 #2782 [Verbose] > |> _assert_eq (vec -3 -3 -3)
00:00:20 #2783 [Verbose] > Building /tmp/!dotnet-repl/20240320-1229-4750-5051-5fdd38a8b679/main.spi
00:00:21 #2784 [Verbose] >
00:00:21 #2785 [Verbose] > ╭─[ 134.80ms - stdout ]────────────────────────────────────────────────────────╮
00:00:21 #2786 [Verbose] > │ let rec method0 () : unit = │
00:00:21 #2787 [Verbose] > │ let v0 : string = $"__expect / actual: %A{struct (-3.0, -3.0, -3.0)} / │
00:00:21 #2788 [Verbose] > │ expected: %A{struct (-3.0, -3.0, -3.0)}" │
00:00:21 #2789 [Verbose] > │ () │
00:00:21 #2790 [Verbose] > │ method0() │
00:00:21 #2791 [Verbose] > │ │
00:00:21 #2792 [Verbose] > │ │
00:00:21 #2793 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:21 #2794 [Verbose] >
00:00:21 #2795 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:21 #2796 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:21 #2797 [Verbose] > │ ### <.> │
00:00:21 #2798 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:21 #2799 [Verbose] >
00:00:21 #2800 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:21 #2801 [Verbose] > inl (<.>) { x = ax y = ay z = az } { x = bx y = by z = bz } =
00:00:21 #2802 [Verbose] > ax * bx + ay * by + az * bz
00:00:21 #2803 [Verbose] > Building /tmp/!dotnet-repl/20240320-1229-4763-6397-608aa76e4f69/main.spi
00:00:21 #2804 [Verbose] >
00:00:21 #2805 [Verbose] > ╭─[ 136.23ms - stdout ]────────────────────────────────────────────────────────╮
00:00:21 #2806 [Verbose] > │ () │
00:00:21 #2807 [Verbose] > │ │
00:00:21 #2808 [Verbose] > │ │
00:00:21 #2809 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:21 #2810 [Verbose] >
00:00:21 #2811 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:21 #2812 [Verbose] > // // test
00:00:21 #2813 [Verbose] >
00:00:21 #2814 [Verbose] > vec 1 2 3 <.> vec 4 5 6
00:00:21 #2815 [Verbose] > |> _assert_eq 32
00:00:21 #2816 [Verbose] > Building /tmp/!dotnet-repl/20240320-1229-4777-7764-714fb9b2f9e0/main.spi
00:00:21 #2817 [Verbose] >
00:00:21 #2818 [Verbose] > ╭─[ 143.05ms - stdout ]────────────────────────────────────────────────────────╮
00:00:21 #2819 [Verbose] > │ let rec method0 () : unit = │
00:00:21 #2820 [Verbose] > │ let v0 : string = $"__expect / actual: %A{32.0} / expected: %A{32.0}" │
00:00:21 #2821 [Verbose] > │ () │
00:00:21 #2822 [Verbose] > │ method0() │
00:00:21 #2823 [Verbose] > │ │
00:00:21 #2824 [Verbose] > │ │
00:00:21 #2825 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:21 #2826 [Verbose] >
00:00:21 #2827 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:21 #2828 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:21 #2829 [Verbose] > │ ### \>\< │
00:00:21 #2830 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:21 #2831 [Verbose] >
00:00:21 #2832 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:21 #2833 [Verbose] > inl (><) (a : vec) (b : vec) =
00:00:21 #2834 [Verbose] > vec
00:00:21 #2835 [Verbose] > (a.y * b.z - a.z * b.y)
00:00:21 #2836 [Verbose] > (a.z * b.x - a.x * b.z)
00:00:21 #2837 [Verbose] > (a.x * b.y - a.y * b.x)
00:00:21 #2838 [Verbose] > Building /tmp/!dotnet-repl/20240320-1229-4792-9202-941fdd6ecc5c/main.spi
00:00:21 #2839 [Verbose] >
00:00:21 #2840 [Verbose] > ╭─[ 139.94ms - stdout ]────────────────────────────────────────────────────────╮
00:00:21 #2841 [Verbose] > │ () │
00:00:21 #2842 [Verbose] > │ │
00:00:21 #2843 [Verbose] > │ │
00:00:21 #2844 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:21 #2845 [Verbose] >
00:00:21 #2846 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:21 #2847 [Verbose] > // // test
00:00:21 #2848 [Verbose] >
00:00:21 #2849 [Verbose] > vec 1 2 3 >< vec 4 5 6
00:00:21 #2850 [Verbose] > |> _assert_eq (vec -3 6 -3)
00:00:21 #2851 [Verbose] > Building /tmp/!dotnet-repl/20240320-1229-4806-0613-0f662cf8c201/main.spi
00:00:21 #2852 [Verbose] >
00:00:21 #2853 [Verbose] > ╭─[ 133.92ms - stdout ]────────────────────────────────────────────────────────╮
00:00:21 #2854 [Verbose] > │ let rec method0 () : unit = │
00:00:21 #2855 [Verbose] > │ let v0 : string = $"__expect / actual: %A{struct (-3.0, 6.0, -3.0)} / │
00:00:21 #2856 [Verbose] > │ expected: %A{struct (-3.0, 6.0, -3.0)}" │
00:00:21 #2857 [Verbose] > │ () │
00:00:21 #2858 [Verbose] > │ method0() │
00:00:21 #2859 [Verbose] > │ │
00:00:21 #2860 [Verbose] > │ │
00:00:21 #2861 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:21 #2862 [Verbose] >
00:00:21 #2863 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:21 #2864 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:21 #2865 [Verbose] > │ ### magnitude │
00:00:21 #2866 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:21 #2867 [Verbose] >
00:00:21 #2868 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:21 #2869 [Verbose] > inl magnitude v =
00:00:21 #2870 [Verbose] > v <.> v |> sqrt
00:00:21 #2871 [Verbose] > Building /tmp/!dotnet-repl/20240320-1229-4819-1952-1a470594a3e3/main.spi
00:00:21 #2872 [Verbose] >
00:00:21 #2873 [Verbose] > ╭─[ 141.59ms - stdout ]────────────────────────────────────────────────────────╮
00:00:21 #2874 [Verbose] > │ () │
00:00:21 #2875 [Verbose] > │ │
00:00:21 #2876 [Verbose] > │ │
00:00:21 #2877 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:21 #2878 [Verbose] >
00:00:21 #2879 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:21 #2880 [Verbose] > // // test
00:00:21 #2881 [Verbose] >
00:00:21 #2882 [Verbose] > vec 1 2 3
00:00:21 #2883 [Verbose] > |> magnitude
00:00:21 #2884 [Verbose] > |> _assert_approx_eq None 3.7416573867739413
00:00:21 #2885 [Verbose] > Building /tmp/!dotnet-repl/20240320-1229-4833-3370-36c421422ebf/main.spi
00:00:21 #2886 [Verbose] >
00:00:21 #2887 [Verbose] > ╭─[ 244.11ms - stdout ]────────────────────────────────────────────────────────╮
00:00:21 #2888 [Verbose] > │ let rec method0 () : unit = │
00:00:21 #2889 [Verbose] > │ let v0 : string = $"__expect / actual: %A{3.7416573867739413} / │
00:00:21 #2890 [Verbose] > │ expected: %A{3.7416573867739413}" │
00:00:21 #2891 [Verbose] > │ () │
00:00:21 #2892 [Verbose] > │ method0() │
00:00:21 #2893 [Verbose] > │ │
00:00:21 #2894 [Verbose] > │ │
00:00:21 #2895 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:21 #2896 [Verbose] >
00:00:21 #2897 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:21 #2898 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:21 #2899 [Verbose] > │ ### v1 │
00:00:21 #2900 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:21 #2901 [Verbose] >
00:00:21 #2902 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:21 #2903 [Verbose] > inl v1 t =
00:00:21 #2904 [Verbose] > 2 *^ (t ** 2 *^ i_hat () ^+^ 3 *^ (t ** 3 *^ j_hat () ^+^ t ** 4 *^ k_hat
00:00:21 #2905 [Verbose] > ()))
00:00:22 #2906 [Verbose] > Building /tmp/!dotnet-repl/20240320-1229-4858-5826-5cd101669882/main.spi
00:00:22 #2907 [Verbose] >
00:00:22 #2908 [Verbose] > ╭─[ 137.62ms - stdout ]────────────────────────────────────────────────────────╮
00:00:22 #2909 [Verbose] > │ () │
00:00:22 #2910 [Verbose] > │ │
00:00:22 #2911 [Verbose] > │ │
00:00:22 #2912 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:22 #2913 [Verbose] >
00:00:22 #2914 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:22 #2915 [Verbose] > // // test
00:00:22 #2916 [Verbose] >
00:00:22 #2917 [Verbose] > v1 1
00:00:22 #2918 [Verbose] > |> _assert_eq (vec 2 6 6)
00:00:22 #2919 [Verbose] > Building /tmp/!dotnet-repl/20240320-1229-4872-7204-741abb6b2e7f/main.spi
00:00:22 #2920 [Verbose] >
00:00:22 #2921 [Verbose] > ╭─[ 137.99ms - stdout ]────────────────────────────────────────────────────────╮
00:00:22 #2922 [Verbose] > │ let rec method0 () : unit = │
00:00:22 #2923 [Verbose] > │ let v0 : string = $"__expect / actual: %A{struct (2.0, 6.0, 6.0)} / │
00:00:22 #2924 [Verbose] > │ expected: %A{struct (2.0, 6.0, 6.0)}" │
00:00:22 #2925 [Verbose] > │ () │
00:00:22 #2926 [Verbose] > │ method0() │
00:00:22 #2927 [Verbose] > │ │
00:00:22 #2928 [Verbose] > │ │
00:00:22 #2929 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:22 #2930 [Verbose] >
00:00:22 #2931 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:22 #2932 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:22 #2933 [Verbose] > │ ### vec_derivative │
00:00:22 #2934 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:22 #2935 [Verbose] >
00:00:22 #2936 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:22 #2937 [Verbose] > type vec_derivative = (f64 -> vec) -> f64 -> vec
00:00:22 #2938 [Verbose] >
00:00:22 #2939 [Verbose] > inl vec_derivative dt : vec_derivative =
00:00:22 #2940 [Verbose] > fun v t =>
00:00:22 #2941 [Verbose] > (v (t + dt / 2) ^-^ v (t - dt / 2)) ^/ dt
00:00:22 #2942 [Verbose] > Building /tmp/!dotnet-repl/20240320-1229-4886-8600-8d7ae1671989/main.spi
00:00:22 #2943 [Verbose] >
00:00:22 #2944 [Verbose] > ╭─[ 133.20ms - stdout ]────────────────────────────────────────────────────────╮
00:00:22 #2945 [Verbose] > │ () │
00:00:22 #2946 [Verbose] > │ │
00:00:22 #2947 [Verbose] > │ │
00:00:22 #2948 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:22 #2949 [Verbose] >
00:00:22 #2950 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:22 #2951 [Verbose] > // // test
00:00:22 #2952 [Verbose] >
00:00:22 #2953 [Verbose] > vec_derivative 0.01 v1 3 .x
00:00:22 #2954 [Verbose] > |> _assert_approx_eq None (derivative 0.01 (v1 >> fun v => v.x) 3)
00:00:22 #2955 [Verbose] > Building /tmp/!dotnet-repl/20240320-1229-4899-9926-98714f9ba4ed/main.spi
00:00:22 #2956 [Verbose] >
00:00:22 #2957 [Verbose] > ╭─[ 137.72ms - stdout ]────────────────────────────────────────────────────────╮
00:00:22 #2958 [Verbose] > │ let rec method0 () : unit = │
00:00:22 #2959 [Verbose] > │ let v0 : string = $"__expect / actual: %A{11.999999999999744} / │
00:00:22 #2960 [Verbose] > │ expected: %A{11.999999999999744}" │
00:00:22 #2961 [Verbose] > │ () │
00:00:22 #2962 [Verbose] > │ method0() │
00:00:22 #2963 [Verbose] > │ │
00:00:22 #2964 [Verbose] > │ │
00:00:22 #2965 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:22 #2966 [Verbose] >
00:00:22 #2967 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:22 #2968 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:22 #2969 [Verbose] > │ ## states_ps │
00:00:22 #2970 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:22 #2971 [Verbose] >
00:00:22 #2972 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:22 #2973 [Verbose] > nominal particle_state =
00:00:22 #2974 [Verbose] > {
00:00:22 #2975 [Verbose] > mass : f64
00:00:22 #2976 [Verbose] > charge : f64
00:00:22 #2977 [Verbose] > time : f64
00:00:22 #2978 [Verbose] > pos_vec : vec
00:00:22 #2979 [Verbose] > velocity : vec
00:00:22 #2980 [Verbose] > }
00:00:22 #2981 [Verbose] >
00:00:22 #2982 [Verbose] > inl default_particle_state () : particle_state =
00:00:22 #2983 [Verbose] > particle_state {
00:00:22 #2984 [Verbose] > mass = 1
00:00:22 #2985 [Verbose] > charge = 0
00:00:22 #2986 [Verbose] > time = 0
00:00:22 #2987 [Verbose] > pos_vec = zero_vec ()
00:00:22 #2988 [Verbose] > velocity = zero_vec ()
00:00:22 #2989 [Verbose] > }
00:00:22 #2990 [Verbose] >
00:00:22 #2991 [Verbose] > type one_body_force = particle_state -> vec
00:00:22 #2992 [Verbose] >
00:00:22 #2993 [Verbose] > nominal d_particle_state =
00:00:22 #2994 [Verbose] > {
00:00:22 #2995 [Verbose] > dmdt : f64
00:00:22 #2996 [Verbose] > dqdt : f64
00:00:22 #2997 [Verbose] > dtdt : f64
00:00:22 #2998 [Verbose] > drdt : vec
00:00:22 #2999 [Verbose] > dvdt : vec
00:00:22 #3000 [Verbose] > }
00:00:22 #3001 [Verbose] >
00:00:22 #3002 [Verbose] > inl newton_second_ps (fs : list one_body_force) (st : particle_state) :
00:00:22 #3003 [Verbose] > d_particle_state =
00:00:22 #3004 [Verbose] > inl f_net = fs |> listm.map (fun f => f st) |> sum_vec
00:00:22 #3005 [Verbose] > d_particle_state {
00:00:22 #3006 [Verbose] > dmdt = 0
00:00:22 #3007 [Verbose] > dqdt = 0
00:00:22 #3008 [Verbose] > dtdt = 1
00:00:22 #3009 [Verbose] > drdt = st.velocity
00:00:22 #3010 [Verbose] > dvdt = f_net ^/ st.mass
00:00:22 #3011 [Verbose] > }
00:00:22 #3012 [Verbose] >
00:00:22 #3013 [Verbose] > inl earth_surface_gravity (st : particle_state) =
00:00:22 #3014 [Verbose] > inl g = 9.80665
00:00:22 #3015 [Verbose] > -st.mass * g *^ k_hat ()
00:00:22 #3016 [Verbose] >
00:00:22 #3017 [Verbose] > inl air_resistance drag rho area (st : particle_state) =
00:00:22 #3018 [Verbose] > -0.5 * drag * rho * area * magnitude st.velocity *^ st.velocity
00:00:22 #3019 [Verbose] >
00:00:22 #3020 [Verbose] > inl euler_cromer_ps dt (deriv : particle_state -> d_particle_state)
00:00:22 #3021 [Verbose] > (particle_state st) =
00:00:22 #3022 [Verbose] > inl dst : d_particle_state = deriv (particle_state st)
00:00:22 #3023 [Verbose] > inl v' = st.velocity ^+^ dst.dvdt ^* dt
00:00:22 #3024 [Verbose] > particle_state { st with
00:00:22 #3025 [Verbose] > time = st.time + dt
00:00:22 #3026 [Verbose] > pos_vec = st.pos_vec ^+^ v' ^* dt
00:00:22 #3027 [Verbose] > velocity = st.velocity ^+^ dst.dvdt ^* dt
00:00:22 #3028 [Verbose] > }
00:00:22 #3029 [Verbose] >
00:00:22 #3030 [Verbose] > instance (+++) d_particle_state = fun (dps : d_particle_state) (dps' :
00:00:22 #3031 [Verbose] > d_particle_state) =>
00:00:22 #3032 [Verbose] > d_particle_state {
00:00:22 #3033 [Verbose] > dmdt = dps.dmdt + dps'.dmdt
00:00:22 #3034 [Verbose] > dqdt = dps.dqdt + dps'.dqdt
00:00:22 #3035 [Verbose] > dtdt = dps.dtdt + dps'.dtdt
00:00:22 #3036 [Verbose] > drdt = dps.drdt ^+^ dps'.drdt
00:00:22 #3037 [Verbose] > dvdt = dps.dvdt ^+^ dps'.dvdt
00:00:22 #3038 [Verbose] > }
00:00:22 #3039 [Verbose] >
00:00:22 #3040 [Verbose] > instance scale d_particle_state = fun w (dps : d_particle_state) =>
00:00:22 #3041 [Verbose] > d_particle_state {
00:00:22 #3042 [Verbose] > dmdt = w * dps.dmdt
00:00:22 #3043 [Verbose] > dqdt = w * dps.dqdt
00:00:22 #3044 [Verbose] > dtdt = w * dps.dtdt
00:00:22 #3045 [Verbose] > drdt = w *^ dps.drdt
00:00:22 #3046 [Verbose] > dvdt = w *^ dps.dvdt
00:00:22 #3047 [Verbose] > }
00:00:22 #3048 [Verbose] >
00:00:22 #3049 [Verbose] > instance shift particle_state = fun dt dps (particle_state st) =>
00:00:22 #3050 [Verbose] > inl (d_particle_state dps) =
00:00:22 #3051 [Verbose] > real
00:00:22 #3052 [Verbose] > match dps with
00:00:22 #3053 [Verbose] > | d_particle_state _ => dps
00:00:22 #3054 [Verbose] > particle_state { st with
00:00:22 #3055 [Verbose] > time = st.time + dps.dtdt * dt
00:00:22 #3056 [Verbose] > pos_vec = st.pos_vec ^+^ dps.drdt ^* dt
00:00:22 #3057 [Verbose] > velocity = st.velocity ^+^ dps.dvdt ^* dt
00:00:22 #3058 [Verbose] > }
00:00:22 #3059 [Verbose] >
00:00:22 #3060 [Verbose] > inl states_ps (method : numerical_method particle_state d_particle_state) : _ ->
00:00:22 #3061 [Verbose] > _ -> i32 -> particle_state =
00:00:22 #3062 [Verbose] > newton_second_ps >> method >> seq.iterate_
00:00:22 #3063 [Verbose] >
00:00:22 #3064 [Verbose] > inl z_ge0 sts =
00:00:22 #3065 [Verbose] > sts
00:00:22 #3066 [Verbose] > |> seq.take_while_ (fun (particle_state st) _ => st.pos_vec.z >= 0)
00:00:22 #3067 [Verbose] >
00:00:22 #3068 [Verbose] > inl trajectory sts =
00:00:22 #3069 [Verbose] > sts |> listm.map (fun (particle_state st) => st.pos_vec.y, st.pos_vec.z)
00:00:22 #3070 [Verbose] > Building /tmp/!dotnet-repl/20240320-1229-4913-1326-1c4b5406631c/main.spi
00:00:22 #3071 [Verbose] >
00:00:22 #3072 [Verbose] > ╭─[ 144.42ms - stdout ]────────────────────────────────────────────────────────╮
00:00:22 #3073 [Verbose] > │ () │
00:00:22 #3074 [Verbose] > │ │
00:00:22 #3075 [Verbose] > │ │
00:00:22 #3076 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:22 #3077 [Verbose] >
00:00:22 #3078 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:22 #3079 [Verbose] > // // test
00:00:22 #3080 [Verbose] >
00:00:22 #3081 [Verbose] > inl update_ps (method : numerical_method particle_state d_particle_state) =
00:00:22 #3082 [Verbose] > newton_second_ps >> method
00:00:22 #3083 [Verbose] >
00:00:22 #3084 [Verbose] > inl position_ps (method : numerical_method particle_state d_particle_state) fs
00:00:22 #3085 [Verbose] > st t =
00:00:22 #3086 [Verbose] > inl states : i32 -> particle_state = states_ps method fs st
00:00:22 #3087 [Verbose] > inl dt = (states 1).time - (states 0).time
00:00:22 #3088 [Verbose] > inl num_steps = t / dt |> math.round |> abs
00:00:22 #3089 [Verbose] > inl st1 = solver' method (newton_second_ps fs) st num_steps
00:00:22 #3090 [Verbose] > st1.pos_vec
00:00:22 #3091 [Verbose] >
00:00:22 #3092 [Verbose] > inl sun_gravity (st : particle_state) : vec =
00:00:22 #3093 [Verbose] > inl big_g = 0.0000000000667408
00:00:22 #3094 [Verbose] > inl sun_mass = 1988480000000000000000000000000
00:00:22 #3095 [Verbose] > -big_g * sun_mass * st.mass *^ st.pos_vec ^/ magnitude st.pos_vec ** 3
00:00:22 #3096 [Verbose] >
00:00:22 #3097 [Verbose] > inl wind_force v_wind drag rho area (st : particle_state) =
00:00:22 #3098 [Verbose] > inl v_rel = st.velocity ^-^ v_wind
00:00:22 #3099 [Verbose] > -0.5 * drag * rho * area * magnitude v_rel *^ v_rel
00:00:22 #3100 [Verbose] >
00:00:22 #3101 [Verbose] > inl rock_state () =
00:00:22 #3102 [Verbose] > inl (particle_state default_particle_state') = default_particle_state ()
00:00:22 #3103 [Verbose] > particle_state { default_particle_state' with
00:00:22 #3104 [Verbose] > mass = 2
00:00:22 #3105 [Verbose] > velocity = vec 3 0 4
00:00:22 #3106 [Verbose] > }
00:00:22 #3107 [Verbose] >
00:00:22 #3108 [Verbose] > inl halley_update dt =
00:00:22 #3109 [Verbose] > update_ps (euler_cromer_ps dt) [[ sun_gravity ]]
00:00:22 #3110 [Verbose] >
00:00:22 #3111 [Verbose] > inl halley_initial () =
00:00:22 #3112 [Verbose] > inl (particle_state default_particle_state') = default_particle_state ()
00:00:22 #3113 [Verbose] > particle_state { default_particle_state' with
00:00:22 #3114 [Verbose] > mass = 220000000000000
00:00:22 #3115 [Verbose] > pos_vec = 87660000000 *^ i_hat ()
00:00:22 #3116 [Verbose] > velocity = 54569 *^ j_hat ()
00:00:22 #3117 [Verbose] > }
00:00:22 #3118 [Verbose] > Building /tmp/!dotnet-repl/20240320-1229-4927-2766-25d0422007aa/main.spi
00:00:22 #3119 [Verbose] >
00:00:22 #3120 [Verbose] > ╭─[ 164.15ms - stdout ]────────────────────────────────────────────────────────╮
00:00:22 #3121 [Verbose] > │ () │
00:00:22 #3122 [Verbose] > │ │
00:00:22 #3123 [Verbose] > │ │
00:00:22 #3124 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:22 #3125 [Verbose] >
00:00:22 #3126 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:22 #3127 [Verbose] > // // test
00:00:22 #3128 [Verbose] >
00:00:22 #3129 [Verbose] > inl baseball_forces () =
00:00:22 #3130 [Verbose] > inl area = pi * (0.074 / 2) ** 2
00:00:22 #3131 [Verbose] > [[
00:00:22 #3132 [Verbose] > earth_surface_gravity
00:00:22 #3133 [Verbose] > air_resistance 0.3 1.225 area
00:00:22 #3134 [Verbose] > ]]
00:00:22 #3135 [Verbose] >
00:00:22 #3136 [Verbose] > inl baseball_trajectory dt v0 theta_deg =
00:00:22 #3137 [Verbose] > inl theta_rad = theta_deg * pi / 180
00:00:22 #3138 [Verbose] > inl vy0 = v0 * cos theta_rad
00:00:22 #3139 [Verbose] > inl vz0 = v0 * sin theta_rad
00:00:22 #3140 [Verbose] > inl initial_state =
00:00:22 #3141 [Verbose] > particle_state {
00:00:22 #3142 [Verbose] > mass = 0.145
00:00:22 #3143 [Verbose] > charge = 0
00:00:22 #3144 [Verbose] > time = 0
00:00:22 #3145 [Verbose] > pos_vec = zero_vec ()
00:00:22 #3146 [Verbose] > velocity = vec 0 vy0 vz0
00:00:22 #3147 [Verbose] > }
00:00:22 #3148 [Verbose] > states_ps (euler_cromer_ps dt) (baseball_forces ()) initial_state
00:00:22 #3149 [Verbose] > >> Some
00:00:22 #3150 [Verbose] > |> z_ge0
00:00:22 #3151 [Verbose] > |> trajectory
00:00:22 #3152 [Verbose] >
00:00:22 #3153 [Verbose] > inl baseball_range dt v0 theta_deg =
00:00:22 #3154 [Verbose] > baseball_trajectory dt v0 theta_deg
00:00:22 #3155 [Verbose] > |> listm.fold (fun _ (y, _) => y) 0
00:00:22 #3156 [Verbose] >
00:00:22 #3157 [Verbose] > inl x : a _ f64 = am'.init_series 10 80 1
00:00:22 #3158 [Verbose] > inl y = x |> am.map (baseball_range 0.01 45)
00:00:22 #3159 [Verbose] > "range for a baseball hit at 45 m/s",
00:00:22 #3160 [Verbose] > "angle above horizontal (degrees)",
00:00:22 #3161 [Verbose] > "",
00:00:22 #3162 [Verbose] > ;[[ "horizontal range (m)", x, y ]]
00:00:22 #3163 [Verbose] > Building /tmp/!dotnet-repl/20240320-1229-4944-4430-4afa86d694a4/main.spi
00:00:23 #3164 [Verbose] >
00:00:23 #3165 [Verbose] > ╭─[ 834.63ms - return value ]──────────────────────────────────────────────────╮
00:00:23 #3166 [Verbose] > │ <svg width="640" height="480" viewBox="0 0 640 480" │
00:00:23 #3167 [Verbose] > │ xmlns="http://www.w3.org/2000/svg"> │
00:00:23 #3168 [Verbose] > │ <rect x="0" y="0" width="640" height="480" opacity="1" fill="#141414" │
00:00:23 #3169 [Verbose] > │ stroke="none"/> │
00:00:23 #3170 [Verbose] > │ <text x="320" y="10" dy="0.76em" text-anchor="middle" │
00:00:23 #3171 [Verbose] > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1" │
00:00:23 #3172 [Verbose] > │ fill="#FFFFFF"> │
00:00:23 #3173 [Verbose] > │ range for a baseball hit at 45 m/s │
00:00:23 #3174 [Verbose] > │ </text> │
00:00:23 #3175 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="55" y1="424" x2="55" │
00:00:23 #3176 [Verbose] > │ y2="75"/> │
00:00:23 #3177 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="62" y1="424" x2="62" │
00:00:23 #3178 [Verbose] > │ y2="75"/> │
00:00:23 #3179 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" y1="424" x2="69" │
00:00:23 #3180 [Verbose] > │ y2="75"/> │
00:00:23 #3181 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="77" y1="424" x2="77" │
00:00:23 #3182 [Verbose] > │ y2="75"/> │
00:00:23 #3183 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="... │
00:00:23 #3184 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:23 #3185 [Verbose] >
00:00:23 #3186 [Verbose] > ╭─[ 838.03ms - stdout ]────────────────────────────────────────────────────────╮
00:00:23 #3187 [Verbose] > │ type Mut0 = {mutable l0 : int32} │
00:00:23 #3188 [Verbose] > │ and UH0 = │
00:00:23 #3189 [Verbose] > │ | UH0_0 of float * float * float * float * float * float * float * float │
00:00:23 #3190 [Verbose] > │ * float * UH0 │
00:00:23 #3191 [Verbose] > │ | UH0_1 │
00:00:23 #3192 [Verbose] > │ and UH1 = │
00:00:23 #3193 [Verbose] > │ | UH1_0 of float * float * UH1 │
00:00:23 #3194 [Verbose] > │ | UH1_1 │
00:00:23 #3195 [Verbose] > │ let rec method1 (v0 : Mut0) : bool = │
00:00:23 #3196 [Verbose] > │ let v1 : int32 = v0.l0 │
00:00:23 #3197 [Verbose] > │ let v2 : bool = v1 < 71 │
00:00:23 #3198 [Verbose] > │ v2 │
00:00:23 #3199 [Verbose] > │ and method2 (v0 : int32, v1 : Mut0) : bool = │
00:00:23 #3200 [Verbose] > │ let v2 : int32 = v1.l0 │
00:00:23 #3201 [Verbose] > │ let v3 : bool = v2 < v0 │
00:00:23 #3202 [Verbose] > │ v3 │
00:00:23 #3203 [Verbose] > │ and method4 (v0 : float, v1 : float, v2 : float, v3 : float, v4 : float, v5 │
00:00:23 #3204 [Verbose] > │ : float, v6 : float, v7 : float, v8 : float, v9 : int32) : struct (float * │
00:00:23 #3205 [Verbose] > │ float * float * float * float * float * float * float * float) = │
00:00:23 #3206 [Verbose] > │ let v10 : bool = v9 <= 0 │
00:00:23 #3207 [Verbose] > │ if v10 then │
00:00:23 #3208 [Verbose] > │ struct (v0, v1, v2, v3, v4, v5, v6, v7, v8) │
00:00:23 #3209 [Verbose] > │ else │
00:00:23 #3210 [Verbose] > │ let v11 : float = v6 * v6 │
00:00:23 #3211 [Verbose] > │ let v12 : float = v7 * v7 │
00:00:23 #3212 [Verbose] > │ let v13 : float = v11 + v12 │
00:00:23 #3213 [Verbose] > │ let v14 : float = v8 * v8 │
00:00:23 #3214 [Verbose] > │ let v15 : float = v13 + v14 │
00:00:23 #3215 [Verbose] > │ let v16 : float = sqrt v15 │
00:00:23 #3216 [Verbose] > │ let v17 : float = -0.0007902794129829633 * v16 │
00:00:23 #3217 [Verbose] > │ let v18 : float = v17 * v6 │
00:00:23 #3218 [Verbose] > │ let v19 : float = v17 * v7 │
00:00:23 #3219 [Verbose] > │ let v20 : float = v17 * v8 │
00:00:23 #3220 [Verbose] > │ let v21 : float = -v1 │
00:00:23 #3221 [Verbose] > │ let v22 : float = v21 * 9.80665 │
00:00:23 #3222 [Verbose] > │ let v23 : float = v22 * 0.0 │
00:00:23 #3223 [Verbose] > │ let v24 : float = v23 + v18 │
00:00:23 #3224 [Verbose] > │ let v25 : float = v23 + v19 │
00:00:23 #3225 [Verbose] > │ let v26 : float = v22 + v20 │
00:00:23 #3226 [Verbose] > │ let v27 : float = v24 / v1 │
00:00:23 #3227 [Verbose] > │ let v28 : float = v25 / v1 │
00:00:23 #3228 [Verbose] > │ let v29 : float = v26 / v1 │
00:00:23 #3229 [Verbose] > │ let v30 : float = 0.01 * v27 │
00:00:23 #3230 [Verbose] > │ let v31 : float = 0.01 * v28 │
00:00:23 #3231 [Verbose] > │ let v32 : float = 0.01 * v29 │
00:00:23 #3232 [Verbose] > │ let v33 : float = v6 + v30 │
00:00:23 #3233 [Verbose] > │ let v34 : float = v7 + v31 │
00:00:23 #3234 [Verbose] > │ let v35 : float = v8 + v32 │
00:00:23 #3235 [Verbose] > │ let v36 : float = v5 + 0.01 │
00:00:23 #3236 [Verbose] > │ let v37 : float = 0.01 * v33 │
00:00:23 #3237 [Verbose] > │ let v38 : float = 0.01 * v34 │
00:00:23 #3238 [Verbose] > │ let v39 : float = 0.01 * v35 │
00:00:23 #3239 [Verbose] > │ let v40 : float = v2 + v37 │
00:00:23 #3240 [Verbose] > │ let v41 : float = v3 + v38 │
00:00:23 #3241 [Verbose] > │ let v42 : float = v4 + v39 │
00:00:23 #3242 [Verbose] > │ let v43 : int32 = v9 - 1 │
00:00:23 #3243 [Verbose] > │ method4(v0, v1, v40, v41, v42, v36, v33, v34, v35, v43) │
00:00:23 #3244 [Verbose] > │ and method5 (v0 : UH0, v1 : UH0) : UH0 = │
00:00:23 #3245 [Verbose] > │ match v0 with │
00:00:23 #3246 [Verbose] > │ | UH0_0(v2, v3, v4, v5, v6, v7, v8, v9, v10, v11) -> (* Cons *) │
00:00:23 #3247 [Verbose] > │ let v12 : UH0 = UH0_0(v2, v3, v4, v5, v6, v7, v8, v9, v10, v1) │
00:00:23 #3248 [Verbose] > │ method5(v11, v12) │
00:00:23 #3249 [Verbose] > │ | UH0_1 -> (* Nil *) │
00:00:23 #3250 [Verbose] > │ v1 │
00:00:23 #3251 [Verbose] > │ and method3 (v0 : float, v1 : float, v2 : UH0, v3 : int32) : UH0 = │
00:00:23 #3252 [Verbose] > │ let v4 : float = 0.0 │
00:00:23 #3253 [Verbose] > │ let v5 : float = 0.145 │
00:00:23 #3254 [Verbose] > │ let v6 : float = 0.0 │
00:00:23 #3255 [Verbose] > │ let v7 : float = 0.0 │
00:00:23 #3256 [Verbose] > │ let v8 : float = 0.0 │
00:00:23 #3257 [Verbose] > │ let v9 : float = 0.0 │
00:00:23 #3258 [Verbose] > │ let v10 : float = 0.0 │
00:00:23 #3259 [Verbose] > │ let struct (v11 : float, v12 : float, v13 : float, v14 : float, v15 : │
00:00:23 #3260 [Verbose] > │ float, v16 : float, v17 : float, v18 : float, v19 : float) = method4(v4, v5, │
00:00:23 #3261 [Verbose] > │ v6, v7, v8, v9, v10, v0, v1, v3) │
00:00:23 #3262 [Verbose] > │ let v20 : bool = v15 >= 0.0 │
00:00:23 #3263 [Verbose] > │ if v20 then │
00:00:23 #3264 [Verbose] > │ let v21 : UH0 = UH0_0(v11, v12, v13, v14, v15, v16, v17, v18, v19, │
00:00:23 #3265 [Verbose] > │ v2) │
00:00:23 #3266 [Verbose] > │ let v22 : int32 = v3 + 1 │
00:00:23 #3267 [Verbose] > │ method3(v0, v1, v21, v22) │
00:00:23 #3268 [Verbose] > │ else │
00:00:23 #3269 [Verbose] > │ let v24 : UH0 = UH0_1 │
00:00:23 #3270 [Verbose] > │ method5(v2, v24) │
00:00:23 #3271 [Verbose] > │ and method6 (v0 : UH0, v1 : UH1) : UH1 = │
00:00:23 #3272 [Verbose] > │ match v0 with │
00:00:23 #3273 [Verbose] > │ | UH0_0(v2, v3, v4, v5, v6, v7, v8, v9, v10, v11) -> (* Cons *) │
00:00:23 #3274 [Verbose] > │ let v12 : UH1 = method6(v11, v1) │
00:00:23 #3275 [Verbose] > │ UH1_0(v5, v6, v12) │
00:00:23 #3276 [Verbose] > │ | UH0_1 -> (* Nil *) │
00:00:23 #3277 [Verbose] > │ v1 │
00:00:23 #3278 [Verbose] > │ and method7 (v0 : UH1, v1 : float) : float = │
00:00:23 #3279 [Verbose] > │ match v0 with │
00:00:23 #3280 [Verbose] > │ | UH1_0(v2, v3, v4) -> (* Cons *) │
00:00:23 #3281 [Verbose] > │ method7(v4, v2) │
00:00:23 #3282 [Verbose] > │ | UH1_1 -> (* Nil *) │
00:00:23 #3283 [Verbose] > │ v1 │
00:00:23 #3284 [Verbose] > │ and method8 (v0 : (struct (string * (float []) * (float [])) [])) : (struct │
00:00:23 #3285 [Verbose] > │ (string * (float []) * (float [])) []) = │
00:00:23 #3286 [Verbose] > │ v0 │
00:00:23 #3287 [Verbose] > │ and method0 () : struct (string * string * string * (struct (string * (float │
00:00:23 #3288 [Verbose] > │ []) * (float [])) [])) = │
00:00:23 #3289 [Verbose] > │ let v0 : (float []) = Array.zeroCreate<float> (71) │
00:00:23 #3290 [Verbose] > │ let v1 : Mut0 = {l0 = 0} : Mut0 │
00:00:23 #3291 [Verbose] > │ while method1(v1) do │
00:00:23 #3292 [Verbose] > │ let v3 : int32 = v1.l0 │
00:00:23 #3293 [Verbose] > │ let v4 : float = float v3 │
00:00:23 #3294 [Verbose] > │ let v5 : float = 10.0 + v4 │
00:00:23 #3295 [Verbose] > │ v0.[int v3] <- v5 │
00:00:23 #3296 [Verbose] > │ let v6 : int32 = v3 + 1 │
00:00:23 #3297 [Verbose] > │ v1.l0 <- v6 │
00:00:23 #3298 [Verbose] > │ () │
00:00:23 #3299 [Verbose] > │ let v7 : int32 = v0.Length │
00:00:23 #3300 [Verbose] > │ let v8 : (float []) = Array.zeroCreate<float> (v7) │
00:00:23 #3301 [Verbose] > │ let v9 : Mut0 = {l0 = 0} : Mut0 │
00:00:23 #3302 [Verbose] > │ while method2(v7, v9) do │
00:00:23 #3303 [Verbose] > │ let v11 : int32 = v9.l0 │
00:00:23 #3304 [Verbose] > │ let v12 : float = v0.[int v11] │
00:00:23 #3305 [Verbose] > │ let v13 : float = v12 * 3.141592653589793 │
00:00:23 #3306 [Verbose] > │ let v14 : float = v13 / 180.0 │
00:00:23 #3307 [Verbose] > │ let v15 : float = cos v14 │
00:00:23 #3308 [Verbose] > │ let v16 : float = 45.0 * v15 │
00:00:23 #3309 [Verbose] > │ let v17 : float = sin v14 │
00:00:23 #3310 [Verbose] > │ let v18 : float = 45.0 * v17 │
00:00:23 #3311 [Verbose] > │ let v19 : UH0 = UH0_1 │
00:00:23 #3312 [Verbose] > │ let v20 : int32 = 0 │
00:00:23 #3313 [Verbose] > │ let v21 : UH0 = method3(v16, v18, v19, v20) │
00:00:23 #3314 [Verbose] > │ let v22 : UH1 = UH1_1 │
00:00:23 #3315 [Verbose] > │ let v23 : UH1 = method6(v21, v22) │
00:00:23 #3316 [Verbose] > │ let v24 : float = 0.0 │
00:00:23 #3317 [Verbose] > │ let v25 : float = method7(v23, v24) │
00:00:23 #3318 [Verbose] > │ v8.[int v11] <- v25 │
00:00:23 #3319 [Verbose] > │ let v26 : int32 = v11 + 1 │
00:00:23 #3320 [Verbose] > │ v9.l0 <- v26 │
00:00:23 #3321 [Verbose] > │ () │
00:00:23 #3322 [Verbose] > │ let v27 : string = "horizontal range (m)" │
00:00:23 #3323 [Verbose] > │ let v28 : (struct (string * (float []) * (float [])) []) = [|struct │
00:00:23 #3324 [Verbose] > │ (v27, v0, v8)|] │
00:00:23 #3325 [Verbose] > │ let v29 : (struct (string * (float []) * (float [])) []) = method8(v28) │
00:00:23 #3326 [Verbose] > │ let v30 : string = "range for a baseball hit at 45 m/s" │
00:00:23 #3327 [Verbose] > │ let v31 : string = "angle above horizontal (degrees)" │
00:00:23 #3328 [Verbose] > │ let v32 : string = "" │
00:00:23 #3329 [Verbose] > │ struct (v30, v31, v32, v29) │
00:00:23 #3330 [Verbose] > │ method0() │
00:00:23 #3331 [Verbose] > │ │
00:00:23 #3332 [Verbose] > │ │
00:00:23 #3333 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:23 #3334 [Verbose] >
00:00:23 #3335 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:23 #3336 [Verbose] > // // test
00:00:23 #3337 [Verbose] >
00:00:23 #3338 [Verbose] > inl best_angle (min, max) =
00:00:23 #3339 [Verbose] > let rec loop theta_deg (best_range, best_theta_deg) =
00:00:23 #3340 [Verbose] > if theta_deg > max
00:00:23 #3341 [Verbose] > then best_range, best_theta_deg
00:00:23 #3342 [Verbose] > else
00:00:23 #3343 [Verbose] > inl range = baseball_range 0.01 45 theta_deg
00:00:23 #3344 [Verbose] > loop
00:00:23 #3345 [Verbose] > (theta_deg + 1)
00:00:23 #3346 [Verbose] > (if range > best_range
00:00:23 #3347 [Verbose] > then range, theta_deg
00:00:23 #3348 [Verbose] > else best_range, best_theta_deg)
00:00:23 #3349 [Verbose] > loop min (0f64, min)
00:00:23 #3350 [Verbose] >
00:00:23 #3351 [Verbose] > best_angle (30f64, 60f64)
00:00:23 #3352 [Verbose] > |> _assert_eq (116.77499158246208, 41)
00:00:23 #3353 [Verbose] > Building /tmp/!dotnet-repl/20240320-1229-5028-2838-276119cb37fe/main.spi
00:00:24 #3354 [Verbose] >
00:00:24 #3355 [Verbose] > ╭─[ 540.47ms - stdout ]────────────────────────────────────────────────────────╮
00:00:24 #3356 [Verbose] > │ type UH0 = │
00:00:24 #3357 [Verbose] > │ | UH0_0 of float * float * float * float * float * float * float * float │
00:00:24 #3358 [Verbose] > │ * float * UH0 │
00:00:24 #3359 [Verbose] > │ | UH0_1 │
00:00:24 #3360 [Verbose] > │ and UH1 = │
00:00:24 #3361 [Verbose] > │ | UH1_0 of float * float * UH1 │
00:00:24 #3362 [Verbose] > │ | UH1_1 │
00:00:24 #3363 [Verbose] > │ let rec method3 (v0 : float, v1 : float, v2 : float, v3 : float, v4 : float, │
00:00:24 #3364 [Verbose] > │ v5 : float, v6 : float, v7 : float, v8 : float, v9 : int32) : struct (float │
00:00:24 #3365 [Verbose] > │ * float * float * float * float * float * float * float * float) = │
00:00:24 #3366 [Verbose] > │ let v10 : bool = v9 <= 0 │
00:00:24 #3367 [Verbose] > │ if v10 then │
00:00:24 #3368 [Verbose] > │ struct (v0, v1, v2, v3, v4, v5, v6, v7, v8) │
00:00:24 #3369 [Verbose] > │ else │
00:00:24 #3370 [Verbose] > │ let v11 : float = v6 * v6 │
00:00:24 #3371 [Verbose] > │ let v12 : float = v7 * v7 │
00:00:24 #3372 [Verbose] > │ let v13 : float = v11 + v12 │
00:00:24 #3373 [Verbose] > │ let v14 : float = v8 * v8 │
00:00:24 #3374 [Verbose] > │ let v15 : float = v13 + v14 │
00:00:24 #3375 [Verbose] > │ let v16 : float = sqrt v15 │
00:00:24 #3376 [Verbose] > │ let v17 : float = -0.0007902794129829633 * v16 │
00:00:24 #3377 [Verbose] > │ let v18 : float = v17 * v6 │
00:00:24 #3378 [Verbose] > │ let v19 : float = v17 * v7 │
00:00:24 #3379 [Verbose] > │ let v20 : float = v17 * v8 │
00:00:24 #3380 [Verbose] > │ let v21 : float = -v1 │
00:00:24 #3381 [Verbose] > │ let v22 : float = v21 * 9.80665 │
00:00:24 #3382 [Verbose] > │ let v23 : float = v22 * 0.0 │
00:00:24 #3383 [Verbose] > │ let v24 : float = v23 + v18 │
00:00:24 #3384 [Verbose] > │ let v25 : float = v23 + v19 │
00:00:24 #3385 [Verbose] > │ let v26 : float = v22 + v20 │
00:00:24 #3386 [Verbose] > │ let v27 : float = v24 / v1 │
00:00:24 #3387 [Verbose] > │ let v28 : float = v25 / v1 │
00:00:24 #3388 [Verbose] > │ let v29 : float = v26 / v1 │
00:00:24 #3389 [Verbose] > │ let v30 : float = 0.01 * v27 │
00:00:24 #3390 [Verbose] > │ let v31 : float = 0.01 * v28 │
00:00:24 #3391 [Verbose] > │ let v32 : float = 0.01 * v29 │
00:00:24 #3392 [Verbose] > │ let v33 : float = v6 + v30 │
00:00:24 #3393 [Verbose] > │ let v34 : float = v7 + v31 │
00:00:24 #3394 [Verbose] > │ let v35 : float = v8 + v32 │
00:00:24 #3395 [Verbose] > │ let v36 : float = v5 + 0.01 │
00:00:24 #3396 [Verbose] > │ let v37 : float = 0.01 * v33 │
00:00:24 #3397 [Verbose] > │ let v38 : float = 0.01 * v34 │
00:00:24 #3398 [Verbose] > │ let v39 : float = 0.01 * v35 │
00:00:24 #3399 [Verbose] > │ let v40 : float = v2 + v37 │
00:00:24 #3400 [Verbose] > │ let v41 : float = v3 + v38 │
00:00:24 #3401 [Verbose] > │ let v42 : float = v4 + v39 │
00:00:24 #3402 [Verbose] > │ let v43 : int32 = v9 - 1 │
00:00:24 #3403 [Verbose] > │ method3(v0, v1, v40, v41, v42, v36, v33, v34, v35, v43) │
00:00:24 #3404 [Verbose] > │ and method4 (v0 : UH0, v1 : UH0) : UH0 = │
00:00:24 #3405 [Verbose] > │ match v0 with │
00:00:24 #3406 [Verbose] > │ | UH0_0(v2, v3, v4, v5, v6, v7, v8, v9, v10, v11) -> (* Cons *) │
00:00:24 #3407 [Verbose] > │ let v12 : UH0 = UH0_0(v2, v3, v4, v5, v6, v7, v8, v9, v10, v1) │
00:00:24 #3408 [Verbose] > │ method4(v11, v12) │
00:00:24 #3409 [Verbose] > │ | UH0_1 -> (* Nil *) │
00:00:24 #3410 [Verbose] > │ v1 │
00:00:24 #3411 [Verbose] > │ and method2 (v0 : float, v1 : float, v2 : UH0, v3 : int32) : UH0 = │
00:00:24 #3412 [Verbose] > │ let v4 : float = 0.0 │
00:00:24 #3413 [Verbose] > │ let v5 : float = 0.145 │
00:00:24 #3414 [Verbose] > │ let v6 : float = 0.0 │
00:00:24 #3415 [Verbose] > │ let v7 : float = 0.0 │
00:00:24 #3416 [Verbose] > │ let v8 : float = 0.0 │
00:00:24 #3417 [Verbose] > │ let v9 : float = 0.0 │
00:00:24 #3418 [Verbose] > │ let v10 : float = 0.0 │
00:00:24 #3419 [Verbose] > │ let struct (v11 : float, v12 : float, v13 : float, v14 : float, v15 : │
00:00:24 #3420 [Verbose] > │ float, v16 : float, v17 : float, v18 : float, v19 : float) = method3(v4, v5, │
00:00:24 #3421 [Verbose] > │ v6, v7, v8, v9, v10, v0, v1, v3) │
00:00:24 #3422 [Verbose] > │ let v20 : bool = v15 >= 0.0 │
00:00:24 #3423 [Verbose] > │ if v20 then │
00:00:24 #3424 [Verbose] > │ let v21 : UH0 = UH0_0(v11, v12, v13, v14, v15, v16, v17, v18, v19, │
00:00:24 #3425 [Verbose] > │ v2) │
00:00:24 #3426 [Verbose] > │ let v22 : int32 = v3 + 1 │
00:00:24 #3427 [Verbose] > │ method2(v0, v1, v21, v22) │
00:00:24 #3428 [Verbose] > │ else │
00:00:24 #3429 [Verbose] > │ let v24 : UH0 = UH0_1 │
00:00:24 #3430 [Verbose] > │ method4(v2, v24) │
00:00:24 #3431 [Verbose] > │ and method5 (v0 : UH0, v1 : UH1) : UH1 = │
00:00:24 #3432 [Verbose] > │ match v0 with │
00:00:24 #3433 [Verbose] > │ | UH0_0(v2, v3, v4, v5, v6, v7, v8, v9, v10, v11) -> (* Cons *) │
00:00:24 #3434 [Verbose] > │ let v12 : UH1 = method5(v11, v1) │
00:00:24 #3435 [Verbose] > │ UH1_0(v5, v6, v12) │
00:00:24 #3436 [Verbose] > │ | UH0_1 -> (* Nil *) │
00:00:24 #3437 [Verbose] > │ v1 │
00:00:24 #3438 [Verbose] > │ and method6 (v0 : UH1, v1 : float) : float = │
00:00:24 #3439 [Verbose] > │ match v0 with │
00:00:24 #3440 [Verbose] > │ | UH1_0(v2, v3, v4) -> (* Cons *) │
00:00:24 #3441 [Verbose] > │ method6(v4, v2) │
00:00:24 #3442 [Verbose] > │ | UH1_1 -> (* Nil *) │
00:00:24 #3443 [Verbose] > │ v1 │
00:00:24 #3444 [Verbose] > │ and method1 (v0 : float, v1 : float, v2 : float) : struct (float * float) = │
00:00:24 #3445 [Verbose] > │ let v3 : bool = v0 > 60.0 │
00:00:24 #3446 [Verbose] > │ if v3 then │
00:00:24 #3447 [Verbose] > │ struct (v2, v1) │
00:00:24 #3448 [Verbose] > │ else │
00:00:24 #3449 [Verbose] > │ let v4 : float = v0 * 3.141592653589793 │
00:00:24 #3450 [Verbose] > │ let v5 : float = v4 / 180.0 │
00:00:24 #3451 [Verbose] > │ let v6 : float = cos v5 │
00:00:24 #3452 [Verbose] > │ let v7 : float = 45.0 * v6 │
00:00:24 #3453 [Verbose] > │ let v8 : float = sin v5 │
00:00:24 #3454 [Verbose] > │ let v9 : float = 45.0 * v8 │
00:00:24 #3455 [Verbose] > │ let v10 : UH0 = UH0_1 │
00:00:24 #3456 [Verbose] > │ let v11 : int32 = 0 │
00:00:24 #3457 [Verbose] > │ let v12 : UH0 = method2(v7, v9, v10, v11) │
00:00:24 #3458 [Verbose] > │ let v13 : UH1 = UH1_1 │
00:00:24 #3459 [Verbose] > │ let v14 : UH1 = method5(v12, v13) │
00:00:24 #3460 [Verbose] > │ let v15 : float = 0.0 │
00:00:24 #3461 [Verbose] > │ let v16 : float = method6(v14, v15) │
00:00:24 #3462 [Verbose] > │ let v17 : float = v0 + 1.0 │
00:00:24 #3463 [Verbose] > │ let v18 : bool = v16 > v2 │
00:00:24 #3464 [Verbose] > │ let struct (v19 : float, v20 : float) = │
00:00:24 #3465 [Verbose] > │ if v18 then │
00:00:24 #3466 [Verbose] > │ struct (v16, v0) │
00:00:24 #3467 [Verbose] > │ else │
00:00:24 #3468 [Verbose] > │ struct (v2, v1) │
00:00:24 #3469 [Verbose] > │ method1(v17, v20, v19) │
00:00:24 #3470 [Verbose] > │ and method7 (v0 : bool) : bool = │
00:00:24 #3471 [Verbose] > │ v0 │
00:00:24 #3472 [Verbose] > │ and method0 () : unit = │
00:00:24 #3473 [Verbose] > │ let v0 : float = 30.0 │
00:00:24 #3474 [Verbose] > │ let v1 : float = 0.0 │
00:00:24 #3475 [Verbose] > │ let v2 : float = 30.0 │
00:00:24 #3476 [Verbose] > │ let struct (v3 : float, v4 : float) = method1(v0, v2, v1) │
00:00:24 #3477 [Verbose] > │ let v5 : bool = v3 = 116.77499158246208 │
00:00:24 #3478 [Verbose] > │ let v7 : bool = │
00:00:24 #3479 [Verbose] > │ if v5 then │
00:00:24 #3480 [Verbose] > │ let v6 : bool = v4 = 41.0 │
00:00:24 #3481 [Verbose] > │ v6 │
00:00:24 #3482 [Verbose] > │ else │
00:00:24 #3483 [Verbose] > │ false │
00:00:24 #3484 [Verbose] > │ let v9 : bool = │
00:00:24 #3485 [Verbose] > │ if v7 then │
00:00:24 #3486 [Verbose] > │ true │
00:00:24 #3487 [Verbose] > │ else │
00:00:24 #3488 [Verbose] > │ method7(v7) │
00:00:24 #3489 [Verbose] > │ let v10 : string = $"__expect / actual: %A{struct (v3, v4)} / expected: │
00:00:24 #3490 [Verbose] > │ %A{struct (116.77499158246208, 41.0)}" │
00:00:24 #3491 [Verbose] > │ let v11 : bool = v9 = false │
00:00:24 #3492 [Verbose] > │ if v11 then │
00:00:24 #3493 [Verbose] > │ failwith<unit> v10 │
00:00:24 #3494 [Verbose] > │ method0() │
00:00:24 #3495 [Verbose] > │ │
00:00:24 #3496 [Verbose] > │ │
00:00:24 #3497 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:24 #3498 [Verbose] >
00:00:24 #3499 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:24 #3500 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:24 #3501 [Verbose] > │ ## relativity_ps │
00:00:24 #3502 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:24 #3503 [Verbose] >
00:00:24 #3504 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:24 #3505 [Verbose] > inl relativity_ps fs (st : particle_state) =
00:00:24 #3506 [Verbose] > inl f_net = fs |> listm.map (fun f => f st) |> sum_vec
00:00:24 #3507 [Verbose] > inl c = 299792458
00:00:24 #3508 [Verbose] > inl u = st.velocity ^/ c
00:00:24 #3509 [Verbose] > inl acc = sqrt (1 - (u <.> u)) *^ (f_net ^-^ (f_net <.> u) *^ u) ^/ st.mass
00:00:24 #3510 [Verbose] > d_particle_state {
00:00:24 #3511 [Verbose] > dmdt = 0
00:00:24 #3512 [Verbose] > dqdt = 0
00:00:24 #3513 [Verbose] > dtdt = 1
00:00:24 #3514 [Verbose] > drdt = st.velocity
00:00:24 #3515 [Verbose] > dvdt = acc
00:00:24 #3516 [Verbose] > }
00:00:24 #3517 [Verbose] > Building /tmp/!dotnet-repl/20240320-1229-5083-8326-8b01f1cff4bd/main.spi
00:00:24 #3518 [Verbose] >
00:00:24 #3519 [Verbose] > ╭─[ 159.21ms - stdout ]────────────────────────────────────────────────────────╮
00:00:24 #3520 [Verbose] > │ () │
00:00:24 #3521 [Verbose] > │ │
00:00:24 #3522 [Verbose] > │ │
00:00:24 #3523 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:24 #3524 [Verbose] >
00:00:24 #3525 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:24 #3526 [Verbose] > // // test
00:00:24 #3527 [Verbose] >
00:00:24 #3528 [Verbose] > inl year = 365.25 * 24 * 60 * 60
00:00:24 #3529 [Verbose] > inl c = 299792458
00:00:24 #3530 [Verbose] > inl ~method = runge_kutta_4 100000
00:00:24 #3531 [Verbose] > inl forces = [[ fun _ => 10 *^ i_hat () ]]
00:00:24 #3532 [Verbose] > inl (particle_state default_particle_state') = default_particle_state ()
00:00:24 #3533 [Verbose] > inl initial_state =
00:00:24 #3534 [Verbose] > particle_state { default_particle_state' with
00:00:24 #3535 [Verbose] > mass = 1
00:00:24 #3536 [Verbose] > }
00:00:24 #3537 [Verbose] >
00:00:24 #3538 [Verbose] > inl newton_states = solver_ method (newton_second_ps forces) initial_state
00:00:24 #3539 [Verbose] > inl relativity_states = solver_ method (relativity_ps forces) initial_state
00:00:24 #3540 [Verbose] >
00:00:24 #3541 [Verbose] > inl newton_x, newton_y =
00:00:24 #3542 [Verbose] > newton_states
00:00:24 #3543 [Verbose] > >> Some
00:00:24 #3544 [Verbose] > |> seq.take_while_ (fun (particle_state st) (_ : i32) => st.time <= year)
00:00:24 #3545 [Verbose] > |> listm.map (fun (particle_state st) => st.time / year, st.velocity.x / c)
00:00:24 #3546 [Verbose] > |> listm'.unzip
00:00:24 #3547 [Verbose] >
00:00:24 #3548 [Verbose] > inl _, relativity_y =
00:00:24 #3549 [Verbose] > relativity_states
00:00:24 #3550 [Verbose] > >> Some
00:00:24 #3551 [Verbose] > |> seq.take_while_ (fun (particle_state st) (_ : i32) => st.time <= year)
00:00:24 #3552 [Verbose] > |> listm.map (fun (particle_state st) => st.time / year, st.velocity.x / c)
00:00:24 #3553 [Verbose] > |> listm'.unzip
00:00:24 #3554 [Verbose] >
00:00:24 #3555 [Verbose] > inl newton_x : a i32 _ = newton_x |> listm.toArray
00:00:24 #3556 [Verbose] > inl newton_y : a i32 _ = newton_y |> listm.toArray
00:00:24 #3557 [Verbose] > inl relativity_y : a i32 _ = relativity_y |> listm.toArray
00:00:24 #3558 [Verbose] >
00:00:24 #3559 [Verbose] > "response to a constant force",
00:00:24 #3560 [Verbose] > "time (years)",
00:00:24 #3561 [Verbose] > "velocity (multiples of c)",
00:00:24 #3562 [Verbose] > ;[[
00:00:24 #3563 [Verbose] > "newtonian", newton_x, newton_y
00:00:24 #3564 [Verbose] > "relativistic", newton_x, relativity_y
00:00:24 #3565 [Verbose] > ]]
00:00:24 #3566 [Verbose] > Building /tmp/!dotnet-repl/20240320-1229-5098-9895-9fe171378b2f/main.spi
00:00:24 #3567 [Verbose] >
00:00:24 #3568 [Verbose] > ╭─[ 424.25ms - return value ]──────────────────────────────────────────────────╮
00:00:24 #3569 [Verbose] > │ <svg width="640" height="480" viewBox="0 0 640 480" │
00:00:24 #3570 [Verbose] > │ xmlns="http://www.w3.org/2000/svg"> │
00:00:24 #3571 [Verbose] > │ <rect x="0" y="0" width="640" height="480" opacity="1" fill="#141414" │
00:00:24 #3572 [Verbose] > │ stroke="none"/> │
00:00:24 #3573 [Verbose] > │ <text x="320" y="10" dy="0.76em" text-anchor="middle" │
00:00:24 #3574 [Verbose] > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1" │
00:00:24 #3575 [Verbose] > │ fill="#FFFFFF"> │
00:00:24 #3576 [Verbose] > │ response to a constant force │
00:00:24 #3577 [Verbose] > │ </text> │
00:00:24 #3578 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="59" y1="424" x2="59" │
00:00:24 #3579 [Verbose] > │ y2="75"/> │
00:00:24 #3580 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" y1="424" x2="69" │
00:00:24 #3581 [Verbose] > │ y2="75"/> │
00:00:24 #3582 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="79" y1="424" x2="79" │
00:00:24 #3583 [Verbose] > │ y2="75"/> │
00:00:24 #3584 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="89" y1="424" x2="89" │
00:00:24 #3585 [Verbose] > │ y2="75"/> │
00:00:24 #3586 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1=... │
00:00:24 #3587 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:24 #3588 [Verbose] >
00:00:24 #3589 [Verbose] > ╭─[ 427.94ms - stdout ]────────────────────────────────────────────────────────╮
00:00:24 #3590 [Verbose] > │ type UH0 = │
00:00:24 #3591 [Verbose] > │ | UH0_0 of float * float * float * float * float * float * float * float │
00:00:24 #3592 [Verbose] > │ * float * UH0 │
00:00:24 #3593 [Verbose] > │ | UH0_1 │
00:00:24 #3594 [Verbose] > │ and UH1 = │
00:00:24 #3595 [Verbose] > │ | UH1_0 of float * float * UH1 │
00:00:24 #3596 [Verbose] > │ | UH1_1 │
00:00:24 #3597 [Verbose] > │ and UH2 = │
00:00:24 #3598 [Verbose] > │ | UH2_0 of float * UH2 │
00:00:24 #3599 [Verbose] > │ | UH2_1 │
00:00:24 #3600 [Verbose] > │ let rec closure1 (v0 : (struct (float * float * float * float * float * │
00:00:24 #3601 [Verbose] > │ float * float * float * float) -> struct (float * float * float * float * │
00:00:24 #3602 [Verbose] > │ float * float * float * float * float))) struct (v1 : float, v2 : float, v3 │
00:00:24 #3603 [Verbose] > │ : float, v4 : float, v5 : float, v6 : float, v7 : float, v8 : float, v9 : │
00:00:24 #3604 [Verbose] > │ float) : struct (float * float * float * float * float * float * float * │
00:00:24 #3605 [Verbose] > │ float * float) = │
00:00:24 #3606 [Verbose] > │ let struct (v10 : float, v11 : float, v12 : float, v13 : float, v14 : │
00:00:24 #3607 [Verbose] > │ float, v15 : float, v16 : float, v17 : float, v18 : float) = v0 struct (v1, │
00:00:24 #3608 [Verbose] > │ v2, v3, v4, v5, v6, v7, v8, v9) │
00:00:24 #3609 [Verbose] > │ let v19 : float = v15 * 50000.0 │
00:00:24 #3610 [Verbose] > │ let v20 : float = v6 + v19 │
00:00:24 #3611 [Verbose] > │ let v21 : float = 50000.0 * v12 │
00:00:24 #3612 [Verbose] > │ let v22 : float = 50000.0 * v13 │
00:00:24 #3613 [Verbose] > │ let v23 : float = 50000.0 * v14 │
00:00:24 #3614 [Verbose] > │ let v24 : float = v3 + v21 │
00:00:24 #3615 [Verbose] > │ let v25 : float = v4 + v22 │
00:00:24 #3616 [Verbose] > │ let v26 : float = v5 + v23 │
00:00:24 #3617 [Verbose] > │ let v27 : float = 50000.0 * v16 │
00:00:24 #3618 [Verbose] > │ let v28 : float = 50000.0 * v17 │
00:00:24 #3619 [Verbose] > │ let v29 : float = 50000.0 * v18 │
00:00:24 #3620 [Verbose] > │ let v30 : float = v7 + v27 │
00:00:24 #3621 [Verbose] > │ let v31 : float = v8 + v28 │
00:00:24 #3622 [Verbose] > │ let v32 : float = v9 + v29 │
00:00:24 #3623 [Verbose] > │ let struct (v33 : float, v34 : float, v35 : float, v36 : float, v37 : │
00:00:24 #3624 [Verbose] > │ float, v38 : float, v39 : float, v40 : float, v41 : float) = v0 struct (v1, │
00:00:24 #3625 [Verbose] > │ v2, v24, v25, v26, v20, v30, v31, v32) │
00:00:24 #3626 [Verbose] > │ let v42 : float = v38 * 50000.0 │
00:00:24 #3627 [Verbose] > │ let v43 : float = v6 + v42 │
00:00:24 #3628 [Verbose] > │ let v44 : float = 50000.0 * v35 │
00:00:24 #3629 [Verbose] > │ let v45 : float = 50000.0 * v36 │
00:00:24 #3630 [Verbose] > │ let v46 : float = 50000.0 * v37 │
00:00:24 #3631 [Verbose] > │ let v47 : float = v3 + v44 │
00:00:24 #3632 [Verbose] > │ let v48 : float = v4 + v45 │
00:00:24 #3633 [Verbose] > │ let v49 : float = v5 + v46 │
00:00:24 #3634 [Verbose] > │ let v50 : float = 50000.0 * v39 │
00:00:24 #3635 [Verbose] > │ let v51 : float = 50000.0 * v40 │
00:00:24 #3636 [Verbose] > │ let v52 : float = 50000.0 * v41 │
00:00:24 #3637 [Verbose] > │ let v53 : float = v7 + v50 │
00:00:24 #3638 [Verbose] > │ let v54 : float = v8 + v51 │
00:00:24 #3639 [Verbose] > │ let v55 : float = v9 + v52 │
00:00:24 #3640 [Verbose] > │ let struct (v56 : float, v57 : float, v58 : float, v59 : float, v60 : │
00:00:24 #3641 [Verbose] > │ float, v61 : float, v62 : float, v63 : float, v64 : float) = v0 struct (v1, │
00:00:24 #3642 [Verbose] > │ v2, v47, v48, v49, v43, v53, v54, v55) │
00:00:24 #3643 [Verbose] > │ let v65 : float = v61 * 100000.0 │
00:00:24 #3644 [Verbose] > │ let v66 : float = v6 + v65 │
00:00:24 #3645 [Verbose] > │ let v67 : float = 100000.0 * v58 │
00:00:24 #3646 [Verbose] > │ let v68 : float = 100000.0 * v59 │
00:00:24 #3647 [Verbose] > │ let v69 : float = 100000.0 * v60 │
00:00:24 #3648 [Verbose] > │ let v70 : float = v3 + v67 │
00:00:24 #3649 [Verbose] > │ let v71 : float = v4 + v68 │
00:00:24 #3650 [Verbose] > │ let v72 : float = v5 + v69 │
00:00:24 #3651 [Verbose] > │ let v73 : float = 100000.0 * v62 │
00:00:24 #3652 [Verbose] > │ let v74 : float = 100000.0 * v63 │
00:00:24 #3653 [Verbose] > │ let v75 : float = 100000.0 * v64 │
00:00:24 #3654 [Verbose] > │ let v76 : float = v7 + v73 │
00:00:24 #3655 [Verbose] > │ let v77 : float = v8 + v74 │
00:00:24 #3656 [Verbose] > │ let v78 : float = v9 + v75 │
00:00:24 #3657 [Verbose] > │ let struct (v79 : float, v80 : float, v81 : float, v82 : float, v83 : │
00:00:24 #3658 [Verbose] > │ float, v84 : float, v85 : float, v86 : float, v87 : float) = v0 struct (v1, │
00:00:24 #3659 [Verbose] > │ v2, v70, v71, v72, v66, v76, v77, v78) │
00:00:24 #3660 [Verbose] > │ let v88 : float = v10 + v33 │
00:00:24 #3661 [Verbose] > │ let v89 : float = v11 + v34 │
00:00:24 #3662 [Verbose] > │ let v90 : float = v15 + v38 │
00:00:24 #3663 [Verbose] > │ let v91 : float = v12 + v35 │
00:00:24 #3664 [Verbose] > │ let v92 : float = v13 + v36 │
00:00:24 #3665 [Verbose] > │ let v93 : float = v14 + v37 │
00:00:24 #3666 [Verbose] > │ let v94 : float = v16 + v39 │
00:00:24 #3667 [Verbose] > │ let v95 : float = v17 + v40 │
00:00:24 #3668 [Verbose] > │ let v96 : float = v18 + v41 │
00:00:24 #3669 [Verbose] > │ let v97 : float = v88 + v33 │
00:00:24 #3670 [Verbose] > │ let v98 : float = v89 + v34 │
00:00:24 #3671 [Verbose] > │ let v99 : float = v90 + v38 │
00:00:24 #3672 [Verbose] > │ let v100 : float = v91 + v35 │
00:00:24 #3673 [Verbose] > │ let v101 : float = v92 + v36 │
00:00:24 #3674 [Verbose] > │ let v102 : float = v93 + v37 │
00:00:24 #3675 [Verbose] > │ let v103 : float = v94 + v39 │
00:00:24 #3676 [Verbose] > │ let v104 : float = v95 + v40 │
00:00:24 #3677 [Verbose] > │ let v105 : float = v96 + v41 │
00:00:24 #3678 [Verbose] > │ let v106 : float = v97 + v56 │
00:00:24 #3679 [Verbose] > │ let v107 : float = v98 + v57 │
00:00:24 #3680 [Verbose] > │ let v108 : float = v99 + v61 │
00:00:24 #3681 [Verbose] > │ let v109 : float = v100 + v58 │
00:00:24 #3682 [Verbose] > │ let v110 : float = v101 + v59 │
00:00:24 #3683 [Verbose] > │ let v111 : float = v102 + v60 │
00:00:24 #3684 [Verbose] > │ let v112 : float = v103 + v62 │
00:00:24 #3685 [Verbose] > │ let v113 : float = v104 + v63 │
00:00:24 #3686 [Verbose] > │ let v114 : float = v105 + v64 │
00:00:24 #3687 [Verbose] > │ let v115 : float = v106 + v56 │
00:00:24 #3688 [Verbose] > │ let v116 : float = v107 + v57 │
00:00:24 #3689 [Verbose] > │ let v117 : float = v108 + v61 │
00:00:24 #3690 [Verbose] > │ let v118 : float = v109 + v58 │
00:00:24 #3691 [Verbose] > │ let v119 : float = v110 + v59 │
00:00:24 #3692 [Verbose] > │ let v120 : float = v111 + v60 │
00:00:24 #3693 [Verbose] > │ let v121 : float = v112 + v62 │
00:00:24 #3694 [Verbose] > │ let v122 : float = v113 + v63 │
00:00:24 #3695 [Verbose] > │ let v123 : float = v114 + v64 │
00:00:24 #3696 [Verbose] > │ let v124 : float = v115 + v79 │
00:00:24 #3697 [Verbose] > │ let v125 : float = v116 + v80 │
00:00:24 #3698 [Verbose] > │ let v126 : float = v117 + v84 │
00:00:24 #3699 [Verbose] > │ let v127 : float = v118 + v81 │
00:00:24 #3700 [Verbose] > │ let v128 : float = v119 + v82 │
00:00:24 #3701 [Verbose] > │ let v129 : float = v120 + v83 │
00:00:24 #3702 [Verbose] > │ let v130 : float = v121 + v85 │
00:00:24 #3703 [Verbose] > │ let v131 : float = v122 + v86 │
00:00:24 #3704 [Verbose] > │ let v132 : float = v123 + v87 │
00:00:24 #3705 [Verbose] > │ let v133 : float = v126 * 16666.666666666668 │
00:00:24 #3706 [Verbose] > │ let v134 : float = v6 + v133 │
00:00:24 #3707 [Verbose] > │ let v135 : float = 16666.666666666668 * v127 │
00:00:24 #3708 [Verbose] > │ let v136 : float = 16666.666666666668 * v128 │
00:00:24 #3709 [Verbose] > │ let v137 : float = 16666.666666666668 * v129 │
00:00:24 #3710 [Verbose] > │ let v138 : float = v3 + v135 │
00:00:24 #3711 [Verbose] > │ let v139 : float = v4 + v136 │
00:00:24 #3712 [Verbose] > │ let v140 : float = v5 + v137 │
00:00:24 #3713 [Verbose] > │ let v141 : float = 16666.666666666668 * v130 │
00:00:24 #3714 [Verbose] > │ let v142 : float = 16666.666666666668 * v131 │
00:00:24 #3715 [Verbose] > │ let v143 : float = 16666.666666666668 * v132 │
00:00:24 #3716 [Verbose] > │ let v144 : float = v7 + v141 │
00:00:24 #3717 [Verbose] > │ let v145 : float = v8 + v142 │
00:00:24 #3718 [Verbose] > │ let v146 : float = v9 + v143 │
00:00:24 #3719 [Verbose] > │ struct (v1, v2, v138, v139, v140, v134, v144, v145, v146) │
00:00:24 #3720 [Verbose] > │ and closure0 () (v0 : (struct (float * float * float * float * float * float │
00:00:24 #3721 [Verbose] > │ * float * float * float) -> struct (float * float * float * float * float * │
00:00:24 #3722 [Verbose] > │ float * float * float * float))) : (struct (float * float * float * float * │
00:00:24 #3723 [Verbose] > │ float * float * float * float * float) -> struct (float * float * float * │
00:00:24 #3724 [Verbose] > │ float * float * float * float * float * float)) = │
00:00:24 #3725 [Verbose] > │ closure1(v0) │
00:00:24 #3726 [Verbose] > │ and closure2 () struct (v0 : float, v1 : float, v2 : float, v3 : float, v4 : │
00:00:24 #3727 [Verbose] > │ float, v5 : float, v6 : float, v7 : float, v8 : float) : struct (float * │
00:00:24 #3728 [Verbose] > │ float * float * float * float * float * float * float * float) = │
00:00:24 #3729 [Verbose] > │ let v9 : float = 10.0 / v1 │
00:00:24 #3730 [Verbose] > │ let v10 : float = 0.0 / v1 │
00:00:24 #3731 [Verbose] > │ struct (0.0, 0.0, v6, v7, v8, 1.0, v9, v10, v10) │
00:00:24 #3732 [Verbose] > │ and closure3 () struct (v0 : float, v1 : float, v2 : float, v3 : float, v4 : │
00:00:24 #3733 [Verbose] > │ float, v5 : float, v6 : float, v7 : float, v8 : float) : struct (float * │
00:00:24 #3734 [Verbose] > │ float * float * float * float * float * float * float * float) = │
00:00:24 #3735 [Verbose] > │ let v9 : float = v6 / 299792458.0 │
00:00:24 #3736 [Verbose] > │ let v10 : float = v7 / 299792458.0 │
00:00:24 #3737 [Verbose] > │ let v11 : float = v8 / 299792458.0 │
00:00:24 #3738 [Verbose] > │ let v12 : float = v9 * v9 │
00:00:24 #3739 [Verbose] > │ let v13 : float = v10 * v10 │
00:00:24 #3740 [Verbose] > │ let v14 : float = v12 + v13 │
00:00:24 #3741 [Verbose] > │ let v15 : float = v11 * v11 │
00:00:24 #3742 [Verbose] > │ let v16 : float = v14 + v15 │
00:00:24 #3743 [Verbose] > │ let v17 : float = 1.0 - v16 │
00:00:24 #3744 [Verbose] > │ let v18 : float = sqrt v17 │
00:00:24 #3745 [Verbose] > │ let v19 : float = 10.0 * v9 │
00:00:24 #3746 [Verbose] > │ let v20 : float = 0.0 * v10 │
00:00:24 #3747 [Verbose] > │ let v21 : float = v19 + v20 │
00:00:24 #3748 [Verbose] > │ let v22 : float = 0.0 * v11 │
00:00:24 #3749 [Verbose] > │ let v23 : float = v21 + v22 │
00:00:24 #3750 [Verbose] > │ let v24 : float = v23 * v9 │
00:00:24 #3751 [Verbose] > │ let v25 : float = v23 * v10 │
00:00:24 #3752 [Verbose] > │ let v26 : float = v23 * v11 │
00:00:24 #3753 [Verbose] > │ let v27 : float = -1.0 * v24 │
00:00:24 #3754 [Verbose] > │ let v28 : float = -1.0 * v25 │
00:00:24 #3755 [Verbose] > │ let v29 : float = -1.0 * v26 │
00:00:24 #3756 [Verbose] > │ let v30 : float = 10.0 + v27 │
00:00:24 #3757 [Verbose] > │ let v31 : float = v18 * v30 │
00:00:24 #3758 [Verbose] > │ let v32 : float = v18 * v28 │
00:00:24 #3759 [Verbose] > │ let v33 : float = v18 * v29 │
00:00:24 #3760 [Verbose] > │ let v34 : float = v31 / v1 │
00:00:24 #3761 [Verbose] > │ let v35 : float = v32 / v1 │
00:00:24 #3762 [Verbose] > │ let v36 : float = v33 / v1 │
00:00:24 #3763 [Verbose] > │ struct (0.0, 0.0, v6, v7, v8, 1.0, v34, v35, v36) │
00:00:24 #3764 [Verbose] > │ and method2 (v0 : (struct (float * float * float * float * float * float * │
00:00:24 #3765 [Verbose] > │ float * float * float) -> struct (float * float * float * float * float * │
00:00:24 #3766 [Verbose] > │ float * float * float * float)), v1 : float, v2 : float, v3 : float, v4 : │
00:00:24 #3767 [Verbose] > │ float, v5 : float, v6 : float, v7 : float, v8 : float, v9 : float, v10 : │
00:00:24 #3768 [Verbose] > │ int32) : struct (float * float * float * float * float * float * float * │
00:00:24 #3769 [Verbose] > │ float * float) = │
00:00:24 #3770 [Verbose] > │ let v11 : bool = v10 <= 0 │
00:00:24 #3771 [Verbose] > │ if v11 then │
00:00:24 #3772 [Verbose] > │ struct (v1, v2, v3, v4, v5, v6, v7, v8, v9) │
00:00:24 #3773 [Verbose] > │ else │
00:00:24 #3774 [Verbose] > │ let struct (v12 : float, v13 : float, v14 : float, v15 : float, v16 │
00:00:24 #3775 [Verbose] > │ : float, v17 : float, v18 : float, v19 : float, v20 : float) = v0 struct │
00:00:24 #3776 [Verbose] > │ (v1, v2, v3, v4, v5, v6, v7, v8, v9) │
00:00:24 #3777 [Verbose] > │ let v21 : int32 = v10 - 1 │
00:00:24 #3778 [Verbose] > │ method2(v0, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21) │
00:00:24 #3779 [Verbose] > │ and method3 (v0 : UH0, v1 : UH0) : UH0 = │
00:00:24 #3780 [Verbose] > │ match v0 with │
00:00:24 #3781 [Verbose] > │ | UH0_0(v2, v3, v4, v5, v6, v7, v8, v9, v10, v11) -> (* Cons *) │
00:00:24 #3782 [Verbose] > │ let v12 : UH0 = UH0_0(v2, v3, v4, v5, v6, v7, v8, v9, v10, v1) │
00:00:24 #3783 [Verbose] > │ method3(v11, v12) │
00:00:24 #3784 [Verbose] > │ | UH0_1 -> (* Nil *) │
00:00:24 #3785 [Verbose] > │ v1 │
00:00:24 #3786 [Verbose] > │ and method1 (v0 : (struct (float * float * float * float * float * float * │
00:00:24 #3787 [Verbose] > │ float * float * float) -> struct (float * float * float * float * float * │
00:00:24 #3788 [Verbose] > │ float * float * float * float)), v1 : UH0, v2 : int32) : UH0 = │
00:00:24 #3789 [Verbose] > │ let v3 : float = 0.0 │
00:00:24 #3790 [Verbose] > │ let v4 : float = 1.0 │
00:00:24 #3791 [Verbose] > │ let v5 : float = 0.0 │
00:00:24 #3792 [Verbose] > │ let v6 : float = 0.0 │
00:00:24 #3793 [Verbose] > │ let v7 : float = 0.0 │
00:00:24 #3794 [Verbose] > │ let v8 : float = 0.0 │
00:00:24 #3795 [Verbose] > │ let v9 : float = 0.0 │
00:00:24 #3796 [Verbose] > │ let v10 : float = 0.0 │
00:00:24 #3797 [Verbose] > │ let v11 : float = 0.0 │
00:00:24 #3798 [Verbose] > │ let struct (v12 : float, v13 : float, v14 : float, v15 : float, v16 : │
00:00:24 #3799 [Verbose] > │ float, v17 : float, v18 : float, v19 : float, v20 : float) = method2(v0, v3, │
00:00:24 #3800 [Verbose] > │ v4, v5, v6, v7, v8, v9, v10, v11, v2) │
00:00:24 #3801 [Verbose] > │ let v21 : bool = v17 <= 31557600.0 │
00:00:24 #3802 [Verbose] > │ if v21 then │
00:00:24 #3803 [Verbose] > │ let v22 : UH0 = UH0_0(v12, v13, v14, v15, v16, v17, v18, v19, v20, │
00:00:24 #3804 [Verbose] > │ v1) │
00:00:24 #3805 [Verbose] > │ let v23 : int32 = v2 + 1 │
00:00:24 #3806 [Verbose] > │ method1(v0, v22, v23) │
00:00:24 #3807 [Verbose] > │ else │
00:00:24 #3808 [Verbose] > │ let v25 : UH0 = UH0_1 │
00:00:24 #3809 [Verbose] > │ method3(v1, v25) │
00:00:24 #3810 [Verbose] > │ and method4 (v0 : UH0, v1 : UH1) : UH1 = │
00:00:24 #3811 [Verbose] > │ match v0 with │
00:00:24 #3812 [Verbose] > │ | UH0_0(v2, v3, v4, v5, v6, v7, v8, v9, v10, v11) -> (* Cons *) │
00:00:24 #3813 [Verbose] > │ let v12 : UH1 = method4(v11, v1) │
00:00:24 #3814 [Verbose] > │ let v13 : float = v7 / 31557600.0 │
00:00:24 #3815 [Verbose] > │ let v14 : float = v8 / 299792458.0 │
00:00:24 #3816 [Verbose] > │ UH1_0(v13, v14, v12) │
00:00:24 #3817 [Verbose] > │ | UH0_1 -> (* Nil *) │
00:00:24 #3818 [Verbose] > │ v1 │
00:00:24 #3819 [Verbose] > │ and method5 (v0 : UH1, v1 : UH2, v2 : UH2) : struct (UH2 * UH2) = │
00:00:24 #3820 [Verbose] > │ match v0 with │
00:00:24 #3821 [Verbose] > │ | UH1_0(v3, v4, v5) -> (* Cons *) │
00:00:24 #3822 [Verbose] > │ let v6 : UH2 = UH2_0(v3, v1) │
00:00:24 #3823 [Verbose] > │ let v7 : UH2 = UH2_0(v4, v2) │
00:00:24 #3824 [Verbose] > │ method5(v5, v6, v7) │
00:00:24 #3825 [Verbose] > │ | UH1_1 -> (* Nil *) │
00:00:24 #3826 [Verbose] > │ struct (v1, v2) │
00:00:24 #3827 [Verbose] > │ and method6 (v0 : UH2, v1 : UH2) : UH2 = │
00:00:24 #3828 [Verbose] > │ match v0 with │
00:00:24 #3829 [Verbose] > │ | UH2_0(v2, v3) -> (* Cons *) │
00:00:24 #3830 [Verbose] > │ let v4 : UH2 = UH2_0(v2, v1) │
00:00:24 #3831 [Verbose] > │ method6(v3, v4) │
00:00:24 #3832 [Verbose] > │ | UH2_1 -> (* Nil *) │
00:00:24 #3833 [Verbose] > │ v1 │
00:00:24 #3834 [Verbose] > │ and method7 (v0 : (struct (float * float * float * float * float * float * │
00:00:24 #3835 [Verbose] > │ float * float * float) -> struct (float * float * float * float * float * │
00:00:24 #3836 [Verbose] > │ float * float * float * float)), v1 : UH0, v2 : int32) : UH0 = │
00:00:24 #3837 [Verbose] > │ let v3 : float = 0.0 │
00:00:24 #3838 [Verbose] > │ let v4 : float = 1.0 │
00:00:24 #3839 [Verbose] > │ let v5 : float = 0.0 │
00:00:24 #3840 [Verbose] > │ let v6 : float = 0.0 │
00:00:24 #3841 [Verbose] > │ let v7 : float = 0.0 │
00:00:24 #3842 [Verbose] > │ let v8 : float = 0.0 │
00:00:24 #3843 [Verbose] > │ let v9 : float = 0.0 │
00:00:24 #3844 [Verbose] > │ let v10 : float = 0.0 │
00:00:24 #3845 [Verbose] > │ let v11 : float = 0.0 │
00:00:24 #3846 [Verbose] > │ let struct (v12 : float, v13 : float, v14 : float, v15 : float, v16 : │
00:00:24 #3847 [Verbose] > │ float, v17 : float, v18 : float, v19 : float, v20 : float) = method2(v0, v3, │
00:00:24 #3848 [Verbose] > │ v4, v5, v6, v7, v8, v9, v10, v11, v2) │
00:00:24 #3849 [Verbose] > │ let v21 : bool = v17 <= 31557600.0 │
00:00:24 #3850 [Verbose] > │ if v21 then │
00:00:24 #3851 [Verbose] > │ let v22 : UH0 = UH0_0(v12, v13, v14, v15, v16, v17, v18, v19, v20, │
00:00:24 #3852 [Verbose] > │ v1) │
00:00:24 #3853 [Verbose] > │ let v23 : int32 = v2 + 1 │
00:00:24 #3854 [Verbose] > │ method7(v0, v22, v23) │
00:00:24 #3855 [Verbose] > │ else │
00:00:24 #3856 [Verbose] > │ let v25 : UH0 = UH0_1 │
00:00:24 #3857 [Verbose] > │ method3(v1, v25) │
00:00:24 #3858 [Verbose] > │ and method8 (v0 : UH0, v1 : UH1) : UH1 = │
00:00:24 #3859 [Verbose] > │ match v0 with │
00:00:24 #3860 [Verbose] > │ | UH0_0(v2, v3, v4, v5, v6, v7, v8, v9, v10, v11) -> (* Cons *) │
00:00:24 #3861 [Verbose] > │ let v12 : UH1 = method8(v11, v1) │
00:00:24 #3862 [Verbose] > │ let v13 : float = v7 / 31557600.0 │
00:00:24 #3863 [Verbose] > │ let v14 : float = v8 / 299792458.0 │
00:00:24 #3864 [Verbose] > │ UH1_0(v13, v14, v12) │
00:00:24 #3865 [Verbose] > │ | UH0_1 -> (* Nil *) │
00:00:24 #3866 [Verbose] > │ v1 │
00:00:24 #3867 [Verbose] > │ and method10 (v0 : UH2, v1 : int32) : int32 = │
00:00:24 #3868 [Verbose] > │ match v0 with │
00:00:24 #3869 [Verbose] > │ | UH2_0(v2, v3) -> (* Cons *) │
00:00:24 #3870 [Verbose] > │ let v4 : int32 = v1 + 1 │
00:00:24 #3871 [Verbose] > │ method10(v3, v4) │
00:00:24 #3872 [Verbose] > │ | UH2_1 -> (* Nil *) │
00:00:24 #3873 [Verbose] > │ v1 │
00:00:24 #3874 [Verbose] > │ and method11 (v0 : (float []), v1 : UH2, v2 : int32) : int32 = │
00:00:24 #3875 [Verbose] > │ match v1 with │
00:00:24 #3876 [Verbose] > │ | UH2_0(v3, v4) -> (* Cons *) │
00:00:24 #3877 [Verbose] > │ v0.[int v2] <- v3 │
00:00:24 #3878 [Verbose] > │ let v5 : int32 = v2 + 1 │
00:00:24 #3879 [Verbose] > │ method11(v0, v4, v5) │
00:00:24 #3880 [Verbose] > │ | UH2_1 -> (* Nil *) │
00:00:24 #3881 [Verbose] > │ v2 │
00:00:24 #3882 [Verbose] > │ and method9 (v0 : UH2) : (float []) = │
00:00:24 #3883 [Verbose] > │ let v1 : int32 = 0 │
00:00:24 #3884 [Verbose] > │ let v2 : int32 = method10(v0, v1) │
00:00:24 #3885 [Verbose] > │ let v3 : (float []) = Array.zeroCreate<float> (v2) │
00:00:24 #3886 [Verbose] > │ let v4 : int32 = 0 │
00:00:24 #3887 [Verbose] > │ let v5 : int32 = method11(v3, v0, v4) │
00:00:24 #3888 [Verbose] > │ v3 │
00:00:24 #3889 [Verbose] > │ and method12 (v0 : (struct (string * (float []) * (float [])) [])) : (struct │
00:00:24 #3890 [Verbose] > │ (string * (float []) * (float [])) []) = │
00:00:24 #3891 [Verbose] > │ v0 │
00:00:24 #3892 [Verbose] > │ and method0 () : struct (string * string * string * (struct (string * (float │
00:00:24 #3893 [Verbose] > │ []) * (float [])) [])) = │
00:00:24 #3894 [Verbose] > │ let v0 : ((struct (float * float * float * float * float * float * float │
00:00:24 #3895 [Verbose] > │ * float * float) -> struct (float * float * float * float * float * float * │
00:00:24 #3896 [Verbose] > │ float * float * float)) -> (struct (float * float * float * float * float * │
00:00:24 #3897 [Verbose] > │ float * float * float * float) -> struct (float * float * float * float * │
00:00:24 #3898 [Verbose] > │ float * float * float * float * float))) = closure0() │
00:00:24 #3899 [Verbose] > │ let v1 : (struct (float * float * float * float * float * float * float │
00:00:24 #3900 [Verbose] > │ * float * float) -> struct (float * float * float * float * float * float * │
00:00:24 #3901 [Verbose] > │ float * float * float)) = closure2() │
00:00:24 #3902 [Verbose] > │ let v2 : (struct (float * float * float * float * float * float * float │
00:00:24 #3903 [Verbose] > │ * float * float) -> struct (float * float * float * float * float * float * │
00:00:24 #3904 [Verbose] > │ float * float * float)) = v0 v1 │
00:00:24 #3905 [Verbose] > │ let v3 : (struct (float * float * float * float * float * float * float │
00:00:24 #3906 [Verbose] > │ * float * float) -> struct (float * float * float * float * float * float * │
00:00:24 #3907 [Verbose] > │ float * float * float)) = closure3() │
00:00:24 #3908 [Verbose] > │ let v4 : (struct (float * float * float * float * float * float * float │
00:00:24 #3909 [Verbose] > │ * float * float) -> struct (float * float * float * float * float * float * │
00:00:24 #3910 [Verbose] > │ float * float * float)) = v0 v3 │
00:00:24 #3911 [Verbose] > │ let v5 : UH0 = UH0_1 │
00:00:24 #3912 [Verbose] > │ let v6 : int32 = 0 │
00:00:24 #3913 [Verbose] > │ let v7 : UH0 = method1(v2, v5, v6) │
00:00:24 #3914 [Verbose] > │ let v8 : UH1 = UH1_1 │
00:00:24 #3915 [Verbose] > │ let v9 : UH1 = method4(v7, v8) │
00:00:24 #3916 [Verbose] > │ let v10 : UH2 = UH2_1 │
00:00:24 #3917 [Verbose] > │ let v11 : UH2 = UH2_1 │
00:00:24 #3918 [Verbose] > │ let struct (v12 : UH2, v13 : UH2) = method5(v9, v10, v11) │
00:00:24 #3919 [Verbose] > │ let v14 : UH2 = UH2_1 │
00:00:24 #3920 [Verbose] > │ let v15 : UH2 = method6(v12, v14) │
00:00:24 #3921 [Verbose] > │ let v16 : UH2 = UH2_1 │
00:00:24 #3922 [Verbose] > │ let v17 : UH2 = method6(v13, v16) │
00:00:24 #3923 [Verbose] > │ let v18 : UH0 = UH0_1 │
00:00:24 #3924 [Verbose] > │ let v19 : int32 = 0 │
00:00:24 #3925 [Verbose] > │ let v20 : UH0 = method7(v4, v18, v19) │
00:00:24 #3926 [Verbose] > │ let v21 : UH1 = UH1_1 │
00:00:24 #3927 [Verbose] > │ let v22 : UH1 = method8(v20, v21) │
00:00:24 #3928 [Verbose] > │ let v23 : UH2 = UH2_1 │
00:00:24 #3929 [Verbose] > │ let v24 : UH2 = UH2_1 │
00:00:24 #3930 [Verbose] > │ let struct (v25 : UH2, v26 : UH2) = method5(v22, v23, v24) │
00:00:24 #3931 [Verbose] > │ let v27 : UH2 = UH2_1 │
00:00:24 #3932 [Verbose] > │ let v28 : UH2 = method6(v25, v27) │
00:00:24 #3933 [Verbose] > │ let v29 : UH2 = UH2_1 │
00:00:24 #3934 [Verbose] > │ let v30 : UH2 = method6(v26, v29) │
00:00:24 #3935 [Verbose] > │ let v31 : (float []) = method9(v15) │
00:00:24 #3936 [Verbose] > │ let v32 : (float []) = method9(v17) │
00:00:24 #3937 [Verbose] > │ let v33 : (float []) = method9(v30) │
00:00:24 #3938 [Verbose] > │ let v34 : string = "newtonian" │
00:00:24 #3939 [Verbose] > │ let v35 : string = "relativistic" │
00:00:24 #3940 [Verbose] > │ let v36 : (struct (string * (float []) * (float [])) []) = [|struct │
00:00:24 #3941 [Verbose] > │ (v34, v31, v32); struct (v35, v31, v33)|] │
00:00:24 #3942 [Verbose] > │ let v37 : (struct (string * (float []) * (float [])) []) = method12(v36) │
00:00:24 #3943 [Verbose] > │ let v38 : string = "response to a constant force" │
00:00:24 #3944 [Verbose] > │ let v39 : string = "time (years)" │
00:00:24 #3945 [Verbose] > │ let v40 : string = "velocity (multiples of c)" │
00:00:24 #3946 [Verbose] > │ struct (v38, v39, v40, v37) │
00:00:24 #3947 [Verbose] > │ method0() │
00:00:24 #3948 [Verbose] > │ │
00:00:24 #3949 [Verbose] > │ │
00:00:24 #3950 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:24 #3951 [Verbose] >
00:00:24 #3952 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:24 #3953 [Verbose] > inl uniform_lorentz_force v_e v_b (st : particle_state) =
00:00:24 #3954 [Verbose] > st.charge *^ (v_e ^+^ st.velocity >< v_b)
00:00:24 #3955 [Verbose] > Building /tmp/!dotnet-repl/20240320-1229-5142-4250-4dd5b05b62b3/main.spi
00:00:24 #3956 [Verbose] >
00:00:24 #3957 [Verbose] > ╭─[ 164.78ms - stdout ]────────────────────────────────────────────────────────╮
00:00:24 #3958 [Verbose] > │ () │
00:00:24 #3959 [Verbose] > │ │
00:00:24 #3960 [Verbose] > │ │
00:00:24 #3961 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:24 #3962 [Verbose] >
00:00:24 #3963 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:24 #3964 [Verbose] > // // test
00:00:24 #3965 [Verbose] >
00:00:24 #3966 [Verbose] > inl c : f64 = 299792458
00:00:24 #3967 [Verbose] > inl ~method = runge_kutta_4 0.000000001
00:00:24 #3968 [Verbose] > inl forces = [[ uniform_lorentz_force (zero_vec ()) (k_hat ()) ]]
00:00:24 #3969 [Verbose] > inl (particle_state default_particle_state') = default_particle_state ()
00:00:24 #3970 [Verbose] > inl initial_state =
00:00:24 #3971 [Verbose] > particle_state { default_particle_state' with
00:00:24 #3972 [Verbose] > mass = 0.000000000000000000000000001672621898
00:00:24 #3973 [Verbose] > charge = 0.0000000000000000001602176621
00:00:24 #3974 [Verbose] > velocity = 0.8 *^ (c *^ j_hat ())
00:00:24 #3975 [Verbose] > }
00:00:24 #3976 [Verbose] >
00:00:24 #3977 [Verbose] > inl newton_states = solver_ method (newton_second_ps forces) initial_state
00:00:24 #3978 [Verbose] > inl relativity_states = solver_ method (relativity_ps forces) initial_state
00:00:24 #3979 [Verbose] >
00:00:24 #3980 [Verbose] > inl newton_x, newton_y =
00:00:24 #3981 [Verbose] > newton_states
00:00:24 #3982 [Verbose] > >> Some
00:00:24 #3983 [Verbose] > |> seq.take_while_ (fun (particle_state st) i => i < 100i32)
00:00:24 #3984 [Verbose] > |> listm.map (fun (particle_state st) => st.pos_vec.x, st.pos_vec.y)
00:00:24 #3985 [Verbose] > |> listm'.unzip
00:00:24 #3986 [Verbose] >
00:00:24 #3987 [Verbose] > inl relativity_x, relativity_y =
00:00:24 #3988 [Verbose] > relativity_states
00:00:24 #3989 [Verbose] > >> Some
00:00:24 #3990 [Verbose] > |> seq.take_while_ (fun (particle_state st) i => i < 165i32)
00:00:24 #3991 [Verbose] > |> listm.map (fun (particle_state st) => st.pos_vec.x, st.pos_vec.y)
00:00:24 #3992 [Verbose] > |> listm'.unzip
00:00:24 #3993 [Verbose] >
00:00:24 #3994 [Verbose] > inl newton_x : a i32 _ = newton_x |> listm.toArray
00:00:24 #3995 [Verbose] > inl newton_y : a i32 _ = newton_y |> listm.toArray
00:00:24 #3996 [Verbose] >
00:00:24 #3997 [Verbose] > inl relativity_x : a i32 _ = relativity_x |> listm.toArray
00:00:24 #3998 [Verbose] > inl relativity_y : a i32 _ = relativity_y |> listm.toArray
00:00:24 #3999 [Verbose] >
00:00:24 #4000 [Verbose] > "proton in a 1-t magnetic field",
00:00:24 #4001 [Verbose] > "x (m)",
00:00:24 #4002 [Verbose] > "y (m)",
00:00:24 #4003 [Verbose] > ;[[
00:00:24 #4004 [Verbose] > "newtonian", newton_x, newton_y
00:00:24 #4005 [Verbose] > "relativistic", relativity_x, relativity_y
00:00:24 #4006 [Verbose] > ]]
00:00:25 #4007 [Verbose] > Building /tmp/!dotnet-repl/20240320-1229-5158-5894-58a724cf8044/main.spi
00:00:25 #4008 [Verbose] >
00:00:25 #4009 [Verbose] > ╭─[ 365.72ms - return value ]──────────────────────────────────────────────────╮
00:00:25 #4010 [Verbose] > │ <svg width="640" height="480" viewBox="0 0 640 480" │
00:00:25 #4011 [Verbose] > │ xmlns="http://www.w3.org/2000/svg"> │
00:00:25 #4012 [Verbose] > │ <rect x="0" y="0" width="640" height="480" opacity="1" fill="#141414" │
00:00:25 #4013 [Verbose] > │ stroke="none"/> │
00:00:25 #4014 [Verbose] > │ <text x="320" y="10" dy="0.76em" text-anchor="middle" │
00:00:25 #4015 [Verbose] > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1" │
00:00:25 #4016 [Verbose] > │ fill="#FFFFFF"> │
00:00:25 #4017 [Verbose] > │ proton in a 1-t magnetic field │
00:00:25 #4018 [Verbose] > │ </text> │
00:00:25 #4019 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="58" y1="424" x2="58" │
00:00:25 #4020 [Verbose] > │ y2="75"/> │
00:00:25 #4021 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" y1="424" x2="69" │
00:00:25 #4022 [Verbose] > │ y2="75"/> │
00:00:25 #4023 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="81" y1="424" x2="81" │
00:00:25 #4024 [Verbose] > │ y2="75"/> │
00:00:25 #4025 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="93" y1="424" x2="93" │
00:00:25 #4026 [Verbose] > │ y2="75"/> │
00:00:25 #4027 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x... │
00:00:25 #4028 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:25 #4029 [Verbose] >
00:00:25 #4030 [Verbose] > ╭─[ 372.04ms - stdout ]────────────────────────────────────────────────────────╮
00:00:25 #4031 [Verbose] > │ type UH0 = │
00:00:25 #4032 [Verbose] > │ | UH0_0 of float * float * float * float * float * float * float * float │
00:00:25 #4033 [Verbose] > │ * float * UH0 │
00:00:25 #4034 [Verbose] > │ | UH0_1 │
00:00:25 #4035 [Verbose] > │ and UH1 = │
00:00:25 #4036 [Verbose] > │ | UH1_0 of float * float * UH1 │
00:00:25 #4037 [Verbose] > │ | UH1_1 │
00:00:25 #4038 [Verbose] > │ and UH2 = │
00:00:25 #4039 [Verbose] > │ | UH2_0 of float * UH2 │
00:00:25 #4040 [Verbose] > │ | UH2_1 │
00:00:25 #4041 [Verbose] > │ let rec closure1 (v0 : (struct (float * float * float * float * float * │
00:00:25 #4042 [Verbose] > │ float * float * float * float) -> struct (float * float * float * float * │
00:00:25 #4043 [Verbose] > │ float * float * float * float * float))) struct (v1 : float, v2 : float, v3 │
00:00:25 #4044 [Verbose] > │ : float, v4 : float, v5 : float, v6 : float, v7 : float, v8 : float, v9 : │
00:00:25 #4045 [Verbose] > │ float) : struct (float * float * float * float * float * float * float * │
00:00:25 #4046 [Verbose] > │ float * float) = │
00:00:25 #4047 [Verbose] > │ let struct (v10 : float, v11 : float, v12 : float, v13 : float, v14 : │
00:00:25 #4048 [Verbose] > │ float, v15 : float, v16 : float, v17 : float, v18 : float) = v0 struct (v1, │
00:00:25 #4049 [Verbose] > │ v2, v3, v4, v5, v6, v7, v8, v9) │
00:00:25 #4050 [Verbose] > │ let v19 : float = v15 * 5E-10 │
00:00:25 #4051 [Verbose] > │ let v20 : float = v6 + v19 │
00:00:25 #4052 [Verbose] > │ let v21 : float = 5E-10 * v12 │
00:00:25 #4053 [Verbose] > │ let v22 : float = 5E-10 * v13 │
00:00:25 #4054 [Verbose] > │ let v23 : float = 5E-10 * v14 │
00:00:25 #4055 [Verbose] > │ let v24 : float = v3 + v21 │
00:00:25 #4056 [Verbose] > │ let v25 : float = v4 + v22 │
00:00:25 #4057 [Verbose] > │ let v26 : float = v5 + v23 │
00:00:25 #4058 [Verbose] > │ let v27 : float = 5E-10 * v16 │
00:00:25 #4059 [Verbose] > │ let v28 : float = 5E-10 * v17 │
00:00:25 #4060 [Verbose] > │ let v29 : float = 5E-10 * v18 │
00:00:25 #4061 [Verbose] > │ let v30 : float = v7 + v27 │
00:00:25 #4062 [Verbose] > │ let v31 : float = v8 + v28 │
00:00:25 #4063 [Verbose] > │ let v32 : float = v9 + v29 │
00:00:25 #4064 [Verbose] > │ let struct (v33 : float, v34 : float, v35 : float, v36 : float, v37 : │
00:00:25 #4065 [Verbose] > │ float, v38 : float, v39 : float, v40 : float, v41 : float) = v0 struct (v1, │
00:00:25 #4066 [Verbose] > │ v2, v24, v25, v26, v20, v30, v31, v32) │
00:00:25 #4067 [Verbose] > │ let v42 : float = v38 * 5E-10 │
00:00:25 #4068 [Verbose] > │ let v43 : float = v6 + v42 │
00:00:25 #4069 [Verbose] > │ let v44 : float = 5E-10 * v35 │
00:00:25 #4070 [Verbose] > │ let v45 : float = 5E-10 * v36 │
00:00:25 #4071 [Verbose] > │ let v46 : float = 5E-10 * v37 │
00:00:25 #4072 [Verbose] > │ let v47 : float = v3 + v44 │
00:00:25 #4073 [Verbose] > │ let v48 : float = v4 + v45 │
00:00:25 #4074 [Verbose] > │ let v49 : float = v5 + v46 │
00:00:25 #4075 [Verbose] > │ let v50 : float = 5E-10 * v39 │
00:00:25 #4076 [Verbose] > │ let v51 : float = 5E-10 * v40 │
00:00:25 #4077 [Verbose] > │ let v52 : float = 5E-10 * v41 │
00:00:25 #4078 [Verbose] > │ let v53 : float = v7 + v50 │
00:00:25 #4079 [Verbose] > │ let v54 : float = v8 + v51 │
00:00:25 #4080 [Verbose] > │ let v55 : float = v9 + v52 │
00:00:25 #4081 [Verbose] > │ let struct (v56 : float, v57 : float, v58 : float, v59 : float, v60 : │
00:00:25 #4082 [Verbose] > │ float, v61 : float, v62 : float, v63 : float, v64 : float) = v0 struct (v1, │
00:00:25 #4083 [Verbose] > │ v2, v47, v48, v49, v43, v53, v54, v55) │
00:00:25 #4084 [Verbose] > │ let v65 : float = v61 * 1E-09 │
00:00:25 #4085 [Verbose] > │ let v66 : float = v6 + v65 │
00:00:25 #4086 [Verbose] > │ let v67 : float = 1E-09 * v58 │
00:00:25 #4087 [Verbose] > │ let v68 : float = 1E-09 * v59 │
00:00:25 #4088 [Verbose] > │ let v69 : float = 1E-09 * v60 │
00:00:25 #4089 [Verbose] > │ let v70 : float = v3 + v67 │
00:00:25 #4090 [Verbose] > │ let v71 : float = v4 + v68 │
00:00:25 #4091 [Verbose] > │ let v72 : float = v5 + v69 │
00:00:25 #4092 [Verbose] > │ let v73 : float = 1E-09 * v62 │
00:00:25 #4093 [Verbose] > │ let v74 : float = 1E-09 * v63 │
00:00:25 #4094 [Verbose] > │ let v75 : float = 1E-09 * v64 │
00:00:25 #4095 [Verbose] > │ let v76 : float = v7 + v73 │
00:00:25 #4096 [Verbose] > │ let v77 : float = v8 + v74 │
00:00:25 #4097 [Verbose] > │ let v78 : float = v9 + v75 │
00:00:25 #4098 [Verbose] > │ let struct (v79 : float, v80 : float, v81 : float, v82 : float, v83 : │
00:00:25 #4099 [Verbose] > │ float, v84 : float, v85 : float, v86 : float, v87 : float) = v0 struct (v1, │
00:00:25 #4100 [Verbose] > │ v2, v70, v71, v72, v66, v76, v77, v78) │
00:00:25 #4101 [Verbose] > │ let v88 : float = v10 + v33 │
00:00:25 #4102 [Verbose] > │ let v89 : float = v11 + v34 │
00:00:25 #4103 [Verbose] > │ let v90 : float = v15 + v38 │
00:00:25 #4104 [Verbose] > │ let v91 : float = v12 + v35 │
00:00:25 #4105 [Verbose] > │ let v92 : float = v13 + v36 │
00:00:25 #4106 [Verbose] > │ let v93 : float = v14 + v37 │
00:00:25 #4107 [Verbose] > │ let v94 : float = v16 + v39 │
00:00:25 #4108 [Verbose] > │ let v95 : float = v17 + v40 │
00:00:25 #4109 [Verbose] > │ let v96 : float = v18 + v41 │
00:00:25 #4110 [Verbose] > │ let v97 : float = v88 + v33 │
00:00:25 #4111 [Verbose] > │ let v98 : float = v89 + v34 │
00:00:25 #4112 [Verbose] > │ let v99 : float = v90 + v38 │
00:00:25 #4113 [Verbose] > │ let v100 : float = v91 + v35 │
00:00:25 #4114 [Verbose] > │ let v101 : float = v92 + v36 │
00:00:25 #4115 [Verbose] > │ let v102 : float = v93 + v37 │
00:00:25 #4116 [Verbose] > │ let v103 : float = v94 + v39 │
00:00:25 #4117 [Verbose] > │ let v104 : float = v95 + v40 │
00:00:25 #4118 [Verbose] > │ let v105 : float = v96 + v41 │
00:00:25 #4119 [Verbose] > │ let v106 : float = v97 + v56 │
00:00:25 #4120 [Verbose] > │ let v107 : float = v98 + v57 │
00:00:25 #4121 [Verbose] > │ let v108 : float = v99 + v61 │
00:00:25 #4122 [Verbose] > │ let v109 : float = v100 + v58 │
00:00:25 #4123 [Verbose] > │ let v110 : float = v101 + v59 │
00:00:25 #4124 [Verbose] > │ let v111 : float = v102 + v60 │
00:00:25 #4125 [Verbose] > │ let v112 : float = v103 + v62 │
00:00:25 #4126 [Verbose] > │ let v113 : float = v104 + v63 │
00:00:25 #4127 [Verbose] > │ let v114 : float = v105 + v64 │
00:00:25 #4128 [Verbose] > │ let v115 : float = v106 + v56 │
00:00:25 #4129 [Verbose] > │ let v116 : float = v107 + v57 │
00:00:25 #4130 [Verbose] > │ let v117 : float = v108 + v61 │
00:00:25 #4131 [Verbose] > │ let v118 : float = v109 + v58 │
00:00:25 #4132 [Verbose] > │ let v119 : float = v110 + v59 │
00:00:25 #4133 [Verbose] > │ let v120 : float = v111 + v60 │
00:00:25 #4134 [Verbose] > │ let v121 : float = v112 + v62 │
00:00:25 #4135 [Verbose] > │ let v122 : float = v113 + v63 │
00:00:25 #4136 [Verbose] > │ let v123 : float = v114 + v64 │
00:00:25 #4137 [Verbose] > │ let v124 : float = v115 + v79 │
00:00:25 #4138 [Verbose] > │ let v125 : float = v116 + v80 │
00:00:25 #4139 [Verbose] > │ let v126 : float = v117 + v84 │
00:00:25 #4140 [Verbose] > │ let v127 : float = v118 + v81 │
00:00:25 #4141 [Verbose] > │ let v128 : float = v119 + v82 │
00:00:25 #4142 [Verbose] > │ let v129 : float = v120 + v83 │
00:00:25 #4143 [Verbose] > │ let v130 : float = v121 + v85 │
00:00:25 #4144 [Verbose] > │ let v131 : float = v122 + v86 │
00:00:25 #4145 [Verbose] > │ let v132 : float = v123 + v87 │
00:00:25 #4146 [Verbose] > │ let v133 : float = v126 * 1.6666666666666669E-10 │
00:00:25 #4147 [Verbose] > │ let v134 : float = v6 + v133 │
00:00:25 #4148 [Verbose] > │ let v135 : float = 1.6666666666666669E-10 * v127 │
00:00:25 #4149 [Verbose] > │ let v136 : float = 1.6666666666666669E-10 * v128 │
00:00:25 #4150 [Verbose] > │ let v137 : float = 1.6666666666666669E-10 * v129 │
00:00:25 #4151 [Verbose] > │ let v138 : float = v3 + v135 │
00:00:25 #4152 [Verbose] > │ let v139 : float = v4 + v136 │
00:00:25 #4153 [Verbose] > │ let v140 : float = v5 + v137 │
00:00:25 #4154 [Verbose] > │ let v141 : float = 1.6666666666666669E-10 * v130 │
00:00:25 #4155 [Verbose] > │ let v142 : float = 1.6666666666666669E-10 * v131 │
00:00:25 #4156 [Verbose] > │ let v143 : float = 1.6666666666666669E-10 * v132 │
00:00:25 #4157 [Verbose] > │ let v144 : float = v7 + v141 │
00:00:25 #4158 [Verbose] > │ let v145 : float = v8 + v142 │
00:00:25 #4159 [Verbose] > │ let v146 : float = v9 + v143 │
00:00:25 #4160 [Verbose] > │ struct (v1, v2, v138, v139, v140, v134, v144, v145, v146) │
00:00:25 #4161 [Verbose] > │ and closure0 () (v0 : (struct (float * float * float * float * float * float │
00:00:25 #4162 [Verbose] > │ * float * float * float) -> struct (float * float * float * float * float * │
00:00:25 #4163 [Verbose] > │ float * float * float * float))) : (struct (float * float * float * float * │
00:00:25 #4164 [Verbose] > │ float * float * float * float * float) -> struct (float * float * float * │
00:00:25 #4165 [Verbose] > │ float * float * float * float * float * float)) = │
00:00:25 #4166 [Verbose] > │ closure1(v0) │
00:00:25 #4167 [Verbose] > │ and closure2 () struct (v0 : float, v1 : float, v2 : float, v3 : float, v4 : │
00:00:25 #4168 [Verbose] > │ float, v5 : float, v6 : float, v7 : float, v8 : float) : struct (float * │
00:00:25 #4169 [Verbose] > │ float * float * float * float * float * float * float * float) = │
00:00:25 #4170 [Verbose] > │ let v9 : float = v8 * 0.0 │
00:00:25 #4171 [Verbose] > │ let v10 : float = v7 - v9 │
00:00:25 #4172 [Verbose] > │ let v11 : float = v9 - v6 │
00:00:25 #4173 [Verbose] > │ let v12 : float = v6 * 0.0 │
00:00:25 #4174 [Verbose] > │ let v13 : float = v7 * 0.0 │
00:00:25 #4175 [Verbose] > │ let v14 : float = v12 - v13 │
00:00:25 #4176 [Verbose] > │ let v15 : float = v0 * v10 │
00:00:25 #4177 [Verbose] > │ let v16 : float = v0 * v11 │
00:00:25 #4178 [Verbose] > │ let v17 : float = v0 * v14 │
00:00:25 #4179 [Verbose] > │ let v18 : float = v15 / v1 │
00:00:25 #4180 [Verbose] > │ let v19 : float = v16 / v1 │
00:00:25 #4181 [Verbose] > │ let v20 : float = v17 / v1 │
00:00:25 #4182 [Verbose] > │ struct (0.0, 0.0, v6, v7, v8, 1.0, v18, v19, v20) │
00:00:25 #4183 [Verbose] > │ and closure3 () struct (v0 : float, v1 : float, v2 : float, v3 : float, v4 : │
00:00:25 #4184 [Verbose] > │ float, v5 : float, v6 : float, v7 : float, v8 : float) : struct (float * │
00:00:25 #4185 [Verbose] > │ float * float * float * float * float * float * float * float) = │
00:00:25 #4186 [Verbose] > │ let v9 : float = v8 * 0.0 │
00:00:25 #4187 [Verbose] > │ let v10 : float = v7 - v9 │
00:00:25 #4188 [Verbose] > │ let v11 : float = v9 - v6 │
00:00:25 #4189 [Verbose] > │ let v12 : float = v6 * 0.0 │
00:00:25 #4190 [Verbose] > │ let v13 : float = v7 * 0.0 │
00:00:25 #4191 [Verbose] > │ let v14 : float = v12 - v13 │
00:00:25 #4192 [Verbose] > │ let v15 : float = v0 * v10 │
00:00:25 #4193 [Verbose] > │ let v16 : float = v0 * v11 │
00:00:25 #4194 [Verbose] > │ let v17 : float = v0 * v14 │
00:00:25 #4195 [Verbose] > │ let v18 : float = v6 / 299792458.0 │
00:00:25 #4196 [Verbose] > │ let v19 : float = v7 / 299792458.0 │
00:00:25 #4197 [Verbose] > │ let v20 : float = v8 / 299792458.0 │
00:00:25 #4198 [Verbose] > │ let v21 : float = v18 * v18 │
00:00:25 #4199 [Verbose] > │ let v22 : float = v19 * v19 │
00:00:25 #4200 [Verbose] > │ let v23 : float = v21 + v22 │
00:00:25 #4201 [Verbose] > │ let v24 : float = v20 * v20 │
00:00:25 #4202 [Verbose] > │ let v25 : float = v23 + v24 │
00:00:25 #4203 [Verbose] > │ let v26 : float = 1.0 - v25 │
00:00:25 #4204 [Verbose] > │ let v27 : float = sqrt v26 │
00:00:25 #4205 [Verbose] > │ let v28 : float = v15 * v18 │
00:00:25 #4206 [Verbose] > │ let v29 : float = v16 * v19 │
00:00:25 #4207 [Verbose] > │ let v30 : float = v28 + v29 │
00:00:25 #4208 [Verbose] > │ let v31 : float = v17 * v20 │
00:00:25 #4209 [Verbose] > │ let v32 : float = v30 + v31 │
00:00:25 #4210 [Verbose] > │ let v33 : float = v32 * v18 │
00:00:25 #4211 [Verbose] > │ let v34 : float = v32 * v19 │
00:00:25 #4212 [Verbose] > │ let v35 : float = v32 * v20 │
00:00:25 #4213 [Verbose] > │ let v36 : float = -1.0 * v33 │
00:00:25 #4214 [Verbose] > │ let v37 : float = -1.0 * v34 │
00:00:25 #4215 [Verbose] > │ let v38 : float = -1.0 * v35 │
00:00:25 #4216 [Verbose] > │ let v39 : float = v15 + v36 │
00:00:25 #4217 [Verbose] > │ let v40 : float = v16 + v37 │
00:00:25 #4218 [Verbose] > │ let v41 : float = v17 + v38 │
00:00:25 #4219 [Verbose] > │ let v42 : float = v27 * v39 │
00:00:25 #4220 [Verbose] > │ let v43 : float = v27 * v40 │
00:00:25 #4221 [Verbose] > │ let v44 : float = v27 * v41 │
00:00:25 #4222 [Verbose] > │ let v45 : float = v42 / v1 │
00:00:25 #4223 [Verbose] > │ let v46 : float = v43 / v1 │
00:00:25 #4224 [Verbose] > │ let v47 : float = v44 / v1 │
00:00:25 #4225 [Verbose] > │ struct (0.0, 0.0, v6, v7, v8, 1.0, v45, v46, v47) │
00:00:25 #4226 [Verbose] > │ and method2 (v0 : (struct (float * float * float * float * float * float * │
00:00:25 #4227 [Verbose] > │ float * float * float) -> struct (float * float * float * float * float * │
00:00:25 #4228 [Verbose] > │ float * float * float * float)), v1 : float, v2 : float, v3 : float, v4 : │
00:00:25 #4229 [Verbose] > │ float, v5 : float, v6 : float, v7 : float, v8 : float, v9 : float, v10 : │
00:00:25 #4230 [Verbose] > │ int32) : struct (float * float * float * float * float * float * float * │
00:00:25 #4231 [Verbose] > │ float * float) = │
00:00:25 #4232 [Verbose] > │ let v11 : bool = v10 <= 0 │
00:00:25 #4233 [Verbose] > │ if v11 then │
00:00:25 #4234 [Verbose] > │ struct (v1, v2, v3, v4, v5, v6, v7, v8, v9) │
00:00:25 #4235 [Verbose] > │ else │
00:00:25 #4236 [Verbose] > │ let struct (v12 : float, v13 : float, v14 : float, v15 : float, v16 │
00:00:25 #4237 [Verbose] > │ : float, v17 : float, v18 : float, v19 : float, v20 : float) = v0 struct │
00:00:25 #4238 [Verbose] > │ (v1, v2, v3, v4, v5, v6, v7, v8, v9) │
00:00:25 #4239 [Verbose] > │ let v21 : int32 = v10 - 1 │
00:00:25 #4240 [Verbose] > │ method2(v0, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21) │
00:00:25 #4241 [Verbose] > │ and method3 (v0 : UH0, v1 : UH0) : UH0 = │
00:00:25 #4242 [Verbose] > │ match v0 with │
00:00:25 #4243 [Verbose] > │ | UH0_0(v2, v3, v4, v5, v6, v7, v8, v9, v10, v11) -> (* Cons *) │
00:00:25 #4244 [Verbose] > │ let v12 : UH0 = UH0_0(v2, v3, v4, v5, v6, v7, v8, v9, v10, v1) │
00:00:25 #4245 [Verbose] > │ method3(v11, v12) │
00:00:25 #4246 [Verbose] > │ | UH0_1 -> (* Nil *) │
00:00:25 #4247 [Verbose] > │ v1 │
00:00:25 #4248 [Verbose] > │ and method1 (v0 : (struct (float * float * float * float * float * float * │
00:00:25 #4249 [Verbose] > │ float * float * float) -> struct (float * float * float * float * float * │
00:00:25 #4250 [Verbose] > │ float * float * float * float)), v1 : UH0, v2 : int32) : UH0 = │
00:00:25 #4251 [Verbose] > │ let v3 : float = 1.602176621E-19 │
00:00:25 #4252 [Verbose] > │ let v4 : float = 1.672621898E-27 │
00:00:25 #4253 [Verbose] > │ let v5 : float = 0.0 │
00:00:25 #4254 [Verbose] > │ let v6 : float = 0.0 │
00:00:25 #4255 [Verbose] > │ let v7 : float = 0.0 │
00:00:25 #4256 [Verbose] > │ let v8 : float = 0.0 │
00:00:25 #4257 [Verbose] > │ let v9 : float = 0.0 │
00:00:25 #4258 [Verbose] > │ let v10 : float = 239833966.4 │
00:00:25 #4259 [Verbose] > │ let v11 : float = 0.0 │
00:00:25 #4260 [Verbose] > │ let struct (v12 : float, v13 : float, v14 : float, v15 : float, v16 : │
00:00:25 #4261 [Verbose] > │ float, v17 : float, v18 : float, v19 : float, v20 : float) = method2(v0, v3, │
00:00:25 #4262 [Verbose] > │ v4, v5, v6, v7, v8, v9, v10, v11, v2) │
00:00:25 #4263 [Verbose] > │ let v21 : bool = v2 < 100 │
00:00:25 #4264 [Verbose] > │ if v21 then │
00:00:25 #4265 [Verbose] > │ let v22 : UH0 = UH0_0(v12, v13, v14, v15, v16, v17, v18, v19, v20, │
00:00:25 #4266 [Verbose] > │ v1) │
00:00:25 #4267 [Verbose] > │ let v23 : int32 = v2 + 1 │
00:00:25 #4268 [Verbose] > │ method1(v0, v22, v23) │
00:00:25 #4269 [Verbose] > │ else │
00:00:25 #4270 [Verbose] > │ let v25 : UH0 = UH0_1 │
00:00:25 #4271 [Verbose] > │ method3(v1, v25) │
00:00:25 #4272 [Verbose] > │ and method4 (v0 : UH0, v1 : UH1) : UH1 = │
00:00:25 #4273 [Verbose] > │ match v0 with │
00:00:25 #4274 [Verbose] > │ | UH0_0(v2, v3, v4, v5, v6, v7, v8, v9, v10, v11) -> (* Cons *) │
00:00:25 #4275 [Verbose] > │ let v12 : UH1 = method4(v11, v1) │
00:00:25 #4276 [Verbose] > │ UH1_0(v4, v5, v12) │
00:00:25 #4277 [Verbose] > │ | UH0_1 -> (* Nil *) │
00:00:25 #4278 [Verbose] > │ v1 │
00:00:25 #4279 [Verbose] > │ and method5 (v0 : UH1, v1 : UH2, v2 : UH2) : struct (UH2 * UH2) = │
00:00:25 #4280 [Verbose] > │ match v0 with │
00:00:25 #4281 [Verbose] > │ | UH1_0(v3, v4, v5) -> (* Cons *) │
00:00:25 #4282 [Verbose] > │ let v6 : UH2 = UH2_0(v3, v1) │
00:00:25 #4283 [Verbose] > │ let v7 : UH2 = UH2_0(v4, v2) │
00:00:25 #4284 [Verbose] > │ method5(v5, v6, v7) │
00:00:25 #4285 [Verbose] > │ | UH1_1 -> (* Nil *) │
00:00:25 #4286 [Verbose] > │ struct (v1, v2) │
00:00:25 #4287 [Verbose] > │ and method6 (v0 : UH2, v1 : UH2) : UH2 = │
00:00:25 #4288 [Verbose] > │ match v0 with │
00:00:25 #4289 [Verbose] > │ | UH2_0(v2, v3) -> (* Cons *) │
00:00:25 #4290 [Verbose] > │ let v4 : UH2 = UH2_0(v2, v1) │
00:00:25 #4291 [Verbose] > │ method6(v3, v4) │
00:00:25 #4292 [Verbose] > │ | UH2_1 -> (* Nil *) │
00:00:25 #4293 [Verbose] > │ v1 │
00:00:25 #4294 [Verbose] > │ and method7 (v0 : (struct (float * float * float * float * float * float * │
00:00:25 #4295 [Verbose] > │ float * float * float) -> struct (float * float * float * float * float * │
00:00:25 #4296 [Verbose] > │ float * float * float * float)), v1 : UH0, v2 : int32) : UH0 = │
00:00:25 #4297 [Verbose] > │ let v3 : float = 1.602176621E-19 │
00:00:25 #4298 [Verbose] > │ let v4 : float = 1.672621898E-27 │
00:00:25 #4299 [Verbose] > │ let v5 : float = 0.0 │
00:00:25 #4300 [Verbose] > │ let v6 : float = 0.0 │
00:00:25 #4301 [Verbose] > │ let v7 : float = 0.0 │
00:00:25 #4302 [Verbose] > │ let v8 : float = 0.0 │
00:00:25 #4303 [Verbose] > │ let v9 : float = 0.0 │
00:00:25 #4304 [Verbose] > │ let v10 : float = 239833966.4 │
00:00:25 #4305 [Verbose] > │ let v11 : float = 0.0 │
00:00:25 #4306 [Verbose] > │ let struct (v12 : float, v13 : float, v14 : float, v15 : float, v16 : │
00:00:25 #4307 [Verbose] > │ float, v17 : float, v18 : float, v19 : float, v20 : float) = method2(v0, v3, │
00:00:25 #4308 [Verbose] > │ v4, v5, v6, v7, v8, v9, v10, v11, v2) │
00:00:25 #4309 [Verbose] > │ let v21 : bool = v2 < 165 │
00:00:25 #4310 [Verbose] > │ if v21 then │
00:00:25 #4311 [Verbose] > │ let v22 : UH0 = UH0_0(v12, v13, v14, v15, v16, v17, v18, v19, v20, │
00:00:25 #4312 [Verbose] > │ v1) │
00:00:25 #4313 [Verbose] > │ let v23 : int32 = v2 + 1 │
00:00:25 #4314 [Verbose] > │ method7(v0, v22, v23) │
00:00:25 #4315 [Verbose] > │ else │
00:00:25 #4316 [Verbose] > │ let v25 : UH0 = UH0_1 │
00:00:25 #4317 [Verbose] > │ method3(v1, v25) │
00:00:25 #4318 [Verbose] > │ and method8 (v0 : UH0, v1 : UH1) : UH1 = │
00:00:25 #4319 [Verbose] > │ match v0 with │
00:00:25 #4320 [Verbose] > │ | UH0_0(v2, v3, v4, v5, v6, v7, v8, v9, v10, v11) -> (* Cons *) │
00:00:25 #4321 [Verbose] > │ let v12 : UH1 = method8(v11, v1) │
00:00:25 #4322 [Verbose] > │ UH1_0(v4, v5, v12) │
00:00:25 #4323 [Verbose] > │ | UH0_1 -> (* Nil *) │
00:00:25 #4324 [Verbose] > │ v1 │
00:00:25 #4325 [Verbose] > │ and method10 (v0 : UH2, v1 : int32) : int32 = │
00:00:25 #4326 [Verbose] > │ match v0 with │
00:00:25 #4327 [Verbose] > │ | UH2_0(v2, v3) -> (* Cons *) │
00:00:25 #4328 [Verbose] > │ let v4 : int32 = v1 + 1 │
00:00:25 #4329 [Verbose] > │ method10(v3, v4) │
00:00:25 #4330 [Verbose] > │ | UH2_1 -> (* Nil *) │
00:00:25 #4331 [Verbose] > │ v1 │
00:00:25 #4332 [Verbose] > │ and method11 (v0 : (float []), v1 : UH2, v2 : int32) : int32 = │
00:00:25 #4333 [Verbose] > │ match v1 with │
00:00:25 #4334 [Verbose] > │ | UH2_0(v3, v4) -> (* Cons *) │
00:00:25 #4335 [Verbose] > │ v0.[int v2] <- v3 │
00:00:25 #4336 [Verbose] > │ let v5 : int32 = v2 + 1 │
00:00:25 #4337 [Verbose] > │ method11(v0, v4, v5) │
00:00:25 #4338 [Verbose] > │ | UH2_1 -> (* Nil *) │
00:00:25 #4339 [Verbose] > │ v2 │
00:00:25 #4340 [Verbose] > │ and method9 (v0 : UH2) : (float []) = │
00:00:25 #4341 [Verbose] > │ let v1 : int32 = 0 │
00:00:25 #4342 [Verbose] > │ let v2 : int32 = method10(v0, v1) │
00:00:25 #4343 [Verbose] > │ let v3 : (float []) = Array.zeroCreate<float> (v2) │
00:00:25 #4344 [Verbose] > │ let v4 : int32 = 0 │
00:00:25 #4345 [Verbose] > │ let v5 : int32 = method11(v3, v0, v4) │
00:00:25 #4346 [Verbose] > │ v3 │
00:00:25 #4347 [Verbose] > │ and method12 (v0 : (struct (string * (float []) * (float [])) [])) : (struct │
00:00:25 #4348 [Verbose] > │ (string * (float []) * (float [])) []) = │
00:00:25 #4349 [Verbose] > │ v0 │
00:00:25 #4350 [Verbose] > │ and method0 () : struct (string * string * string * (struct (string * (float │
00:00:25 #4351 [Verbose] > │ []) * (float [])) [])) = │
00:00:25 #4352 [Verbose] > │ let v0 : ((struct (float * float * float * float * float * float * float │
00:00:25 #4353 [Verbose] > │ * float * float) -> struct (float * float * float * float * float * float * │
00:00:25 #4354 [Verbose] > │ float * float * float)) -> (struct (float * float * float * float * float * │
00:00:25 #4355 [Verbose] > │ float * float * float * float) -> struct (float * float * float * float * │
00:00:25 #4356 [Verbose] > │ float * float * float * float * float))) = closure0() │
00:00:25 #4357 [Verbose] > │ let v1 : (struct (float * float * float * float * float * float * float │
00:00:25 #4358 [Verbose] > │ * float * float) -> struct (float * float * float * float * float * float * │
00:00:25 #4359 [Verbose] > │ float * float * float)) = closure2() │
00:00:25 #4360 [Verbose] > │ let v2 : (struct (float * float * float * float * float * float * float │
00:00:25 #4361 [Verbose] > │ * float * float) -> struct (float * float * float * float * float * float * │
00:00:25 #4362 [Verbose] > │ float * float * float)) = v0 v1 │
00:00:25 #4363 [Verbose] > │ let v3 : (struct (float * float * float * float * float * float * float │
00:00:25 #4364 [Verbose] > │ * float * float) -> struct (float * float * float * float * float * float * │
00:00:25 #4365 [Verbose] > │ float * float * float)) = closure3() │
00:00:25 #4366 [Verbose] > │ let v4 : (struct (float * float * float * float * float * float * float │
00:00:25 #4367 [Verbose] > │ * float * float) -> struct (float * float * float * float * float * float * │
00:00:25 #4368 [Verbose] > │ float * float * float)) = v0 v3 │
00:00:25 #4369 [Verbose] > │ let v5 : UH0 = UH0_1 │
00:00:25 #4370 [Verbose] > │ let v6 : int32 = 0 │
00:00:25 #4371 [Verbose] > │ let v7 : UH0 = method1(v2, v5, v6) │
00:00:25 #4372 [Verbose] > │ let v8 : UH1 = UH1_1 │
00:00:25 #4373 [Verbose] > │ let v9 : UH1 = method4(v7, v8) │
00:00:25 #4374 [Verbose] > │ let v10 : UH2 = UH2_1 │
00:00:25 #4375 [Verbose] > │ let v11 : UH2 = UH2_1 │
00:00:25 #4376 [Verbose] > │ let struct (v12 : UH2, v13 : UH2) = method5(v9, v10, v11) │
00:00:25 #4377 [Verbose] > │ let v14 : UH2 = UH2_1 │
00:00:25 #4378 [Verbose] > │ let v15 : UH2 = method6(v12, v14) │
00:00:25 #4379 [Verbose] > │ let v16 : UH2 = UH2_1 │
00:00:25 #4380 [Verbose] > │ let v17 : UH2 = method6(v13, v16) │
00:00:25 #4381 [Verbose] > │ let v18 : UH0 = UH0_1 │
00:00:25 #4382 [Verbose] > │ let v19 : int32 = 0 │
00:00:25 #4383 [Verbose] > │ let v20 : UH0 = method7(v4, v18, v19) │
00:00:25 #4384 [Verbose] > │ let v21 : UH1 = UH1_1 │
00:00:25 #4385 [Verbose] > │ let v22 : UH1 = method8(v20, v21) │
00:00:25 #4386 [Verbose] > │ let v23 : UH2 = UH2_1 │
00:00:25 #4387 [Verbose] > │ let v24 : UH2 = UH2_1 │
00:00:25 #4388 [Verbose] > │ let struct (v25 : UH2, v26 : UH2) = method5(v22, v23, v24) │
00:00:25 #4389 [Verbose] > │ let v27 : UH2 = UH2_1 │
00:00:25 #4390 [Verbose] > │ let v28 : UH2 = method6(v25, v27) │
00:00:25 #4391 [Verbose] > │ let v29 : UH2 = UH2_1 │
00:00:25 #4392 [Verbose] > │ let v30 : UH2 = method6(v26, v29) │
00:00:25 #4393 [Verbose] > │ let v31 : (float []) = method9(v15) │
00:00:25 #4394 [Verbose] > │ let v32 : (float []) = method9(v17) │
00:00:25 #4395 [Verbose] > │ let v33 : (float []) = method9(v28) │
00:00:25 #4396 [Verbose] > │ let v34 : (float []) = method9(v30) │
00:00:25 #4397 [Verbose] > │ let v35 : string = "newtonian" │
00:00:25 #4398 [Verbose] > │ let v36 : string = "relativistic" │
00:00:25 #4399 [Verbose] > │ let v37 : (struct (string * (float []) * (float [])) []) = [|struct │
00:00:25 #4400 [Verbose] > │ (v35, v31, v32); struct (v36, v33, v34)|] │
00:00:25 #4401 [Verbose] > │ let v38 : (struct (string * (float []) * (float [])) []) = method12(v37) │
00:00:25 #4402 [Verbose] > │ let v39 : string = "proton in a 1-t magnetic field" │
00:00:25 #4403 [Verbose] > │ let v40 : string = "x (m)" │
00:00:25 #4404 [Verbose] > │ let v41 : string = "y (m)" │
00:00:25 #4405 [Verbose] > │ struct (v39, v40, v41, v38) │
00:00:25 #4406 [Verbose] > │ method0() │
00:00:25 #4407 [Verbose] > │ │
00:00:25 #4408 [Verbose] > │ │
00:00:25 #4409 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:25 #4410 [Verbose] >
00:00:25 #4411 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:25 #4412 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:25 #4413 [Verbose] > │ ### system kinetic energy versus time 1 │
00:00:25 #4414 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:25 #4415 [Verbose] >
00:00:25 #4416 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:25 #4417 [Verbose] > // // test
00:00:25 #4418 [Verbose] >
00:00:25 #4419 [Verbose] > inl central_force f (particle_state st1) (particle_state st2) =
00:00:25 #4420 [Verbose] > inl r1 = st1.pos_vec
00:00:25 #4421 [Verbose] > inl r2 = st2.pos_vec
00:00:25 #4422 [Verbose] > inl r21 = r2 ^-^ r1
00:00:25 #4423 [Verbose] > inl r21mag = magnitude r21
00:00:25 #4424 [Verbose] > f r21mag *^ r21 ^/ r21mag
00:00:25 #4425 [Verbose] >
00:00:25 #4426 [Verbose] > inl billiard_force k re =
00:00:25 #4427 [Verbose] > inl f r =
00:00:25 #4428 [Verbose] > if r >= re
00:00:25 #4429 [Verbose] > then 0
00:00:25 #4430 [Verbose] > else -k * (r - re)
00:00:25 #4431 [Verbose] > central_force f
00:00:25 #4432 [Verbose] >
00:00:25 #4433 [Verbose] > type force_vector = vec
00:00:25 #4434 [Verbose] > type two_body_force = particle_state -> particle_state -> force_vector
00:00:25 #4435 [Verbose] >
00:00:25 #4436 [Verbose] > union force =
00:00:25 #4437 [Verbose] > | ExternalForce : i32 * one_body_force
00:00:25 #4438 [Verbose] > | InternalForce : i32 * i32 * two_body_force
00:00:25 #4439 [Verbose] >
00:00:25 #4440 [Verbose] > nominal multi_particle_state = list particle_state
00:00:25 #4441 [Verbose] >
00:00:25 #4442 [Verbose] > nominal d_multi_particle_state = list d_particle_state
00:00:25 #4443 [Verbose] >
00:00:25 #4444 [Verbose] > inl force_on n sts force =
00:00:25 #4445 [Verbose] > match force with
00:00:25 #4446 [Verbose] > | ExternalForce (n0, f_one_body) =>
00:00:25 #4447 [Verbose] > if n = n0
00:00:25 #4448 [Verbose] > then f_one_body
00:00:25 #4449 [Verbose] > else fun _ => zero_vec ()
00:00:25 #4450 [Verbose] > | InternalForce (n0, n1, f_two_body) =>
00:00:25 #4451 [Verbose] > if n = n0
00:00:25 #4452 [Verbose] > then f_two_body (sts |> listm'.item n1)
00:00:25 #4453 [Verbose] > elif n = n1
00:00:25 #4454 [Verbose] > then f_two_body (sts |> listm'.item n0)
00:00:25 #4455 [Verbose] > else fun _ => zero_vec ()
00:00:25 #4456 [Verbose] >
00:00:25 #4457 [Verbose] > inl forces_on n (multi_particle_state sts) fs =
00:00:25 #4458 [Verbose] > fs |> listm.map (force_on n sts)
00:00:25 #4459 [Verbose] >
00:00:25 #4460 [Verbose] > inl newton_second_mps fs (multi_particle_state sts) : d_multi_particle_state =
00:00:25 #4461 [Verbose] > inl deriv (n, st) =
00:00:25 #4462 [Verbose] > newton_second_ps (forces_on n (multi_particle_state sts) fs) st
00:00:25 #4463 [Verbose] > sts |> listm'.indexed |> listm.map deriv |> d_multi_particle_state
00:00:25 #4464 [Verbose] >
00:00:25 #4465 [Verbose] > instance (+++) d_multi_particle_state = fun (d_multi_particle_state dsts1)
00:00:25 #4466 [Verbose] > (d_multi_particle_state dsts2) =>
00:00:25 #4467 [Verbose] > d_multi_particle_state (listm'.zip_with_ (+++) dsts1 dsts2)
00:00:25 #4468 [Verbose] >
00:00:25 #4469 [Verbose] > instance scale d_multi_particle_state = fun w (d_multi_particle_state dsts) =>
00:00:25 #4470 [Verbose] > d_multi_particle_state (dsts |> listm.map (scale w))
00:00:25 #4471 [Verbose] >
00:00:25 #4472 [Verbose] > instance shift multi_particle_state = fun dt dsts (multi_particle_state sts) =>
00:00:25 #4473 [Verbose] > inl (d_multi_particle_state dsts) =
00:00:25 #4474 [Verbose] > real
00:00:25 #4475 [Verbose] > match dsts with
00:00:25 #4476 [Verbose] > | d_multi_particle_state _ => dsts
00:00:25 #4477 [Verbose] > listm'.zip_with_ (shift dt) dsts sts |> multi_particle_state
00:00:25 #4478 [Verbose] >
00:00:25 #4479 [Verbose] > inl euler_cromer_mps dt : numerical_method multi_particle_state
00:00:25 #4480 [Verbose] > d_multi_particle_state =
00:00:25 #4481 [Verbose] > fun deriv mpst0 =>
00:00:25 #4482 [Verbose] > inl mpst1 = euler dt deriv mpst0
00:00:25 #4483 [Verbose] > inl (multi_particle_state sts0) = mpst0
00:00:25 #4484 [Verbose] > inl (multi_particle_state sts1) = mpst1
00:00:25 #4485 [Verbose] > sts1
00:00:25 #4486 [Verbose] > |> listm'.zip_ sts0
00:00:25 #4487 [Verbose] > |> listm.map (fun ((particle_state st0), (particle_state st1)) =>
00:00:25 #4488 [Verbose] > particle_state {
00:00:25 #4489 [Verbose] > st1 with
00:00:25 #4490 [Verbose] > pos_vec = st0.pos_vec ^+^ st1.velocity ^* dt
00:00:25 #4491 [Verbose] > }
00:00:25 #4492 [Verbose] > )
00:00:25 #4493 [Verbose] > |> multi_particle_state
00:00:25 #4494 [Verbose] >
00:00:25 #4495 [Verbose] > inl update_mps (method : numerical_method multi_particle_state
00:00:25 #4496 [Verbose] > d_multi_particle_state) =
00:00:25 #4497 [Verbose] > newton_second_mps >> method
00:00:25 #4498 [Verbose] >
00:00:25 #4499 [Verbose] > inl states_mps (method : numerical_method multi_particle_state
00:00:25 #4500 [Verbose] > d_multi_particle_state) =
00:00:25 #4501 [Verbose] > newton_second_mps >> method >> seq.iterate_
00:00:25 #4502 [Verbose] >
00:00:25 #4503 [Verbose] >
00:00:25 #4504 [Verbose] > inl kinetic_energy (particle_state st) =
00:00:25 #4505 [Verbose] > inl m = st.mass
00:00:25 #4506 [Verbose] > inl v = magnitude st.velocity
00:00:25 #4507 [Verbose] > 0.5 * m * v ** 2
00:00:25 #4508 [Verbose] >
00:00:25 #4509 [Verbose] > inl system_ke (multi_particle_state sts) =
00:00:25 #4510 [Verbose] > sts |> listm.map kinetic_energy |> listm'.sum
00:00:25 #4511 [Verbose] >
00:00:25 #4512 [Verbose] > inl linear_spring_pe k re (particle_state st1) (particle_state st2) =
00:00:25 #4513 [Verbose] > inl r1 = st1.pos_vec
00:00:25 #4514 [Verbose] > inl r2 = st2.pos_vec
00:00:25 #4515 [Verbose] > inl r21 = r2 ^-^ r1
00:00:25 #4516 [Verbose] > inl r21mag = magnitude r21
00:00:25 #4517 [Verbose] > k * (r21mag - re) ** 2 / 2
00:00:25 #4518 [Verbose] >
00:00:25 #4519 [Verbose] > inl earth_surface_gravity_pe (particle_state st) =
00:00:25 #4520 [Verbose] > inl g = 9.80665
00:00:25 #4521 [Verbose] > inl m = st.mass
00:00:25 #4522 [Verbose] > inl z = st.pos_vec.z
00:00:25 #4523 [Verbose] > m * g * z
00:00:25 #4524 [Verbose] >
00:00:25 #4525 [Verbose] > inl two_springs_pe (multi_particle_state sts) =
00:00:25 #4526 [Verbose] > inl st0 = sts |> listm'.item 0i32
00:00:25 #4527 [Verbose] > inl st1 = sts |> listm'.item 1i32
00:00:25 #4528 [Verbose] > linear_spring_pe 100 0.5 (default_particle_state ()) st0
00:00:25 #4529 [Verbose] > + linear_spring_pe 100 0.5 st0 st1
00:00:25 #4530 [Verbose] > + earth_surface_gravity_pe st0
00:00:25 #4531 [Verbose] > + earth_surface_gravity_pe st1
00:00:25 #4532 [Verbose] >
00:00:25 #4533 [Verbose] > inl two_springs_me mpst =
00:00:25 #4534 [Verbose] > system_ke mpst + two_springs_pe mpst
00:00:25 #4535 [Verbose] >
00:00:25 #4536 [Verbose] > inl ball_radius () = 0.03
00:00:25 #4537 [Verbose] >
00:00:25 #4538 [Verbose] > inl billiard_forces k =
00:00:25 #4539 [Verbose] > [[ InternalForce (0, 1, billiard_force k (2 * ball_radius ())) ]]
00:00:25 #4540 [Verbose] >
00:00:25 #4541 [Verbose] > inl billiard_update n_method k dt =
00:00:25 #4542 [Verbose] > update_mps (n_method dt) (billiard_forces k)
00:00:25 #4543 [Verbose] >
00:00:25 #4544 [Verbose] > inl billiard_initial () =
00:00:25 #4545 [Verbose] > inl ball_mass = 0.160
00:00:25 #4546 [Verbose] > inl (particle_state default_particle_state') = default_particle_state ()
00:00:25 #4547 [Verbose] > multi_particle_state [[
00:00:25 #4548 [Verbose] > particle_state {
00:00:25 #4549 [Verbose] > default_particle_state' with
00:00:25 #4550 [Verbose] > mass = ball_mass
00:00:25 #4551 [Verbose] > pos_vec = zero_vec ()
00:00:25 #4552 [Verbose] > velocity = 0.2 *^ i_hat ()
00:00:25 #4553 [Verbose] > }
00:00:25 #4554 [Verbose] > particle_state {
00:00:25 #4555 [Verbose] > default_particle_state' with
00:00:25 #4556 [Verbose] > mass = ball_mass
00:00:25 #4557 [Verbose] > pos_vec = i_hat () ^+^ 0.02 *^ j_hat ()
00:00:25 #4558 [Verbose] > velocity = zero_vec ()
00:00:25 #4559 [Verbose] > }
00:00:25 #4560 [Verbose] > ]]
00:00:25 #4561 [Verbose] >
00:00:25 #4562 [Verbose] > inl billiard_states ~n_method k dt =
00:00:25 #4563 [Verbose] > states_mps (n_method dt) (billiard_forces k) (billiard_initial ())
00:00:25 #4564 [Verbose] >
00:00:25 #4565 [Verbose] > inl billiard_states_finite n_method k dt =
00:00:25 #4566 [Verbose] > billiard_states n_method k dt
00:00:25 #4567 [Verbose] > >> Some
00:00:25 #4568 [Verbose] > |> seq.take_while_ (fun (multi_particle_state mpst) (_ : i32) =>
00:00:25 #4569 [Verbose] > (mpst |> listm'.item 0i32).time <= 10
00:00:25 #4570 [Verbose] > )
00:00:25 #4571 [Verbose] >
00:00:25 #4572 [Verbose] > inl momentum (particle_state st) =
00:00:25 #4573 [Verbose] > inl m = st.mass
00:00:25 #4574 [Verbose] > inl v = st.velocity
00:00:25 #4575 [Verbose] > m *^ v
00:00:25 #4576 [Verbose] >
00:00:25 #4577 [Verbose] > inl system_p (multi_particle_state sts) =
00:00:25 #4578 [Verbose] > sts |> listm.map momentum |> sum_vec
00:00:25 #4579 [Verbose] >
00:00:25 #4580 [Verbose] >
00:00:25 #4581 [Verbose] > inl time_ke_ec_x, time_ke_ec_y =
00:00:25 #4582 [Verbose] > billiard_states_finite euler_cromer_mps 30 0.03
00:00:25 #4583 [Verbose] > |> listm.map (fun (multi_particle_state mpst) =>
00:00:25 #4584 [Verbose] > (mpst |> listm'.item 0i32).time, system_ke (multi_particle_state mpst)
00:00:25 #4585 [Verbose] > )
00:00:25 #4586 [Verbose] > |> listm'.unzip
00:00:25 #4587 [Verbose] >
00:00:25 #4588 [Verbose] > inl time_ke_rk4_x, time_ke_rk4_y =
00:00:25 #4589 [Verbose] > billiard_states_finite runge_kutta_4 30 0.03
00:00:25 #4590 [Verbose] > |> listm.map (fun (multi_particle_state mpst) =>
00:00:25 #4591 [Verbose] > (mpst |> listm'.item 0i32).time, system_ke (multi_particle_state mpst)
00:00:25 #4592 [Verbose] > )
00:00:25 #4593 [Verbose] > |> listm'.unzip
00:00:25 #4594 [Verbose] >
00:00:25 #4595 [Verbose] > inl time_ke_ec_x : a i32 _ = time_ke_ec_x |> listm.toArray
00:00:25 #4596 [Verbose] > inl time_ke_ec_y : a i32 _ = time_ke_ec_y |> listm.toArray
00:00:25 #4597 [Verbose] >
00:00:25 #4598 [Verbose] > inl time_ke_rk4_x : a i32 _ = time_ke_rk4_x |> listm.toArray
00:00:25 #4599 [Verbose] > inl time_ke_rk4_y : a i32 _ = time_ke_rk4_y |> listm.toArray
00:00:25 #4600 [Verbose] >
00:00:25 #4601 [Verbose] > "system kinetic energy versus time",
00:00:25 #4602 [Verbose] > "time (s)",
00:00:25 #4603 [Verbose] > "system kinetic energy (j)",
00:00:25 #4604 [Verbose] > ;[[
00:00:25 #4605 [Verbose] > "euler-cromer", time_ke_ec_x, time_ke_ec_y
00:00:25 #4606 [Verbose] > "runge-kutta 4", time_ke_rk4_x, time_ke_rk4_y
00:00:25 #4607 [Verbose] > ]]
00:00:25 #4608 [Verbose] > Building /tmp/!dotnet-repl/20240320-1229-5197-9795-9af4a9c709b9/main.spi
00:00:26 #4609 [Verbose] >
00:00:26 #4610 [Verbose] > ╭─[ 1.18s - return value ]─────────────────────────────────────────────────────╮
00:00:26 #4611 [Verbose] > │ <svg width="640" height="480" viewBox="0 0 640 480" │
00:00:26 #4612 [Verbose] > │ xmlns="http://www.w3.org/2000/svg"> │
00:00:26 #4613 [Verbose] > │ <rect x="0" y="0" width="640" height="480" opacity="1" fill="#141414" │
00:00:26 #4614 [Verbose] > │ stroke="none"/> │
00:00:26 #4615 [Verbose] > │ <text x="320" y="10" dy="0.76em" text-anchor="middle" │
00:00:26 #4616 [Verbose] > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1" │
00:00:26 #4617 [Verbose] > │ fill="#FFFFFF"> │
00:00:26 #4618 [Verbose] > │ system kinetic energy versus time │
00:00:26 #4619 [Verbose] > │ </text> │
00:00:26 #4620 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="59" y1="424" x2="59" │
00:00:26 #4621 [Verbose] > │ y2="75"/> │
00:00:26 #4622 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" y1="424" x2="69" │
00:00:26 #4623 [Verbose] > │ y2="75"/> │
00:00:26 #4624 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="79" y1="424" x2="79" │
00:00:26 #4625 [Verbose] > │ y2="75"/> │
00:00:26 #4626 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="89" y1="424" x2="89" │
00:00:26 #4627 [Verbose] > │ y2="75"/> │
00:00:26 #4628 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1... │
00:00:26 #4629 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:26 #4630 [Verbose] >
00:00:26 #4631 [Verbose] > ╭─[ 1.19s - stdout ]───────────────────────────────────────────────────────────╮
00:00:26 #4632 [Verbose] > │ type UH0 = │
00:00:26 #4633 [Verbose] > │ | UH0_0 of float * float * float * float * float * float * float * float │
00:00:26 #4634 [Verbose] > │ * float * UH0 │
00:00:26 #4635 [Verbose] > │ | UH0_1 │
00:00:26 #4636 [Verbose] > │ and UH1 = │
00:00:26 #4637 [Verbose] > │ | UH1_0 of float * float * float * float * float * float * float * float │
00:00:26 #4638 [Verbose] > │ * float * UH1 │
00:00:26 #4639 [Verbose] > │ | UH1_1 │
00:00:26 #4640 [Verbose] > │ and UH2 = │
00:00:26 #4641 [Verbose] > │ | UH2_0 of float * float * float * float * float * float * float * float │
00:00:26 #4642 [Verbose] > │ * float * float * float * float * float * float * float * float * float * │
00:00:26 #4643 [Verbose] > │ float * UH2 │
00:00:26 #4644 [Verbose] > │ | UH2_1 │
00:00:26 #4645 [Verbose] > │ and UH3 = │
00:00:26 #4646 [Verbose] > │ | UH3_0 of int32 * float * float * float * float * float * float * float │
00:00:26 #4647 [Verbose] > │ * float * float * UH3 │
00:00:26 #4648 [Verbose] > │ | UH3_1 │
00:00:26 #4649 [Verbose] > │ and [<Struct>] US0 = │
00:00:26 #4650 [Verbose] > │ | US0_0 │
00:00:26 #4651 [Verbose] > │ | US0_1 of f1_0 : float * f1_1 : float * f1_2 : float * f1_3 : float * │
00:00:26 #4652 [Verbose] > │ f1_4 : float * f1_5 : float * f1_6 : float * f1_7 : float * f1_8 : float │
00:00:26 #4653 [Verbose] > │ and UH4 = │
00:00:26 #4654 [Verbose] > │ | UH4_0 of UH0 * UH4 │
00:00:26 #4655 [Verbose] > │ | UH4_1 │
00:00:26 #4656 [Verbose] > │ and UH5 = │
00:00:26 #4657 [Verbose] > │ | UH5_0 of float * float * UH5 │
00:00:26 #4658 [Verbose] > │ | UH5_1 │
00:00:26 #4659 [Verbose] > │ and UH6 = │
00:00:26 #4660 [Verbose] > │ | UH6_0 of float * UH6 │
00:00:26 #4661 [Verbose] > │ | UH6_1 │
00:00:26 #4662 [Verbose] > │ let rec method2 (v0 : UH0, v1 : UH0) : UH0 = │
00:00:26 #4663 [Verbose] > │ match v0 with │
00:00:26 #4664 [Verbose] > │ | UH0_0(v2, v3, v4, v5, v6, v7, v8, v9, v10, v11) -> (* Cons *) │
00:00:26 #4665 [Verbose] > │ let v12 : UH0 = UH0_0(v2, v3, v4, v5, v6, v7, v8, v9, v10, v1) │
00:00:26 #4666 [Verbose] > │ method2(v11, v12) │
00:00:26 #4667 [Verbose] > │ | UH0_1 -> (* Nil *) │
00:00:26 #4668 [Verbose] > │ v1 │
00:00:26 #4669 [Verbose] > │ and method1 (v0 : float, v1 : UH0, v2 : UH1, v3 : UH0) : UH0 = │
00:00:26 #4670 [Verbose] > │ match v2 with │
00:00:26 #4671 [Verbose] > │ | UH1_0(v4, v5, v6, v7, v8, v9, v10, v11, v12, v13) -> (* Cons *) │
00:00:26 #4672 [Verbose] > │ match v3 with │
00:00:26 #4673 [Verbose] > │ | UH0_0(v14, v15, v16, v17, v18, v19, v20, v21, v22, v23) -> (* Cons │
00:00:26 #4674 [Verbose] > │ *) │
00:00:26 #4675 [Verbose] > │ let v24 : float = v9 * v0 │
00:00:26 #4676 [Verbose] > │ let v25 : float = v19 + v24 │
00:00:26 #4677 [Verbose] > │ let v26 : float = v0 * v6 │
00:00:26 #4678 [Verbose] > │ let v27 : float = v0 * v7 │
00:00:26 #4679 [Verbose] > │ let v28 : float = v0 * v8 │
00:00:26 #4680 [Verbose] > │ let v29 : float = v16 + v26 │
00:00:26 #4681 [Verbose] > │ let v30 : float = v17 + v27 │
00:00:26 #4682 [Verbose] > │ let v31 : float = v18 + v28 │
00:00:26 #4683 [Verbose] > │ let v32 : float = v0 * v10 │
00:00:26 #4684 [Verbose] > │ let v33 : float = v0 * v11 │
00:00:26 #4685 [Verbose] > │ let v34 : float = v0 * v12 │
00:00:26 #4686 [Verbose] > │ let v35 : float = v20 + v32 │
00:00:26 #4687 [Verbose] > │ let v36 : float = v21 + v33 │
00:00:26 #4688 [Verbose] > │ let v37 : float = v22 + v34 │
00:00:26 #4689 [Verbose] > │ let v38 : UH0 = UH0_0(v14, v15, v29, v30, v31, v25, v35, v36, │
00:00:26 #4690 [Verbose] > │ v37, v1) │
00:00:26 #4691 [Verbose] > │ method1(v0, v38, v13, v23) │
00:00:26 #4692 [Verbose] > │ | _ -> │
00:00:26 #4693 [Verbose] > │ let v40 : UH0 = UH0_1 │
00:00:26 #4694 [Verbose] > │ method2(v1, v40) │
00:00:26 #4695 [Verbose] > │ | _ -> │
00:00:26 #4696 [Verbose] > │ let v43 : UH0 = UH0_1 │
00:00:26 #4697 [Verbose] > │ method2(v1, v43) │
00:00:26 #4698 [Verbose] > │ and method4 (v0 : UH2, v1 : UH2) : UH2 = │
00:00:26 #4699 [Verbose] > │ match v0 with │
00:00:26 #4700 [Verbose] > │ | UH2_0(v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, │
00:00:26 #4701 [Verbose] > │ v16, v17, v18, v19, v20) -> (* Cons *) │
00:00:26 #4702 [Verbose] > │ let v21 : UH2 = UH2_0(v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, │
00:00:26 #4703 [Verbose] > │ v13, v14, v15, v16, v17, v18, v19, v1) │
00:00:26 #4704 [Verbose] > │ method4(v20, v21) │
00:00:26 #4705 [Verbose] > │ | UH2_1 -> (* Nil *) │
00:00:26 #4706 [Verbose] > │ v1 │
00:00:26 #4707 [Verbose] > │ and method3 (v0 : UH2, v1 : UH0, v2 : UH0) : UH2 = │
00:00:26 #4708 [Verbose] > │ match v1 with │
00:00:26 #4709 [Verbose] > │ | UH0_0(v3, v4, v5, v6, v7, v8, v9, v10, v11, v12) -> (* Cons *) │
00:00:26 #4710 [Verbose] > │ match v2 with │
00:00:26 #4711 [Verbose] > │ | UH0_0(v13, v14, v15, v16, v17, v18, v19, v20, v21, v22) -> (* Cons │
00:00:26 #4712 [Verbose] > │ *) │
00:00:26 #4713 [Verbose] > │ let v23 : UH2 = UH2_0(v3, v4, v5, v6, v7, v8, v9, v10, v11, v13, │
00:00:26 #4714 [Verbose] > │ v14, v15, v16, v17, v18, v19, v20, v21, v0) │
00:00:26 #4715 [Verbose] > │ method3(v23, v12, v22) │
00:00:26 #4716 [Verbose] > │ | _ -> │
00:00:26 #4717 [Verbose] > │ let v25 : UH2 = UH2_1 │
00:00:26 #4718 [Verbose] > │ method4(v0, v25) │
00:00:26 #4719 [Verbose] > │ | _ -> │
00:00:26 #4720 [Verbose] > │ let v28 : UH2 = UH2_1 │
00:00:26 #4721 [Verbose] > │ method4(v0, v28) │
00:00:26 #4722 [Verbose] > │ and method5 (v0 : float, v1 : UH2, v2 : UH0) : UH0 = │
00:00:26 #4723 [Verbose] > │ match v1 with │
00:00:26 #4724 [Verbose] > │ | UH2_0(v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, │
00:00:26 #4725 [Verbose] > │ v17, v18, v19, v20, v21) -> (* Cons *) │
00:00:26 #4726 [Verbose] > │ let v22 : UH0 = method5(v0, v21, v2) │
00:00:26 #4727 [Verbose] > │ let v23 : float = v0 * v18 │
00:00:26 #4728 [Verbose] > │ let v24 : float = v0 * v19 │
00:00:26 #4729 [Verbose] > │ let v25 : float = v0 * v20 │
00:00:26 #4730 [Verbose] > │ let v26 : float = v5 + v23 │
00:00:26 #4731 [Verbose] > │ let v27 : float = v6 + v24 │
00:00:26 #4732 [Verbose] > │ let v28 : float = v7 + v25 │
00:00:26 #4733 [Verbose] > │ UH0_0(v12, v13, v26, v27, v28, v17, v18, v19, v20, v22) │
00:00:26 #4734 [Verbose] > │ | UH2_1 -> (* Nil *) │
00:00:26 #4735 [Verbose] > │ v2 │
00:00:26 #4736 [Verbose] > │ and closure2 (v0 : float, v1 : (UH0 -> UH1)) (v2 : UH0) : UH0 = │
00:00:26 #4737 [Verbose] > │ let v3 : UH1 = v1 v2 │
00:00:26 #4738 [Verbose] > │ let v4 : UH0 = UH0_1 │
00:00:26 #4739 [Verbose] > │ let v5 : UH0 = method1(v0, v4, v3, v2) │
00:00:26 #4740 [Verbose] > │ let v6 : UH2 = UH2_1 │
00:00:26 #4741 [Verbose] > │ let v7 : UH2 = method3(v6, v2, v5) │
00:00:26 #4742 [Verbose] > │ let v8 : UH0 = UH0_1 │
00:00:26 #4743 [Verbose] > │ let v9 : UH0 = method5(v0, v7, v8) │
00:00:26 #4744 [Verbose] > │ v9 │
00:00:26 #4745 [Verbose] > │ and closure1 (v0 : float) (v1 : (UH0 -> UH1)) : (UH0 -> UH0) = │
00:00:26 #4746 [Verbose] > │ closure2(v0, v1) │
00:00:26 #4747 [Verbose] > │ and closure0 () (v0 : float) : ((UH0 -> UH1) -> (UH0 -> UH0)) = │
00:00:26 #4748 [Verbose] > │ closure1(v0) │
00:00:26 #4749 [Verbose] > │ and method6 (v0 : UH0, v1 : UH3, v2 : int32) : struct (UH3 * int32) = │
00:00:26 #4750 [Verbose] > │ match v0 with │
00:00:26 #4751 [Verbose] > │ | UH0_0(v3, v4, v5, v6, v7, v8, v9, v10, v11, v12) -> (* Cons *) │
00:00:26 #4752 [Verbose] > │ let v13 : int32 = v2 + 1 │
00:00:26 #4753 [Verbose] > │ let v14 : UH3 = UH3_0(v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v1) │
00:00:26 #4754 [Verbose] > │ method6(v12, v14, v13) │
00:00:26 #4755 [Verbose] > │ | UH0_1 -> (* Nil *) │
00:00:26 #4756 [Verbose] > │ struct (v1, v2) │
00:00:26 #4757 [Verbose] > │ and method7 (v0 : UH3, v1 : UH3) : UH3 = │
00:00:26 #4758 [Verbose] > │ match v0 with │
00:00:26 #4759 [Verbose] > │ | UH3_0(v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12) -> (* Cons *) │
00:00:26 #4760 [Verbose] > │ let v13 : UH3 = UH3_0(v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v1) │
00:00:26 #4761 [Verbose] > │ method7(v12, v13) │
00:00:26 #4762 [Verbose] > │ | UH3_1 -> (* Nil *) │
00:00:26 #4763 [Verbose] > │ v1 │
00:00:26 #4764 [Verbose] > │ and closure4 (v0 : float, v1 : float, v2 : float, v3 : float, v4 : float, v5 │
00:00:26 #4765 [Verbose] > │ : float, v6 : float, v7 : float, v8 : float) struct (v9 : float, v10 : │
00:00:26 #4766 [Verbose] > │ float, v11 : float, v12 : float, v13 : float, v14 : float, v15 : float, v16 │
00:00:26 #4767 [Verbose] > │ : float, v17 : float) : struct (float * float * float) = │
00:00:26 #4768 [Verbose] > │ let v18 : float = -1.0 * v2 │
00:00:26 #4769 [Verbose] > │ let v19 : float = -1.0 * v3 │
00:00:26 #4770 [Verbose] > │ let v20 : float = -1.0 * v4 │
00:00:26 #4771 [Verbose] > │ let v21 : float = v11 + v18 │
00:00:26 #4772 [Verbose] > │ let v22 : float = v12 + v19 │
00:00:26 #4773 [Verbose] > │ let v23 : float = v13 + v20 │
00:00:26 #4774 [Verbose] > │ let v24 : float = v21 * v21 │
00:00:26 #4775 [Verbose] > │ let v25 : float = v22 * v22 │
00:00:26 #4776 [Verbose] > │ let v26 : float = v24 + v25 │
00:00:26 #4777 [Verbose] > │ let v27 : float = v23 * v23 │
00:00:26 #4778 [Verbose] > │ let v28 : float = v26 + v27 │
00:00:26 #4779 [Verbose] > │ let v29 : float = sqrt v28 │
00:00:26 #4780 [Verbose] > │ let v30 : bool = v29 >= 0.06 │
00:00:26 #4781 [Verbose] > │ let v33 : float = │
00:00:26 #4782 [Verbose] > │ if v30 then │
00:00:26 #4783 [Verbose] > │ 0.0 │
00:00:26 #4784 [Verbose] > │ else │
00:00:26 #4785 [Verbose] > │ let v31 : float = v29 - 0.06 │
00:00:26 #4786 [Verbose] > │ let v32 : float = -30.0 * v31 │
00:00:26 #4787 [Verbose] > │ v32 │
00:00:26 #4788 [Verbose] > │ let v34 : float = v33 * v21 │
00:00:26 #4789 [Verbose] > │ let v35 : float = v33 * v22 │
00:00:26 #4790 [Verbose] > │ let v36 : float = v33 * v23 │
00:00:26 #4791 [Verbose] > │ let v37 : float = v34 / v29 │
00:00:26 #4792 [Verbose] > │ let v38 : float = v35 / v29 │
00:00:26 #4793 [Verbose] > │ let v39 : float = v36 / v29 │
00:00:26 #4794 [Verbose] > │ struct (v37, v38, v39) │
00:00:26 #4795 [Verbose] > │ and closure5 () struct (v0 : float, v1 : float, v2 : float, v3 : float, v4 : │
00:00:26 #4796 [Verbose] > │ float, v5 : float, v6 : float, v7 : float, v8 : float) : struct (float * │
00:00:26 #4797 [Verbose] > │ float * float) = │
00:00:26 #4798 [Verbose] > │ struct (0.0, 0.0, 0.0) │
00:00:26 #4799 [Verbose] > │ and method8 (v0 : UH0, v1 : UH3, v2 : UH1) : UH1 = │
00:00:26 #4800 [Verbose] > │ match v1 with │
00:00:26 #4801 [Verbose] > │ | UH3_0(v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13) -> (* Cons *) │
00:00:26 #4802 [Verbose] > │ let v14 : UH1 = method8(v0, v13, v2) │
00:00:26 #4803 [Verbose] > │ let v15 : bool = v3 = 0 │
00:00:26 #4804 [Verbose] > │ let v134 : (struct (float * float * float * float * float * float * │
00:00:26 #4805 [Verbose] > │ float * float * float) -> struct (float * float * float)) = │
00:00:26 #4806 [Verbose] > │ if v15 then │
00:00:26 #4807 [Verbose] > │ let v42 : US0 = │
00:00:26 #4808 [Verbose] > │ match v0 with │
00:00:26 #4809 [Verbose] > │ | UH0_0(v16, v17, v18, v19, v20, v21, v22, v23, v24, │
00:00:26 #4810 [Verbose] > │ v25) -> (* Cons *) │
00:00:26 #4811 [Verbose] > │ match v25 with │
00:00:26 #4812 [Verbose] > │ | UH0_0(v26, v27, v28, v29, v30, v31, v32, v33, v34, │
00:00:26 #4813 [Verbose] > │ v35) -> (* Cons *) │
00:00:26 #4814 [Verbose] > │ US0_1(v26, v27, v28, v29, v30, v31, v32, v33, │
00:00:26 #4815 [Verbose] > │ v34) │
00:00:26 #4816 [Verbose] > │ | UH0_1 -> (* Nil *) │
00:00:26 #4817 [Verbose] > │ US0_0 │
00:00:26 #4818 [Verbose] > │ | UH0_1 -> (* Nil *) │
00:00:26 #4819 [Verbose] > │ US0_0 │
00:00:26 #4820 [Verbose] > │ let struct (v70 : float, v71 : float, v72 : float, v73 : │
00:00:26 #4821 [Verbose] > │ float, v74 : float, v75 : float, v76 : float, v77 : float, v78 : float) = │
00:00:26 #4822 [Verbose] > │ match v42 with │
00:00:26 #4823 [Verbose] > │ | US0_0 -> (* None *) │
00:00:26 #4824 [Verbose] > │ failwith<struct (float * float * float * float * │
00:00:26 #4825 [Verbose] > │ float * float * float * float * float)> "Option does not have a value." │
00:00:26 #4826 [Verbose] > │ | US0_1(v43, v44, v45, v46, v47, v48, v49, v50, v51) -> │
00:00:26 #4827 [Verbose] > │ (* Some *) │
00:00:26 #4828 [Verbose] > │ struct (v43, v44, v45, v46, v47, v48, v49, v50, v51) │
00:00:26 #4829 [Verbose] > │ closure4(v70, v71, v72, v73, v74, v75, v76, v77, v78) │
00:00:26 #4830 [Verbose] > │ else │
00:00:26 #4831 [Verbose] > │ let v80 : bool = v3 = 1 │
00:00:26 #4832 [Verbose] > │ if v80 then │
00:00:26 #4833 [Verbose] > │ let v94 : US0 = │
00:00:26 #4834 [Verbose] > │ match v0 with │
00:00:26 #4835 [Verbose] > │ | UH0_0(v81, v82, v83, v84, v85, v86, v87, v88, v89, │
00:00:26 #4836 [Verbose] > │ v90) -> (* Cons *) │
00:00:26 #4837 [Verbose] > │ US0_1(v81, v82, v83, v84, v85, v86, v87, v88, │
00:00:26 #4838 [Verbose] > │ v89) │
00:00:26 #4839 [Verbose] > │ | UH0_1 -> (* Nil *) │
00:00:26 #4840 [Verbose] > │ US0_0 │
00:00:26 #4841 [Verbose] > │ let struct (v122 : float, v123 : float, v124 : float, │
00:00:26 #4842 [Verbose] > │ v125 : float, v126 : float, v127 : float, v128 : float, v129 : float, v130 : │
00:00:26 #4843 [Verbose] > │ float) = │
00:00:26 #4844 [Verbose] > │ match v94 with │
00:00:26 #4845 [Verbose] > │ | US0_0 -> (* None *) │
00:00:26 #4846 [Verbose] > │ failwith<struct (float * float * float * float * │
00:00:26 #4847 [Verbose] > │ float * float * float * float * float)> "Option does not have a value." │
00:00:26 #4848 [Verbose] > │ | US0_1(v95, v96, v97, v98, v99, v100, v101, v102, │
00:00:26 #4849 [Verbose] > │ v103) -> (* Some *) │
00:00:26 #4850 [Verbose] > │ struct (v95, v96, v97, v98, v99, v100, v101, │
00:00:26 #4851 [Verbose] > │ v102, v103) │
00:00:26 #4852 [Verbose] > │ closure4(v122, v123, v124, v125, v126, v127, v128, v129, │
00:00:26 #4853 [Verbose] > │ v130) │
00:00:26 #4854 [Verbose] > │ else │
00:00:26 #4855 [Verbose] > │ closure5() │
00:00:26 #4856 [Verbose] > │ let struct (v135 : float, v136 : float, v137 : float) = v134 struct │
00:00:26 #4857 [Verbose] > │ (v4, v5, v6, v7, v8, v9, v10, v11, v12) │
00:00:26 #4858 [Verbose] > │ let v138 : float = v135 / v5 │
00:00:26 #4859 [Verbose] > │ let v139 : float = v136 / v5 │
00:00:26 #4860 [Verbose] > │ let v140 : float = v137 / v5 │
00:00:26 #4861 [Verbose] > │ UH1_0(0.0, 0.0, v10, v11, v12, 1.0, v138, v139, v140, v14) │
00:00:26 #4862 [Verbose] > │ | UH3_1 -> (* Nil *) │
00:00:26 #4863 [Verbose] > │ v2 │
00:00:26 #4864 [Verbose] > │ and closure3 () (v0 : UH0) : UH1 = │
00:00:26 #4865 [Verbose] > │ let v1 : UH3 = UH3_1 │
00:00:26 #4866 [Verbose] > │ let v2 : int32 = 0 │
00:00:26 #4867 [Verbose] > │ let struct (v3 : UH3, v4 : int32) = method6(v0, v1, v2) │
00:00:26 #4868 [Verbose] > │ let v5 : UH3 = UH3_1 │
00:00:26 #4869 [Verbose] > │ let v6 : UH3 = method7(v3, v5) │
00:00:26 #4870 [Verbose] > │ let v7 : UH1 = UH1_1 │
00:00:26 #4871 [Verbose] > │ let v8 : UH1 = method8(v0, v6, v7) │
00:00:26 #4872 [Verbose] > │ v8 │
00:00:26 #4873 [Verbose] > │ and method10 (v0 : (UH0 -> UH0), v1 : UH0, v2 : int32) : UH0 = │
00:00:26 #4874 [Verbose] > │ let v3 : bool = v2 <= 0 │
00:00:26 #4875 [Verbose] > │ if v3 then │
00:00:26 #4876 [Verbose] > │ v1 │
00:00:26 #4877 [Verbose] > │ else │
00:00:26 #4878 [Verbose] > │ let v4 : UH0 = v0 v1 │
00:00:26 #4879 [Verbose] > │ let v5 : int32 = v2 - 1 │
00:00:26 #4880 [Verbose] > │ method10(v0, v4, v5) │
00:00:26 #4881 [Verbose] > │ and method11 (v0 : UH4, v1 : UH4) : UH4 = │
00:00:26 #4882 [Verbose] > │ match v0 with │
00:00:26 #4883 [Verbose] > │ | UH4_0(v2, v3) -> (* Cons *) │
00:00:26 #4884 [Verbose] > │ let v4 : UH4 = UH4_0(v2, v1) │
00:00:26 #4885 [Verbose] > │ method11(v3, v4) │
00:00:26 #4886 [Verbose] > │ | UH4_1 -> (* Nil *) │
00:00:26 #4887 [Verbose] > │ v1 │
00:00:26 #4888 [Verbose] > │ and method9 (v0 : (UH0 -> UH0), v1 : UH4, v2 : int32) : UH4 = │
00:00:26 #4889 [Verbose] > │ let v3 : float = 0.0 │
00:00:26 #4890 [Verbose] > │ let v4 : float = 0.16 │
00:00:26 #4891 [Verbose] > │ let v5 : float = 0.0 │
00:00:26 #4892 [Verbose] > │ let v6 : float = 0.0 │
00:00:26 #4893 [Verbose] > │ let v7 : float = 0.0 │
00:00:26 #4894 [Verbose] > │ let v8 : float = 0.0 │
00:00:26 #4895 [Verbose] > │ let v9 : float = 0.2 │
00:00:26 #4896 [Verbose] > │ let v10 : float = 0.0 │
00:00:26 #4897 [Verbose] > │ let v11 : float = 0.0 │
00:00:26 #4898 [Verbose] > │ let v12 : float = 1.0 │
00:00:26 #4899 [Verbose] > │ let v13 : float = 0.02 │
00:00:26 #4900 [Verbose] > │ let v14 : float = 0.0 │
00:00:26 #4901 [Verbose] > │ let v15 : float = 0.0 │
00:00:26 #4902 [Verbose] > │ let v16 : float = 0.0 │
00:00:26 #4903 [Verbose] > │ let v17 : float = 0.0 │
00:00:26 #4904 [Verbose] > │ let v18 : UH0 = UH0_1 │
00:00:26 #4905 [Verbose] > │ let v19 : UH0 = UH0_0(v3, v4, v12, v13, v14, v8, v15, v16, v17, v18) │
00:00:26 #4906 [Verbose] > │ let v20 : UH0 = UH0_0(v3, v4, v5, v6, v7, v8, v9, v10, v11, v19) │
00:00:26 #4907 [Verbose] > │ let v21 : UH0 = method10(v0, v20, v2) │
00:00:26 #4908 [Verbose] > │ let v35 : US0 = │
00:00:26 #4909 [Verbose] > │ match v21 with │
00:00:26 #4910 [Verbose] > │ | UH0_0(v22, v23, v24, v25, v26, v27, v28, v29, v30, v31) -> (* Cons │
00:00:26 #4911 [Verbose] > │ *) │
00:00:26 #4912 [Verbose] > │ US0_1(v22, v23, v24, v25, v26, v27, v28, v29, v30) │
00:00:26 #4913 [Verbose] > │ | UH0_1 -> (* Nil *) │
00:00:26 #4914 [Verbose] > │ US0_0 │
00:00:26 #4915 [Verbose] > │ let struct (v63 : float, v64 : float, v65 : float, v66 : float, v67 : │
00:00:26 #4916 [Verbose] > │ float, v68 : float, v69 : float, v70 : float, v71 : float) = │
00:00:26 #4917 [Verbose] > │ match v35 with │
00:00:26 #4918 [Verbose] > │ | US0_0 -> (* None *) │
00:00:26 #4919 [Verbose] > │ failwith<struct (float * float * float * float * float * float * │
00:00:26 #4920 [Verbose] > │ float * float * float)> "Option does not have a value." │
00:00:26 #4921 [Verbose] > │ | US0_1(v36, v37, v38, v39, v40, v41, v42, v43, v44) -> (* Some *) │
00:00:26 #4922 [Verbose] > │ struct (v36, v37, v38, v39, v40, v41, v42, v43, v44) │
00:00:26 #4923 [Verbose] > │ let v72 : bool = v68 <= 10.0 │
00:00:26 #4924 [Verbose] > │ if v72 then │
00:00:26 #4925 [Verbose] > │ let v73 : UH4 = UH4_0(v21, v1) │
00:00:26 #4926 [Verbose] > │ let v74 : int32 = v2 + 1 │
00:00:26 #4927 [Verbose] > │ method9(v0, v73, v74) │
00:00:26 #4928 [Verbose] > │ else │
00:00:26 #4929 [Verbose] > │ let v76 : UH4 = UH4_1 │
00:00:26 #4930 [Verbose] > │ method11(v1, v76) │
00:00:26 #4931 [Verbose] > │ and method13 (v0 : UH0, v1 : UH6) : UH6 = │
00:00:26 #4932 [Verbose] > │ match v0 with │
00:00:26 #4933 [Verbose] > │ | UH0_0(v2, v3, v4, v5, v6, v7, v8, v9, v10, v11) -> (* Cons *) │
00:00:26 #4934 [Verbose] > │ let v12 : UH6 = method13(v11, v1) │
00:00:26 #4935 [Verbose] > │ let v13 : float = v8 * v8 │
00:00:26 #4936 [Verbose] > │ let v14 : float = v9 * v9 │
00:00:26 #4937 [Verbose] > │ let v15 : float = v13 + v14 │
00:00:26 #4938 [Verbose] > │ let v16 : float = v10 * v10 │
00:00:26 #4939 [Verbose] > │ let v17 : float = v15 + v16 │
00:00:26 #4940 [Verbose] > │ let v18 : float = sqrt v17 │
00:00:26 #4941 [Verbose] > │ let v19 : float = 0.5 * v3 │
00:00:26 #4942 [Verbose] > │ let v20 : float = v18 ** 2.0 │
00:00:26 #4943 [Verbose] > │ let v21 : float = v19 * v20 │
00:00:26 #4944 [Verbose] > │ UH6_0(v21, v12) │
00:00:26 #4945 [Verbose] > │ | UH0_1 -> (* Nil *) │
00:00:26 #4946 [Verbose] > │ v1 │
00:00:26 #4947 [Verbose] > │ and method14 (v0 : UH6, v1 : float) : float = │
00:00:26 #4948 [Verbose] > │ match v0 with │
00:00:26 #4949 [Verbose] > │ | UH6_0(v2, v3) -> (* Cons *) │
00:00:26 #4950 [Verbose] > │ let v4 : float = v1 + v2 │
00:00:26 #4951 [Verbose] > │ method14(v3, v4) │
00:00:26 #4952 [Verbose] > │ | UH6_1 -> (* Nil *) │
00:00:26 #4953 [Verbose] > │ v1 │
00:00:26 #4954 [Verbose] > │ and method12 (v0 : UH4, v1 : UH5) : UH5 = │
00:00:26 #4955 [Verbose] > │ match v0 with │
00:00:26 #4956 [Verbose] > │ | UH4_0(v2, v3) -> (* Cons *) │
00:00:26 #4957 [Verbose] > │ let v4 : UH5 = method12(v3, v1) │
00:00:26 #4958 [Verbose] > │ let v18 : US0 = │
00:00:26 #4959 [Verbose] > │ match v2 with │
00:00:26 #4960 [Verbose] > │ | UH0_0(v5, v6, v7, v8, v9, v10, v11, v12, v13, v14) -> (* Cons │
00:00:26 #4961 [Verbose] > │ *) │
00:00:26 #4962 [Verbose] > │ US0_1(v5, v6, v7, v8, v9, v10, v11, v12, v13) │
00:00:26 #4963 [Verbose] > │ | UH0_1 -> (* Nil *) │
00:00:26 #4964 [Verbose] > │ US0_0 │
00:00:26 #4965 [Verbose] > │ let struct (v46 : float, v47 : float, v48 : float, v49 : float, v50 │
00:00:26 #4966 [Verbose] > │ : float, v51 : float, v52 : float, v53 : float, v54 : float) = │
00:00:26 #4967 [Verbose] > │ match v18 with │
00:00:26 #4968 [Verbose] > │ | US0_0 -> (* None *) │
00:00:26 #4969 [Verbose] > │ failwith<struct (float * float * float * float * float * │
00:00:26 #4970 [Verbose] > │ float * float * float * float)> "Option does not have a value." │
00:00:26 #4971 [Verbose] > │ | US0_1(v19, v20, v21, v22, v23, v24, v25, v26, v27) -> (* Some │
00:00:26 #4972 [Verbose] > │ *) │
00:00:26 #4973 [Verbose] > │ struct (v19, v20, v21, v22, v23, v24, v25, v26, v27) │
00:00:26 #4974 [Verbose] > │ let v55 : UH6 = UH6_1 │
00:00:26 #4975 [Verbose] > │ let v56 : UH6 = method13(v2, v55) │
00:00:26 #4976 [Verbose] > │ let v57 : float = 0.0 │
00:00:26 #4977 [Verbose] > │ let v58 : float = method14(v56, v57) │
00:00:26 #4978 [Verbose] > │ UH5_0(v51, v58, v4) │
00:00:26 #4979 [Verbose] > │ | UH4_1 -> (* Nil *) │
00:00:26 #4980 [Verbose] > │ v1 │
00:00:26 #4981 [Verbose] > │ and method15 (v0 : UH5, v1 : UH6, v2 : UH6) : struct (UH6 * UH6) = │
00:00:26 #4982 [Verbose] > │ match v0 with │
00:00:26 #4983 [Verbose] > │ | UH5_0(v3, v4, v5) -> (* Cons *) │
00:00:26 #4984 [Verbose] > │ let v6 : UH6 = UH6_0(v3, v1) │
00:00:26 #4985 [Verbose] > │ let v7 : UH6 = UH6_0(v4, v2) │
00:00:26 #4986 [Verbose] > │ method15(v5, v6, v7) │
00:00:26 #4987 [Verbose] > │ | UH5_1 -> (* Nil *) │
00:00:26 #4988 [Verbose] > │ struct (v1, v2) │
00:00:26 #4989 [Verbose] > │ and method16 (v0 : UH6, v1 : UH6) : UH6 = │
00:00:26 #4990 [Verbose] > │ match v0 with │
00:00:26 #4991 [Verbose] > │ | UH6_0(v2, v3) -> (* Cons *) │
00:00:26 #4992 [Verbose] > │ let v4 : UH6 = UH6_0(v2, v1) │
00:00:26 #4993 [Verbose] > │ method16(v3, v4) │
00:00:26 #4994 [Verbose] > │ | UH6_1 -> (* Nil *) │
00:00:26 #4995 [Verbose] > │ v1 │
00:00:26 #4996 [Verbose] > │ and method18 (v0 : UH1, v1 : UH1) : UH1 = │
00:00:26 #4997 [Verbose] > │ match v0 with │
00:00:26 #4998 [Verbose] > │ | UH1_0(v2, v3, v4, v5, v6, v7, v8, v9, v10, v11) -> (* Cons *) │
00:00:26 #4999 [Verbose] > │ let v12 : UH1 = UH1_0(v2, v3, v4, v5, v6, v7, v8, v9, v10, v1) │
00:00:26 #5000 [Verbose] > │ method18(v11, v12) │
00:00:26 #5001 [Verbose] > │ | UH1_1 -> (* Nil *) │
00:00:26 #5002 [Verbose] > │ v1 │
00:00:26 #5003 [Verbose] > │ and method17 (v0 : UH1, v1 : UH1, v2 : UH1) : UH1 = │
00:00:26 #5004 [Verbose] > │ match v1 with │
00:00:26 #5005 [Verbose] > │ | UH1_0(v3, v4, v5, v6, v7, v8, v9, v10, v11, v12) -> (* Cons *) │
00:00:26 #5006 [Verbose] > │ match v2 with │
00:00:26 #5007 [Verbose] > │ | UH1_0(v13, v14, v15, v16, v17, v18, v19, v20, v21, v22) -> (* Cons │
00:00:26 #5008 [Verbose] > │ *) │
00:00:26 #5009 [Verbose] > │ let v23 : float = v3 + v13 │
00:00:26 #5010 [Verbose] > │ let v24 : float = v4 + v14 │
00:00:26 #5011 [Verbose] > │ let v25 : float = v8 + v18 │
00:00:26 #5012 [Verbose] > │ let v26 : float = v5 + v15 │
00:00:26 #5013 [Verbose] > │ let v27 : float = v6 + v16 │
00:00:26 #5014 [Verbose] > │ let v28 : float = v7 + v17 │
00:00:26 #5015 [Verbose] > │ let v29 : float = v9 + v19 │
00:00:26 #5016 [Verbose] > │ let v30 : float = v10 + v20 │
00:00:26 #5017 [Verbose] > │ let v31 : float = v11 + v21 │
00:00:26 #5018 [Verbose] > │ let v32 : UH1 = UH1_0(v23, v24, v26, v27, v28, v25, v29, v30, │
00:00:26 #5019 [Verbose] > │ v31, v0) │
00:00:26 #5020 [Verbose] > │ method17(v32, v12, v22) │
00:00:26 #5021 [Verbose] > │ | _ -> │
00:00:26 #5022 [Verbose] > │ let v34 : UH1 = UH1_1 │
00:00:26 #5023 [Verbose] > │ method18(v0, v34) │
00:00:26 #5024 [Verbose] > │ | _ -> │
00:00:26 #5025 [Verbose] > │ let v37 : UH1 = UH1_1 │
00:00:26 #5026 [Verbose] > │ method18(v0, v37) │
00:00:26 #5027 [Verbose] > │ and closure8 (v0 : float, v1 : (UH0 -> UH1)) (v2 : UH0) : UH0 = │
00:00:26 #5028 [Verbose] > │ let v3 : UH1 = v1 v2 │
00:00:26 #5029 [Verbose] > │ let v4 : float = v0 / 2.0 │
00:00:26 #5030 [Verbose] > │ let v5 : UH0 = UH0_1 │
00:00:26 #5031 [Verbose] > │ let v6 : UH0 = method1(v4, v5, v3, v2) │
00:00:26 #5032 [Verbose] > │ let v7 : UH1 = v1 v6 │
00:00:26 #5033 [Verbose] > │ let v8 : UH0 = UH0_1 │
00:00:26 #5034 [Verbose] > │ let v9 : UH0 = method1(v4, v8, v7, v2) │
00:00:26 #5035 [Verbose] > │ let v10 : UH1 = v1 v9 │
00:00:26 #5036 [Verbose] > │ let v11 : UH0 = UH0_1 │
00:00:26 #5037 [Verbose] > │ let v12 : UH0 = method1(v0, v11, v10, v2) │
00:00:26 #5038 [Verbose] > │ let v13 : UH1 = v1 v12 │
00:00:26 #5039 [Verbose] > │ let v14 : float = v0 / 6.0 │
00:00:26 #5040 [Verbose] > │ let v15 : UH1 = UH1_1 │
00:00:26 #5041 [Verbose] > │ let v16 : UH1 = method17(v15, v3, v7) │
00:00:26 #5042 [Verbose] > │ let v17 : UH1 = UH1_1 │
00:00:26 #5043 [Verbose] > │ let v18 : UH1 = method17(v17, v16, v7) │
00:00:26 #5044 [Verbose] > │ let v19 : UH1 = UH1_1 │
00:00:26 #5045 [Verbose] > │ let v20 : UH1 = method17(v19, v18, v10) │
00:00:26 #5046 [Verbose] > │ let v21 : UH1 = UH1_1 │
00:00:26 #5047 [Verbose] > │ let v22 : UH1 = method17(v21, v20, v10) │
00:00:26 #5048 [Verbose] > │ let v23 : UH1 = UH1_1 │
00:00:26 #5049 [Verbose] > │ let v24 : UH1 = method17(v23, v22, v13) │
00:00:26 #5050 [Verbose] > │ let v25 : UH0 = UH0_1 │
00:00:26 #5051 [Verbose] > │ let v26 : UH0 = method1(v14, v25, v24, v2) │
00:00:26 #5052 [Verbose] > │ v26 │
00:00:26 #5053 [Verbose] > │ and closure7 (v0 : float) (v1 : (UH0 -> UH1)) : (UH0 -> UH0) = │
00:00:26 #5054 [Verbose] > │ closure8(v0, v1) │
00:00:26 #5055 [Verbose] > │ and closure6 () (v0 : float) : ((UH0 -> UH1) -> (UH0 -> UH0)) = │
00:00:26 #5056 [Verbose] > │ closure7(v0) │
00:00:26 #5057 [Verbose] > │ and method19 (v0 : UH4, v1 : UH5) : UH5 = │
00:00:26 #5058 [Verbose] > │ match v0 with │
00:00:26 #5059 [Verbose] > │ | UH4_0(v2, v3) -> (* Cons *) │
00:00:26 #5060 [Verbose] > │ let v4 : UH5 = method19(v3, v1) │
00:00:26 #5061 [Verbose] > │ let v18 : US0 = │
00:00:26 #5062 [Verbose] > │ match v2 with │
00:00:26 #5063 [Verbose] > │ | UH0_0(v5, v6, v7, v8, v9, v10, v11, v12, v13, v14) -> (* Cons │
00:00:26 #5064 [Verbose] > │ *) │
00:00:26 #5065 [Verbose] > │ US0_1(v5, v6, v7, v8, v9, v10, v11, v12, v13) │
00:00:26 #5066 [Verbose] > │ | UH0_1 -> (* Nil *) │
00:00:26 #5067 [Verbose] > │ US0_0 │
00:00:26 #5068 [Verbose] > │ let struct (v46 : float, v47 : float, v48 : float, v49 : float, v50 │
00:00:26 #5069 [Verbose] > │ : float, v51 : float, v52 : float, v53 : float, v54 : float) = │
00:00:26 #5070 [Verbose] > │ match v18 with │
00:00:26 #5071 [Verbose] > │ | US0_0 -> (* None *) │
00:00:26 #5072 [Verbose] > │ failwith<struct (float * float * float * float * float * │
00:00:26 #5073 [Verbose] > │ float * float * float * float)> "Option does not have a value." │
00:00:26 #5074 [Verbose] > │ | US0_1(v19, v20, v21, v22, v23, v24, v25, v26, v27) -> (* Some │
00:00:26 #5075 [Verbose] > │ *) │
00:00:26 #5076 [Verbose] > │ struct (v19, v20, v21, v22, v23, v24, v25, v26, v27) │
00:00:26 #5077 [Verbose] > │ let v55 : UH6 = UH6_1 │
00:00:26 #5078 [Verbose] > │ let v56 : UH6 = method13(v2, v55) │
00:00:26 #5079 [Verbose] > │ let v57 : float = 0.0 │
00:00:26 #5080 [Verbose] > │ let v58 : float = method14(v56, v57) │
00:00:26 #5081 [Verbose] > │ UH5_0(v51, v58, v4) │
00:00:26 #5082 [Verbose] > │ | UH4_1 -> (* Nil *) │
00:00:26 #5083 [Verbose] > │ v1 │
00:00:26 #5084 [Verbose] > │ and method21 (v0 : UH6, v1 : int32) : int32 = │
00:00:26 #5085 [Verbose] > │ match v0 with │
00:00:26 #5086 [Verbose] > │ | UH6_0(v2, v3) -> (* Cons *) │
00:00:26 #5087 [Verbose] > │ let v4 : int32 = v1 + 1 │
00:00:26 #5088 [Verbose] > │ method21(v3, v4) │
00:00:26 #5089 [Verbose] > │ | UH6_1 -> (* Nil *) │
00:00:26 #5090 [Verbose] > │ v1 │
00:00:26 #5091 [Verbose] > │ and method22 (v0 : (float []), v1 : UH6, v2 : int32) : int32 = │
00:00:26 #5092 [Verbose] > │ match v1 with │
00:00:26 #5093 [Verbose] > │ | UH6_0(v3, v4) -> (* Cons *) │
00:00:26 #5094 [Verbose] > │ v0.[int v2] <- v3 │
00:00:26 #5095 [Verbose] > │ let v5 : int32 = v2 + 1 │
00:00:26 #5096 [Verbose] > │ method22(v0, v4, v5) │
00:00:26 #5097 [Verbose] > │ | UH6_1 -> (* Nil *) │
00:00:26 #5098 [Verbose] > │ v2 │
00:00:26 #5099 [Verbose] > │ and method20 (v0 : UH6) : (float []) = │
00:00:26 #5100 [Verbose] > │ let v1 : int32 = 0 │
00:00:26 #5101 [Verbose] > │ let v2 : int32 = method21(v0, v1) │
00:00:26 #5102 [Verbose] > │ let v3 : (float []) = Array.zeroCreate<float> (v2) │
00:00:26 #5103 [Verbose] > │ let v4 : int32 = 0 │
00:00:26 #5104 [Verbose] > │ let v5 : int32 = method22(v3, v0, v4) │
00:00:26 #5105 [Verbose] > │ v3 │
00:00:26 #5106 [Verbose] > │ and method23 (v0 : (struct (string * (float []) * (float [])) [])) : (struct │
00:00:26 #5107 [Verbose] > │ (string * (float []) * (float [])) []) = │
00:00:26 #5108 [Verbose] > │ v0 │
00:00:26 #5109 [Verbose] > │ and method0 () : struct (string * string * string * (struct (string * (float │
00:00:26 #5110 [Verbose] > │ []) * (float [])) [])) = │
00:00:26 #5111 [Verbose] > │ let v0 : (float -> ((UH0 -> UH1) -> (UH0 -> UH0))) = closure0() │
00:00:26 #5112 [Verbose] > │ let v1 : ((UH0 -> UH1) -> (UH0 -> UH0)) = v0 0.03 │
00:00:26 #5113 [Verbose] > │ let v2 : (UH0 -> UH1) = closure3() │
00:00:26 #5114 [Verbose] > │ let v3 : (UH0 -> UH0) = v1 v2 │
00:00:26 #5115 [Verbose] > │ let v4 : UH4 = UH4_1 │
00:00:26 #5116 [Verbose] > │ let v5 : int32 = 0 │
00:00:26 #5117 [Verbose] > │ let v6 : UH4 = method9(v3, v4, v5) │
00:00:26 #5118 [Verbose] > │ let v7 : UH5 = UH5_1 │
00:00:26 #5119 [Verbose] > │ let v8 : UH5 = method12(v6, v7) │
00:00:26 #5120 [Verbose] > │ let v9 : UH6 = UH6_1 │
00:00:26 #5121 [Verbose] > │ let v10 : UH6 = UH6_1 │
00:00:26 #5122 [Verbose] > │ let struct (v11 : UH6, v12 : UH6) = method15(v8, v9, v10) │
00:00:26 #5123 [Verbose] > │ let v13 : UH6 = UH6_1 │
00:00:26 #5124 [Verbose] > │ let v14 : UH6 = method16(v11, v13) │
00:00:26 #5125 [Verbose] > │ let v15 : UH6 = UH6_1 │
00:00:26 #5126 [Verbose] > │ let v16 : UH6 = method16(v12, v15) │
00:00:26 #5127 [Verbose] > │ let v17 : (float -> ((UH0 -> UH1) -> (UH0 -> UH0))) = closure6() │
00:00:26 #5128 [Verbose] > │ let v18 : ((UH0 -> UH1) -> (UH0 -> UH0)) = v17 0.03 │
00:00:26 #5129 [Verbose] > │ let v19 : (UH0 -> UH0) = v18 v2 │
00:00:26 #5130 [Verbose] > │ let v20 : UH4 = UH4_1 │
00:00:26 #5131 [Verbose] > │ let v21 : int32 = 0 │
00:00:26 #5132 [Verbose] > │ let v22 : UH4 = method9(v19, v20, v21) │
00:00:26 #5133 [Verbose] > │ let v23 : UH5 = UH5_1 │
00:00:26 #5134 [Verbose] > │ let v24 : UH5 = method19(v22, v23) │
00:00:26 #5135 [Verbose] > │ let v25 : UH6 = UH6_1 │
00:00:26 #5136 [Verbose] > │ let v26 : UH6 = UH6_1 │
00:00:26 #5137 [Verbose] > │ let struct (v27 : UH6, v28 : UH6) = method15(v24, v25, v26) │
00:00:26 #5138 [Verbose] > │ let v29 : UH6 = UH6_1 │
00:00:26 #5139 [Verbose] > │ let v30 : UH6 = method16(v27, v29) │
00:00:26 #5140 [Verbose] > │ let v31 : UH6 = UH6_1 │
00:00:26 #5141 [Verbose] > │ let v32 : UH6 = method16(v28, v31) │
00:00:26 #5142 [Verbose] > │ let v33 : (float []) = method20(v14) │
00:00:26 #5143 [Verbose] > │ let v34 : (float []) = method20(v16) │
00:00:26 #5144 [Verbose] > │ let v35 : (float []) = method20(v30) │
00:00:26 #5145 [Verbose] > │ let v36 : (float []) = method20(v32) │
00:00:26 #5146 [Verbose] > │ let v37 : string = "euler-cromer" │
00:00:26 #5147 [Verbose] > │ let v38 : string = "runge-kutta 4" │
00:00:26 #5148 [Verbose] > │ let v39 : (struct (string * (float []) * (float [])) []) = [|struct │
00:00:26 #5149 [Verbose] > │ (v37, v33, v34); struct (v38, v35, v36)|] │
00:00:26 #5150 [Verbose] > │ let v40 : (struct (string * (float []) * (float [])) []) = method23(v39) │
00:00:26 #5151 [Verbose] > │ let v41 : string = "system kinetic energy versus time" │
00:00:26 #5152 [Verbose] > │ let v42 : string = "time (s)" │
00:00:26 #5153 [Verbose] > │ let v43 : string = "system kinetic energy (j)" │
00:00:26 #5154 [Verbose] > │ struct (v41, v42, v43, v40) │
00:00:26 #5155 [Verbose] > │ method0() │
00:00:26 #5156 [Verbose] > │ │
00:00:26 #5157 [Verbose] > │ │
00:00:26 #5158 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:26 #5159 [Verbose] >
00:00:26 #5160 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:26 #5161 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:26 #5162 [Verbose] > │ ### wave 1 │
00:00:26 #5163 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:26 #5164 [Verbose] >
00:00:26 #5165 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:26 #5166 [Verbose] > // // test
00:00:26 #5167 [Verbose] >
00:00:26 #5168 [Verbose] > inl linear_spring k re (particle_state st1) (particle_state st2) =
00:00:26 #5169 [Verbose] > inl r1 = st1.pos_vec
00:00:26 #5170 [Verbose] > inl r2 = st2.pos_vec
00:00:26 #5171 [Verbose] > inl r21 = r2 ^-^ r1
00:00:26 #5172 [Verbose] > inl r21mag = magnitude r21
00:00:26 #5173 [Verbose] > -k * (r21mag - re) *^ r21 ^/ r21mag
00:00:26 #5174 [Verbose] >
00:00:26 #5175 [Verbose] > inl fixed_linear_spring k re r1 =
00:00:26 #5176 [Verbose] > inl (particle_state default_particle_state') = default_particle_state ()
00:00:26 #5177 [Verbose] > linear_spring k re (particle_state { default_particle_state' with pos_vec =
00:00:26 #5178 [Verbose] > r1 })
00:00:26 #5179 [Verbose] >
00:00:26 #5180 [Verbose] > inl forces_string () =
00:00:26 #5181 [Verbose] > [[
00:00:26 #5182 [Verbose] > ExternalForce (0, fixed_linear_spring 5384 0 (zero_vec ()))
00:00:26 #5183 [Verbose] > ExternalForce (63, fixed_linear_spring 5384 0 (0.65 *^ i_hat ()))
00:00:26 #5184 [Verbose] > ]] /@ (
00:00:26 #5185 [Verbose] > listm'.init_series 0 59 1
00:00:26 #5186 [Verbose] > |> listm.map (fun n => InternalForce (n, n + 1, linear_spring 5384 0))
00:00:26 #5187 [Verbose] > )
00:00:26 #5188 [Verbose] >
00:00:26 #5189 [Verbose] > inl string_update dt =
00:00:26 #5190 [Verbose] > update_mps (runge_kutta_4 dt) (forces_string ())
00:00:26 #5191 [Verbose] >
00:00:26 #5192 [Verbose] > inl string_initial_overtone n =
00:00:26 #5193 [Verbose] > inl ball_mass = 0.0008293 * 0.65 / 64
00:00:26 #5194 [Verbose] > inl (particle_state default_particle_state') = default_particle_state ()
00:00:26 #5195 [Verbose] > listm'.init_series 0.01 0.64 0.01
00:00:26 #5196 [Verbose] > |> listm.map (fun x =>
00:00:26 #5197 [Verbose] > inl y = 0.005 * sin (conv n * pi * x / 0.65)
00:00:26 #5198 [Verbose] > particle_state {
00:00:26 #5199 [Verbose] > default_particle_state' with
00:00:26 #5200 [Verbose] > mass = ball_mass
00:00:26 #5201 [Verbose] > pos_vec = x *^ i_hat () ^+^ y *^ j_hat ()
00:00:26 #5202 [Verbose] > velocity = zero_vec ()
00:00:26 #5203 [Verbose] > }
00:00:26 #5204 [Verbose] > )
00:00:26 #5205 [Verbose] > |> multi_particle_state
00:00:26 #5206 [Verbose] >
00:00:26 #5207 [Verbose] > inl string_initial_pluck () =
00:00:26 #5208 [Verbose] > inl ball_mass = 0.0008293 * 0.65 / 64
00:00:26 #5209 [Verbose] > inl (particle_state default_particle_state') = default_particle_state ()
00:00:26 #5210 [Verbose] > listm'.init_series 0.01 0.64 0.01
00:00:26 #5211 [Verbose] > |> listm.map (fun x =>
00:00:26 #5212 [Verbose] > inl y =
00:00:26 #5213 [Verbose] > inl n = if x <= 0.51 then 0 else 0.65
00:00:26 #5214 [Verbose] > 0.005 / (0.51 - n) * (x - n)
00:00:26 #5215 [Verbose] > particle_state {
00:00:26 #5216 [Verbose] > default_particle_state' with
00:00:26 #5217 [Verbose] > mass = ball_mass
00:00:26 #5218 [Verbose] > pos_vec = x *^ i_hat () ^+^ y *^ j_hat ()
00:00:26 #5219 [Verbose] > velocity = zero_vec ()
00:00:26 #5220 [Verbose] > }
00:00:26 #5221 [Verbose] > )
00:00:26 #5222 [Verbose] > |> multi_particle_state
00:00:26 #5223 [Verbose] >
00:00:26 #5224 [Verbose] > let main () =
00:00:26 #5225 [Verbose] > inl ~frames = listm'.init_series 0 9 1f64
00:00:26 #5226 [Verbose] > inl initial_state = string_initial_overtone 3i32
00:00:26 #5227 [Verbose] > inl frames =
00:00:26 #5228 [Verbose] > frames
00:00:26 #5229 [Verbose] > |> listm.map (fun n =>
00:00:26 #5230 [Verbose] > inl (multi_particle_state sts) =
00:00:26 #5231 [Verbose] > seq.iterate' (string_update 0.000025) initial_state |> fun f =>
00:00:26 #5232 [Verbose] > f 0f64
00:00:26 #5233 [Verbose] > inl rs =
00:00:26 #5234 [Verbose] > [[ zero_vec () ]]
00:00:26 #5235 [Verbose] > /@ (sts |> listm.map (fun (particle_state st) => st.pos_vec))
00:00:26 #5236 [Verbose] > /@ [[ 0.65 *^ i_hat () ]]
00:00:26 #5237 [Verbose] > inl x, y =
00:00:26 #5238 [Verbose] > rs
00:00:26 #5239 [Verbose] > |> listm.map (fun r => r.x, r.y)
00:00:26 #5240 [Verbose] > |> listm'.unzip
00:00:26 #5241 [Verbose] > inl x : a i32 _ = x |> listm.toArray
00:00:26 #5242 [Verbose] > inl y : a i32 _ = y |> listm.toArray
00:00:26 #5243 [Verbose] > x, y
00:00:26 #5244 [Verbose] > )
00:00:26 #5245 [Verbose] > |> listm.toArray : a i32 _
00:00:26 #5246 [Verbose] >
00:00:26 #5247 [Verbose] > inl n = 0i32
00:00:26 #5248 [Verbose] >
00:00:26 #5249 [Verbose] > inl x, y = index frames n
00:00:26 #5250 [Verbose] >
00:00:26 #5251 [Verbose] > "wave",
00:00:26 #5252 [Verbose] > "position (m)",
00:00:26 #5253 [Verbose] > "displacement (m)",
00:00:26 #5254 [Verbose] > ;[[
00:00:26 #5255 [Verbose] > ($"$\"{!n}\"" : string), x, y
00:00:26 #5256 [Verbose] > ]]
00:00:26 #5257 [Verbose] > Building /tmp/!dotnet-repl/20240320-1229-5317-1723-16468d8e15b5/main.spi
00:00:26 #5258 [Verbose] >
00:00:26 #5259 [Verbose] > ╭─[ 315.98ms - return value ]──────────────────────────────────────────────────╮
00:00:26 #5260 [Verbose] > │ <svg width="640" height="480" viewBox="0 0 640 480" │
00:00:26 #5261 [Verbose] > │ xmlns="http://www.w3.org/2000/svg"> │
00:00:26 #5262 [Verbose] > │ <rect x="0" y="0" width="640" height="480" opacity="1" fill="#141414" │
00:00:26 #5263 [Verbose] > │ stroke="none"/> │
00:00:26 #5264 [Verbose] > │ <text x="320" y="10" dy="0.76em" text-anchor="middle" │
00:00:26 #5265 [Verbose] > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1" │
00:00:26 #5266 [Verbose] > │ fill="#FFFFFF"> │
00:00:26 #5267 [Verbose] > │ wave │
00:00:26 #5268 [Verbose] > │ </text> │
00:00:26 #5269 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="62" y1="424" x2="62" │
00:00:26 #5270 [Verbose] > │ y2="75"/> │
00:00:26 #5271 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" y1="424" x2="69" │
00:00:26 #5272 [Verbose] > │ y2="75"/> │
00:00:26 #5273 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="77" y1="424" x2="77" │
00:00:26 #5274 [Verbose] > │ y2="75"/> │
00:00:26 #5275 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="85" y1="424" x2="85" │
00:00:26 #5276 [Verbose] > │ y2="75"/> │
00:00:26 #5277 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="93" y1="424" x2="93" │
00:00:26 #5278 [Verbose] > │ y2... │
00:00:26 #5279 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:26 #5280 [Verbose] >
00:00:26 #5281 [Verbose] > ╭─[ 319.20ms - stdout ]────────────────────────────────────────────────────────╮
00:00:26 #5282 [Verbose] > │ type UH0 = │
00:00:26 #5283 [Verbose] > │ | UH0_0 of float * UH0 │
00:00:26 #5284 [Verbose] > │ | UH0_1 │
00:00:26 #5285 [Verbose] > │ and UH1 = │
00:00:26 #5286 [Verbose] > │ | UH1_0 of (float []) * (float []) * UH1 │
00:00:26 #5287 [Verbose] > │ | UH1_1 │
00:00:26 #5288 [Verbose] > │ let rec method3 (v0 : UH0, v1 : int32) : int32 = │
00:00:26 #5289 [Verbose] > │ match v0 with │
00:00:26 #5290 [Verbose] > │ | UH0_0(v2, v3) -> (* Cons *) │
00:00:26 #5291 [Verbose] > │ let v4 : int32 = v1 + 1 │
00:00:26 #5292 [Verbose] > │ method3(v3, v4) │
00:00:26 #5293 [Verbose] > │ | UH0_1 -> (* Nil *) │
00:00:26 #5294 [Verbose] > │ v1 │
00:00:26 #5295 [Verbose] > │ and method4 (v0 : (float []), v1 : UH0, v2 : int32) : int32 = │
00:00:26 #5296 [Verbose] > │ match v1 with │
00:00:26 #5297 [Verbose] > │ | UH0_0(v3, v4) -> (* Cons *) │
00:00:26 #5298 [Verbose] > │ v0.[int v2] <- v3 │
00:00:26 #5299 [Verbose] > │ let v5 : int32 = v2 + 1 │
00:00:26 #5300 [Verbose] > │ method4(v0, v4, v5) │
00:00:26 #5301 [Verbose] > │ | UH0_1 -> (* Nil *) │
00:00:26 #5302 [Verbose] > │ v2 │
00:00:26 #5303 [Verbose] > │ and method2 (v0 : UH0) : (float []) = │
00:00:26 #5304 [Verbose] > │ let v1 : int32 = 0 │
00:00:26 #5305 [Verbose] > │ let v2 : int32 = method3(v0, v1) │
00:00:26 #5306 [Verbose] > │ let v3 : (float []) = Array.zeroCreate<float> (v2) │
00:00:26 #5307 [Verbose] > │ let v4 : int32 = 0 │
00:00:26 #5308 [Verbose] > │ let v5 : int32 = method4(v3, v0, v4) │
00:00:26 #5309 [Verbose] > │ v3 │
00:00:26 #5310 [Verbose] > │ and method1 (v0 : UH0, v1 : UH1) : UH1 = │
00:00:26 #5311 [Verbose] > │ match v0 with │
00:00:26 #5312 [Verbose] > │ | UH0_0(v2, v3) -> (* Cons *) │
00:00:26 #5313 [Verbose] > │ let v4 : UH1 = method1(v3, v1) │
00:00:26 #5314 [Verbose] > │ let v5 : float = 0.0 │
00:00:26 #5315 [Verbose] > │ let v6 : float = 0.01 │
00:00:26 #5316 [Verbose] > │ let v7 : float = 0.02 │
00:00:26 #5317 [Verbose] > │ let v8 : float = 0.03 │
00:00:26 #5318 [Verbose] > │ let v9 : float = 0.04 │
00:00:26 #5319 [Verbose] > │ let v10 : float = 0.05 │
00:00:26 #5320 [Verbose] > │ let v11 : float = 0.060000000000000005 │
00:00:26 #5321 [Verbose] > │ let v12 : float = 0.06999999999999999 │
00:00:26 #5322 [Verbose] > │ let v13 : float = 0.08 │
00:00:26 #5323 [Verbose] > │ let v14 : float = 0.09 │
00:00:26 #5324 [Verbose] > │ let v15 : float = 0.09999999999999999 │
00:00:26 #5325 [Verbose] > │ let v16 : float = 0.11 │
00:00:26 #5326 [Verbose] > │ let v17 : float = 0.12 │
00:00:26 #5327 [Verbose] > │ let v18 : float = 0.13 │
00:00:26 #5328 [Verbose] > │ let v19 : float = 0.14 │
00:00:26 #5329 [Verbose] > │ let v20 : float = 0.15000000000000002 │
00:00:26 #5330 [Verbose] > │ let v21 : float = 0.16 │
00:00:26 #5331 [Verbose] > │ let v22 : float = 0.17 │
00:00:26 #5332 [Verbose] > │ let v23 : float = 0.18000000000000002 │
00:00:26 #5333 [Verbose] > │ let v24 : float = 0.19 │
00:00:26 #5334 [Verbose] > │ let v25 : float = 0.2 │
00:00:26 #5335 [Verbose] > │ let v26 : float = 0.21000000000000002 │
00:00:26 #5336 [Verbose] > │ let v27 : float = 0.22 │
00:00:26 #5337 [Verbose] > │ let v28 : float = 0.23 │
00:00:26 #5338 [Verbose] > │ let v29 : float = 0.24000000000000002 │
00:00:26 #5339 [Verbose] > │ let v30 : float = 0.25 │
00:00:26 #5340 [Verbose] > │ let v31 : float = 0.26 │
00:00:26 #5341 [Verbose] > │ let v32 : float = 0.27 │
00:00:26 #5342 [Verbose] > │ let v33 : float = 0.28 │
00:00:26 #5343 [Verbose] > │ let v34 : float = 0.29000000000000004 │
00:00:26 #5344 [Verbose] > │ let v35 : float = 0.3 │
00:00:26 #5345 [Verbose] > │ let v36 : float = 0.31 │
00:00:26 #5346 [Verbose] > │ let v37 : float = 0.32 │
00:00:26 #5347 [Verbose] > │ let v38 : float = 0.33 │
00:00:26 #5348 [Verbose] > │ let v39 : float = 0.34 │
00:00:26 #5349 [Verbose] > │ let v40 : float = 0.35000000000000003 │
00:00:26 #5350 [Verbose] > │ let v41 : float = 0.36000000000000004 │
00:00:26 #5351 [Verbose] > │ let v42 : float = 0.37 │
00:00:26 #5352 [Verbose] > │ let v43 : float = 0.38 │
00:00:26 #5353 [Verbose] > │ let v44 : float = 0.39 │
00:00:26 #5354 [Verbose] > │ let v45 : float = 0.4 │
00:00:26 #5355 [Verbose] > │ let v46 : float = 0.41000000000000003 │
00:00:26 #5356 [Verbose] > │ let v47 : float = 0.42000000000000004 │
00:00:26 #5357 [Verbose] > │ let v48 : float = 0.43 │
00:00:26 #5358 [Verbose] > │ let v49 : float = 0.44 │
00:00:26 #5359 [Verbose] > │ let v50 : float = 0.45 │
00:00:26 #5360 [Verbose] > │ let v51 : float = 0.46 │
00:00:26 #5361 [Verbose] > │ let v52 : float = 0.47000000000000003 │
00:00:26 #5362 [Verbose] > │ let v53 : float = 0.48000000000000004 │
00:00:26 #5363 [Verbose] > │ let v54 : float = 0.49 │
00:00:26 #5364 [Verbose] > │ let v55 : float = 0.5 │
00:00:26 #5365 [Verbose] > │ let v56 : float = 0.51 │
00:00:26 #5366 [Verbose] > │ let v57 : float = 0.52 │
00:00:26 #5367 [Verbose] > │ let v58 : float = 0.53 │
00:00:26 #5368 [Verbose] > │ let v59 : float = 0.54 │
00:00:26 #5369 [Verbose] > │ let v60 : float = 0.55 │
00:00:26 #5370 [Verbose] > │ let v61 : float = 0.56 │
00:00:26 #5371 [Verbose] > │ let v62 : float = 0.5700000000000001 │
00:00:26 #5372 [Verbose] > │ let v63 : float = 0.5800000000000001 │
00:00:26 #5373 [Verbose] > │ let v64 : float = 0.59 │
00:00:26 #5374 [Verbose] > │ let v65 : float = 0.6 │
00:00:26 #5375 [Verbose] > │ let v66 : float = 0.61 │
00:00:26 #5376 [Verbose] > │ let v67 : float = 0.62 │
00:00:26 #5377 [Verbose] > │ let v68 : float = 0.63 │
00:00:26 #5378 [Verbose] > │ let v69 : float = 0.64 │
00:00:26 #5379 [Verbose] > │ let v70 : float = 0.65 │
00:00:26 #5380 [Verbose] > │ let v71 : UH0 = UH0_1 │
00:00:26 #5381 [Verbose] > │ let v72 : UH0 = UH0_0(v70, v71) │
00:00:26 #5382 [Verbose] > │ let v73 : UH0 = UH0_0(v69, v72) │
00:00:26 #5383 [Verbose] > │ let v74 : UH0 = UH0_0(v68, v73) │
00:00:26 #5384 [Verbose] > │ let v75 : UH0 = UH0_0(v67, v74) │
00:00:26 #5385 [Verbose] > │ let v76 : UH0 = UH0_0(v66, v75) │
00:00:26 #5386 [Verbose] > │ let v77 : UH0 = UH0_0(v65, v76) │
00:00:26 #5387 [Verbose] > │ let v78 : UH0 = UH0_0(v64, v77) │
00:00:26 #5388 [Verbose] > │ let v79 : UH0 = UH0_0(v63, v78) │
00:00:26 #5389 [Verbose] > │ let v80 : UH0 = UH0_0(v62, v79) │
00:00:26 #5390 [Verbose] > │ let v81 : UH0 = UH0_0(v61, v80) │
00:00:26 #5391 [Verbose] > │ let v82 : UH0 = UH0_0(v60, v81) │
00:00:26 #5392 [Verbose] > │ let v83 : UH0 = UH0_0(v59, v82) │
00:00:26 #5393 [Verbose] > │ let v84 : UH0 = UH0_0(v58, v83) │
00:00:26 #5394 [Verbose] > │ let v85 : UH0 = UH0_0(v57, v84) │
00:00:26 #5395 [Verbose] > │ let v86 : UH0 = UH0_0(v56, v85) │
00:00:26 #5396 [Verbose] > │ let v87 : UH0 = UH0_0(v55, v86) │
00:00:26 #5397 [Verbose] > │ let v88 : UH0 = UH0_0(v54, v87) │
00:00:26 #5398 [Verbose] > │ let v89 : UH0 = UH0_0(v53, v88) │
00:00:26 #5399 [Verbose] > │ let v90 : UH0 = UH0_0(v52, v89) │
00:00:26 #5400 [Verbose] > │ let v91 : UH0 = UH0_0(v51, v90) │
00:00:26 #5401 [Verbose] > │ let v92 : UH0 = UH0_0(v50, v91) │
00:00:26 #5402 [Verbose] > │ let v93 : UH0 = UH0_0(v49, v92) │
00:00:26 #5403 [Verbose] > │ let v94 : UH0 = UH0_0(v48, v93) │
00:00:26 #5404 [Verbose] > │ let v95 : UH0 = UH0_0(v47, v94) │
00:00:26 #5405 [Verbose] > │ let v96 : UH0 = UH0_0(v46, v95) │
00:00:26 #5406 [Verbose] > │ let v97 : UH0 = UH0_0(v45, v96) │
00:00:26 #5407 [Verbose] > │ let v98 : UH0 = UH0_0(v44, v97) │
00:00:26 #5408 [Verbose] > │ let v99 : UH0 = UH0_0(v43, v98) │
00:00:26 #5409 [Verbose] > │ let v100 : UH0 = UH0_0(v42, v99) │
00:00:26 #5410 [Verbose] > │ let v101 : UH0 = UH0_0(v41, v100) │
00:00:26 #5411 [Verbose] > │ let v102 : UH0 = UH0_0(v40, v101) │
00:00:26 #5412 [Verbose] > │ let v103 : UH0 = UH0_0(v39, v102) │
00:00:26 #5413 [Verbose] > │ let v104 : UH0 = UH0_0(v38, v103) │
00:00:26 #5414 [Verbose] > │ let v105 : UH0 = UH0_0(v37, v104) │
00:00:26 #5415 [Verbose] > │ let v106 : UH0 = UH0_0(v36, v105) │
00:00:26 #5416 [Verbose] > │ let v107 : UH0 = UH0_0(v35, v106) │
00:00:26 #5417 [Verbose] > │ let v108 : UH0 = UH0_0(v34, v107) │
00:00:26 #5418 [Verbose] > │ let v109 : UH0 = UH0_0(v33, v108) │
00:00:26 #5419 [Verbose] > │ let v110 : UH0 = UH0_0(v32, v109) │
00:00:26 #5420 [Verbose] > │ let v111 : UH0 = UH0_0(v31, v110) │
00:00:26 #5421 [Verbose] > │ let v112 : UH0 = UH0_0(v30, v111) │
00:00:26 #5422 [Verbose] > │ let v113 : UH0 = UH0_0(v29, v112) │
00:00:26 #5423 [Verbose] > │ let v114 : UH0 = UH0_0(v28, v113) │
00:00:26 #5424 [Verbose] > │ let v115 : UH0 = UH0_0(v27, v114) │
00:00:26 #5425 [Verbose] > │ let v116 : UH0 = UH0_0(v26, v115) │
00:00:26 #5426 [Verbose] > │ let v117 : UH0 = UH0_0(v25, v116) │
00:00:26 #5427 [Verbose] > │ let v118 : UH0 = UH0_0(v24, v117) │
00:00:26 #5428 [Verbose] > │ let v119 : UH0 = UH0_0(v23, v118) │
00:00:26 #5429 [Verbose] > │ let v120 : UH0 = UH0_0(v22, v119) │
00:00:26 #5430 [Verbose] > │ let v121 : UH0 = UH0_0(v21, v120) │
00:00:26 #5431 [Verbose] > │ let v122 : UH0 = UH0_0(v20, v121) │
00:00:26 #5432 [Verbose] > │ let v123 : UH0 = UH0_0(v19, v122) │
00:00:26 #5433 [Verbose] > │ let v124 : UH0 = UH0_0(v18, v123) │
00:00:26 #5434 [Verbose] > │ let v125 : UH0 = UH0_0(v17, v124) │
00:00:26 #5435 [Verbose] > │ let v126 : UH0 = UH0_0(v16, v125) │
00:00:26 #5436 [Verbose] > │ let v127 : UH0 = UH0_0(v15, v126) │
00:00:26 #5437 [Verbose] > │ let v128 : UH0 = UH0_0(v14, v127) │
00:00:26 #5438 [Verbose] > │ let v129 : UH0 = UH0_0(v13, v128) │
00:00:26 #5439 [Verbose] > │ let v130 : UH0 = UH0_0(v12, v129) │
00:00:26 #5440 [Verbose] > │ let v131 : UH0 = UH0_0(v11, v130) │
00:00:26 #5441 [Verbose] > │ let v132 : UH0 = UH0_0(v10, v131) │
00:00:26 #5442 [Verbose] > │ let v133 : UH0 = UH0_0(v9, v132) │
00:00:26 #5443 [Verbose] > │ let v134 : UH0 = UH0_0(v8, v133) │
00:00:26 #5444 [Verbose] > │ let v135 : UH0 = UH0_0(v7, v134) │
00:00:26 #5445 [Verbose] > │ let v136 : UH0 = UH0_0(v6, v135) │
00:00:26 #5446 [Verbose] > │ let v137 : UH0 = UH0_0(v5, v136) │
00:00:26 #5447 [Verbose] > │ let v138 : (float []) = method2(v137) │
00:00:26 #5448 [Verbose] > │ let v139 : float = 0.0 │
00:00:26 #5449 [Verbose] > │ let v140 : float = 0.0007224452478461068 │
00:00:26 #5450 [Verbose] > │ let v141 : float = 0.0014297283919934465 │
00:00:26 #5451 [Verbose] > │ let v142 : float = 0.0021070055388626454 │
00:00:26 #5452 [Verbose] > │ let v143 : float = 0.00274006253677335 │
00:00:26 #5453 [Verbose] > │ let v144 : float = 0.0033156132912039757 │
00:00:26 #5454 [Verbose] > │ let v145 : float = 0.0038215786027292415 │
00:00:26 #5455 [Verbose] > │ let v146 : float = 0.004247339675607605 │
00:00:26 #5456 [Verbose] > │ let v147 : float = 0.004583960976582912 │
00:00:26 #5457 [Verbose] > │ let v148 : float = 0.004824377766717757 │
00:00:26 #5458 [Verbose] > │ let v149 : float = 0.00496354437049027 │
00:00:26 #5459 [Verbose] > │ let v150 : float = 0.004998540070400965 │
00:00:26 #5460 [Verbose] > │ let v151 : float = 0.004928630404658255 │
00:00:26 #5461 [Verbose] > │ let v152 : float = 0.004755282581475768 │
00:00:26 #5462 [Verbose] > │ let v153 : float = 0.004482134686478519 │
00:00:26 #5463 [Verbose] > │ let v154 : float = 0.0041149193294682815 │
00:00:26 #5464 [Verbose] > │ let v155 : float = 0.0036613433329888666 │
00:00:26 #5465 [Verbose] > │ let v156 : float = 0.0031309259876915697 │
00:00:26 #5466 [Verbose] > │ let v157 : float = 0.002534799269067951 │
00:00:26 #5467 [Verbose] > │ let v158 : float = 0.0018854742084416015 │
00:00:26 #5468 [Verbose] > │ let v159 : float = 0.0011965783214377905 │
00:00:26 #5469 [Verbose] > │ let v160 : float = 0.00048256960457257535 │
00:00:26 #5470 [Verbose] > │ let v161 : float = -0.00024156689762753317 │
00:00:26 #5471 [Verbose] > │ let v162 : float = -0.0009606335867685418 │
00:00:26 #5472 [Verbose] > │ let v163 : float = -0.001659539265642642 │
00:00:26 #5473 [Verbose] > │ let v164 : float = -0.002323615860218842 │
00:00:26 #5474 [Verbose] > │ let v165 : float = -0.0029389262614623636 │
00:00:26 #5475 [Verbose] > │ let v166 : float = -0.003492556826244686 │
00:00:26 #5476 [Verbose] > │ let v167 : float = -0.003972888398568771 │
00:00:26 #5477 [Verbose] > │ let v168 : float = -0.00436984016313259 │
00:00:26 #5478 [Verbose] > │ let v169 : float = -0.004675081213427074 │
00:00:26 #5479 [Verbose] > │ let v170 : float = -0.004882205394146359 │
00:00:26 #5480 [Verbose] > │ let v171 : float = -0.004986865748457456 │
00:00:26 #5481 [Verbose] > │ let v172 : float = -0.004986865748457456 │
00:00:26 #5482 [Verbose] > │ let v173 : float = -0.004882205394146361 │
00:00:26 #5483 [Verbose] > │ let v174 : float = -0.004675081213427074 │
00:00:26 #5484 [Verbose] > │ let v175 : float = -0.004369840163132589 │
00:00:26 #5485 [Verbose] > │ let v176 : float = -0.003972888398568774 │
00:00:26 #5486 [Verbose] > │ let v177 : float = -0.0034925568262446837 │
00:00:26 #5487 [Verbose] > │ let v178 : float = -0.002938926261462367 │
00:00:26 #5488 [Verbose] > │ let v179 : float = -0.002323615860218846 │
00:00:26 #5489 [Verbose] > │ let v180 : float = -0.0016595392656426435 │
00:00:26 #5490 [Verbose] > │ let v181 : float = -0.0009606335867685414 │
00:00:26 #5491 [Verbose] > │ let v182 : float = -0.00024156689762753724 │
00:00:26 #5492 [Verbose] > │ let v183 : float = 0.0004825696045725713 │
00:00:26 #5493 [Verbose] > │ let v184 : float = 0.0011965783214377866 │
00:00:26 #5494 [Verbose] > │ let v185 : float = 0.0018854742084416021 │
00:00:26 #5495 [Verbose] > │ let v186 : float = 0.002534799269067954 │
00:00:26 #5496 [Verbose] > │ let v187 : float = 0.003130925987691568 │
00:00:26 #5497 [Verbose] > │ let v188 : float = 0.0036613433329888622 │
00:00:26 #5498 [Verbose] > │ let v189 : float = 0.0041149193294682815 │
00:00:26 #5499 [Verbose] > │ let v190 : float = 0.0044821346864785195 │
00:00:26 #5500 [Verbose] > │ let v191 : float = 0.004755282581475766 │
00:00:26 #5501 [Verbose] > │ let v192 : float = 0.004928630404658255 │
00:00:26 #5502 [Verbose] > │ let v193 : float = 0.004998540070400965 │
00:00:26 #5503 [Verbose] > │ let v194 : float = 0.004963544370490271 │
00:00:26 #5504 [Verbose] > │ let v195 : float = 0.004824377766717758 │
00:00:26 #5505 [Verbose] > │ let v196 : float = 0.004583960976582912 │
00:00:26 #5506 [Verbose] > │ let v197 : float = 0.004247339675607605 │
00:00:26 #5507 [Verbose] > │ let v198 : float = 0.003821578602729245 │
00:00:26 #5508 [Verbose] > │ let v199 : float = 0.0033156132912039783 │
00:00:26 #5509 [Verbose] > │ let v200 : float = 0.0027400625367733585 │
00:00:26 #5510 [Verbose] > │ let v201 : float = 0.0021070055388626528 │
00:00:26 #5511 [Verbose] > │ let v202 : float = 0.001429728391993452 │
00:00:26 #5512 [Verbose] > │ let v203 : float = 0.0007224452478461016 │
00:00:26 #5513 [Verbose] > │ let v204 : float = 0.0 │
00:00:26 #5514 [Verbose] > │ let v205 : UH0 = UH0_1 │
00:00:26 #5515 [Verbose] > │ let v206 : UH0 = UH0_0(v204, v205) │
00:00:26 #5516 [Verbose] > │ let v207 : UH0 = UH0_0(v203, v206) │
00:00:26 #5517 [Verbose] > │ let v208 : UH0 = UH0_0(v202, v207) │
00:00:26 #5518 [Verbose] > │ let v209 : UH0 = UH0_0(v201, v208) │
00:00:26 #5519 [Verbose] > │ let v210 : UH0 = UH0_0(v200, v209) │
00:00:26 #5520 [Verbose] > │ let v211 : UH0 = UH0_0(v199, v210) │
00:00:26 #5521 [Verbose] > │ let v212 : UH0 = UH0_0(v198, v211) │
00:00:26 #5522 [Verbose] > │ let v213 : UH0 = UH0_0(v197, v212) │
00:00:26 #5523 [Verbose] > │ let v214 : UH0 = UH0_0(v196, v213) │
00:00:26 #5524 [Verbose] > │ let v215 : UH0 = UH0_0(v195, v214) │
00:00:26 #5525 [Verbose] > │ let v216 : UH0 = UH0_0(v194, v215) │
00:00:26 #5526 [Verbose] > │ let v217 : UH0 = UH0_0(v193, v216) │
00:00:26 #5527 [Verbose] > │ let v218 : UH0 = UH0_0(v192, v217) │
00:00:26 #5528 [Verbose] > │ let v219 : UH0 = UH0_0(v191, v218) │
00:00:26 #5529 [Verbose] > │ let v220 : UH0 = UH0_0(v190, v219) │
00:00:26 #5530 [Verbose] > │ let v221 : UH0 = UH0_0(v189, v220) │
00:00:26 #5531 [Verbose] > │ let v222 : UH0 = UH0_0(v188, v221) │
00:00:26 #5532 [Verbose] > │ let v223 : UH0 = UH0_0(v187, v222) │
00:00:26 #5533 [Verbose] > │ let v224 : UH0 = UH0_0(v186, v223) │
00:00:26 #5534 [Verbose] > │ let v225 : UH0 = UH0_0(v185, v224) │
00:00:26 #5535 [Verbose] > │ let v226 : UH0 = UH0_0(v184, v225) │
00:00:26 #5536 [Verbose] > │ let v227 : UH0 = UH0_0(v183, v226) │
00:00:26 #5537 [Verbose] > │ let v228 : UH0 = UH0_0(v182, v227) │
00:00:26 #5538 [Verbose] > │ let v229 : UH0 = UH0_0(v181, v228) │
00:00:26 #5539 [Verbose] > │ let v230 : UH0 = UH0_0(v180, v229) │
00:00:26 #5540 [Verbose] > │ let v231 : UH0 = UH0_0(v179, v230) │
00:00:26 #5541 [Verbose] > │ let v232 : UH0 = UH0_0(v178, v231) │
00:00:26 #5542 [Verbose] > │ let v233 : UH0 = UH0_0(v177, v232) │
00:00:26 #5543 [Verbose] > │ let v234 : UH0 = UH0_0(v176, v233) │
00:00:26 #5544 [Verbose] > │ let v235 : UH0 = UH0_0(v175, v234) │
00:00:26 #5545 [Verbose] > │ let v236 : UH0 = UH0_0(v174, v235) │
00:00:26 #5546 [Verbose] > │ let v237 : UH0 = UH0_0(v173, v236) │
00:00:26 #5547 [Verbose] > │ let v238 : UH0 = UH0_0(v172, v237) │
00:00:26 #5548 [Verbose] > │ let v239 : UH0 = UH0_0(v171, v238) │
00:00:26 #5549 [Verbose] > │ let v240 : UH0 = UH0_0(v170, v239) │
00:00:26 #5550 [Verbose] > │ let v241 : UH0 = UH0_0(v169, v240) │
00:00:26 #5551 [Verbose] > │ let v242 : UH0 = UH0_0(v168, v241) │
00:00:26 #5552 [Verbose] > │ let v243 : UH0 = UH0_0(v167, v242) │
00:00:26 #5553 [Verbose] > │ let v244 : UH0 = UH0_0(v166, v243) │
00:00:26 #5554 [Verbose] > │ let v245 : UH0 = UH0_0(v165, v244) │
00:00:26 #5555 [Verbose] > │ let v246 : UH0 = UH0_0(v164, v245) │
00:00:26 #5556 [Verbose] > │ let v247 : UH0 = UH0_0(v163, v246) │
00:00:26 #5557 [Verbose] > │ let v248 : UH0 = UH0_0(v162, v247) │
00:00:26 #5558 [Verbose] > │ let v249 : UH0 = UH0_0(v161, v248) │
00:00:26 #5559 [Verbose] > │ let v250 : UH0 = UH0_0(v160, v249) │
00:00:26 #5560 [Verbose] > │ let v251 : UH0 = UH0_0(v159, v250) │
00:00:26 #5561 [Verbose] > │ let v252 : UH0 = UH0_0(v158, v251) │
00:00:26 #5562 [Verbose] > │ let v253 : UH0 = UH0_0(v157, v252) │
00:00:26 #5563 [Verbose] > │ let v254 : UH0 = UH0_0(v156, v253) │
00:00:26 #5564 [Verbose] > │ let v255 : UH0 = UH0_0(v155, v254) │
00:00:26 #5565 [Verbose] > │ let v256 : UH0 = UH0_0(v154, v255) │
00:00:26 #5566 [Verbose] > │ let v257 : UH0 = UH0_0(v153, v256) │
00:00:26 #5567 [Verbose] > │ let v258 : UH0 = UH0_0(v152, v257) │
00:00:26 #5568 [Verbose] > │ let v259 : UH0 = UH0_0(v151, v258) │
00:00:26 #5569 [Verbose] > │ let v260 : UH0 = UH0_0(v150, v259) │
00:00:26 #5570 [Verbose] > │ let v261 : UH0 = UH0_0(v149, v260) │
00:00:26 #5571 [Verbose] > │ let v262 : UH0 = UH0_0(v148, v261) │
00:00:26 #5572 [Verbose] > │ let v263 : UH0 = UH0_0(v147, v262) │
00:00:26 #5573 [Verbose] > │ let v264 : UH0 = UH0_0(v146, v263) │
00:00:26 #5574 [Verbose] > │ let v265 : UH0 = UH0_0(v145, v264) │
00:00:26 #5575 [Verbose] > │ let v266 : UH0 = UH0_0(v144, v265) │
00:00:26 #5576 [Verbose] > │ let v267 : UH0 = UH0_0(v143, v266) │
00:00:26 #5577 [Verbose] > │ let v268 : UH0 = UH0_0(v142, v267) │
00:00:26 #5578 [Verbose] > │ let v269 : UH0 = UH0_0(v141, v268) │
00:00:26 #5579 [Verbose] > │ let v270 : UH0 = UH0_0(v140, v269) │
00:00:26 #5580 [Verbose] > │ let v271 : UH0 = UH0_0(v139, v270) │
00:00:26 #5581 [Verbose] > │ let v272 : (float []) = method2(v271) │
00:00:26 #5582 [Verbose] > │ UH1_0(v138, v272, v4) │
00:00:26 #5583 [Verbose] > │ | UH0_1 -> (* Nil *) │
00:00:26 #5584 [Verbose] > │ v1 │
00:00:26 #5585 [Verbose] > │ and method6 (v0 : UH1, v1 : int32) : int32 = │
00:00:26 #5586 [Verbose] > │ match v0 with │
00:00:26 #5587 [Verbose] > │ | UH1_0(v2, v3, v4) -> (* Cons *) │
00:00:26 #5588 [Verbose] > │ let v5 : int32 = v1 + 1 │
00:00:26 #5589 [Verbose] > │ method6(v4, v5) │
00:00:26 #5590 [Verbose] > │ | UH1_1 -> (* Nil *) │
00:00:26 #5591 [Verbose] > │ v1 │
00:00:26 #5592 [Verbose] > │ and method7 (v0 : (struct ((float []) * (float [])) []), v1 : UH1, v2 : │
00:00:26 #5593 [Verbose] > │ int32) : int32 = │
00:00:26 #5594 [Verbose] > │ match v1 with │
00:00:26 #5595 [Verbose] > │ | UH1_0(v3, v4, v5) -> (* Cons *) │
00:00:26 #5596 [Verbose] > │ v0.[int v2] <- struct (v3, v4) │
00:00:26 #5597 [Verbose] > │ let v6 : int32 = v2 + 1 │
00:00:26 #5598 [Verbose] > │ method7(v0, v5, v6) │
00:00:26 #5599 [Verbose] > │ | UH1_1 -> (* Nil *) │
00:00:26 #5600 [Verbose] > │ v2 │
00:00:26 #5601 [Verbose] > │ and method5 (v0 : UH1) : (struct ((float []) * (float [])) []) = │
00:00:26 #5602 [Verbose] > │ let v1 : int32 = 0 │
00:00:26 #5603 [Verbose] > │ let v2 : int32 = method6(v0, v1) │
00:00:26 #5604 [Verbose] > │ let v3 : (struct ((float []) * (float [])) []) = Array.zeroCreate<struct │
00:00:26 #5605 [Verbose] > │ ((float []) * (float []))> (v2) │
00:00:26 #5606 [Verbose] > │ let v4 : int32 = 0 │
00:00:26 #5607 [Verbose] > │ let v5 : int32 = method7(v3, v0, v4) │
00:00:26 #5608 [Verbose] > │ v3 │
00:00:26 #5609 [Verbose] > │ and method8 (v0 : (struct (string * (float []) * (float [])) [])) : (struct │
00:00:26 #5610 [Verbose] > │ (string * (float []) * (float [])) []) = │
00:00:26 #5611 [Verbose] > │ v0 │
00:00:26 #5612 [Verbose] > │ and method0 () : struct (string * string * string * (struct (string * (float │
00:00:26 #5613 [Verbose] > │ []) * (float [])) [])) = │
00:00:26 #5614 [Verbose] > │ let v0 : float = 0.0 │
00:00:26 #5615 [Verbose] > │ let v1 : float = 1.0 │
00:00:26 #5616 [Verbose] > │ let v2 : float = 2.0 │
00:00:26 #5617 [Verbose] > │ let v3 : float = 3.0 │
00:00:26 #5618 [Verbose] > │ let v4 : float = 4.0 │
00:00:26 #5619 [Verbose] > │ let v5 : float = 5.0 │
00:00:26 #5620 [Verbose] > │ let v6 : float = 6.0 │
00:00:26 #5621 [Verbose] > │ let v7 : float = 7.0 │
00:00:26 #5622 [Verbose] > │ let v8 : float = 8.0 │
00:00:26 #5623 [Verbose] > │ let v9 : float = 9.0 │
00:00:26 #5624 [Verbose] > │ let v10 : UH0 = UH0_1 │
00:00:26 #5625 [Verbose] > │ let v11 : UH0 = UH0_0(v9, v10) │
00:00:26 #5626 [Verbose] > │ let v12 : UH0 = UH0_0(v8, v11) │
00:00:26 #5627 [Verbose] > │ let v13 : UH0 = UH0_0(v7, v12) │
00:00:26 #5628 [Verbose] > │ let v14 : UH0 = UH0_0(v6, v13) │
00:00:26 #5629 [Verbose] > │ let v15 : UH0 = UH0_0(v5, v14) │
00:00:26 #5630 [Verbose] > │ let v16 : UH0 = UH0_0(v4, v15) │
00:00:26 #5631 [Verbose] > │ let v17 : UH0 = UH0_0(v3, v16) │
00:00:26 #5632 [Verbose] > │ let v18 : UH0 = UH0_0(v2, v17) │
00:00:26 #5633 [Verbose] > │ let v19 : UH0 = UH0_0(v1, v18) │
00:00:26 #5634 [Verbose] > │ let v20 : UH0 = UH0_0(v0, v19) │
00:00:26 #5635 [Verbose] > │ let v21 : UH1 = UH1_1 │
00:00:26 #5636 [Verbose] > │ let v22 : UH1 = method1(v20, v21) │
00:00:26 #5637 [Verbose] > │ let v23 : (struct ((float []) * (float [])) []) = method5(v22) │
00:00:26 #5638 [Verbose] > │ let struct (v24 : (float []), v25 : (float [])) = v23.[int 0] │
00:00:26 #5639 [Verbose] > │ let v26 : string = $"{0}" │
00:00:26 #5640 [Verbose] > │ let v27 : (struct (string * (float []) * (float [])) []) = [|struct │
00:00:26 #5641 [Verbose] > │ (v26, v24, v25)|] │
00:00:26 #5642 [Verbose] > │ let v28 : (struct (string * (float []) * (float [])) []) = method8(v27) │
00:00:26 #5643 [Verbose] > │ let v29 : string = "wave" │
00:00:26 #5644 [Verbose] > │ let v30 : string = "position (m)" │
00:00:26 #5645 [Verbose] > │ let v31 : string = "displacement (m)" │
00:00:26 #5646 [Verbose] > │ struct (v29, v30, v31, v28) │
00:00:26 #5647 [Verbose] > │ method0() │
00:00:26 #5648 [Verbose] > │ │
00:00:26 #5649 [Verbose] > │ │
00:00:26 #5650 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:26 #5651 [Verbose] >
00:00:26 #5652 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:26 #5653 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:26 #5654 [Verbose] > │ ### system kinetic energy versus time 2 │
00:00:26 #5655 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:26 #5656 [Verbose] >
00:00:26 #5657 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:26 #5658 [Verbose] > // // test
00:00:26 #5659 [Verbose] >
00:00:26 #5660 [Verbose] > inl central_force f (particle_state st1) (particle_state st2) =
00:00:26 #5661 [Verbose] > inl r1 = st1.pos_vec
00:00:26 #5662 [Verbose] > inl r2 = st2.pos_vec
00:00:26 #5663 [Verbose] > inl r21 = r2 ^-^ r1
00:00:26 #5664 [Verbose] > inl r21mag = magnitude r21
00:00:26 #5665 [Verbose] > f r21mag *^ r21 ^/ r21mag
00:00:26 #5666 [Verbose] >
00:00:26 #5667 [Verbose] > inl billiard_force k re =
00:00:26 #5668 [Verbose] > inl f r =
00:00:26 #5669 [Verbose] > if r >= re
00:00:26 #5670 [Verbose] > then 0
00:00:26 #5671 [Verbose] > else -k * (r - re)
00:00:26 #5672 [Verbose] > central_force f
00:00:26 #5673 [Verbose] >
00:00:26 #5674 [Verbose] > type force_vector = vec
00:00:26 #5675 [Verbose] > type two_body_force = particle_state -> particle_state -> force_vector
00:00:26 #5676 [Verbose] >
00:00:26 #5677 [Verbose] > union force t =
00:00:26 #5678 [Verbose] > | ExternalForce : t * one_body_force
00:00:26 #5679 [Verbose] > | InternalForce : t * t * two_body_force
00:00:26 #5680 [Verbose] >
00:00:26 #5681 [Verbose] > nominal multi_particle_state = stream.stream particle_state
00:00:26 #5682 [Verbose] >
00:00:26 #5683 [Verbose] > nominal d_multi_particle_state = stream.stream d_particle_state
00:00:26 #5684 [Verbose] >
00:00:26 #5685 [Verbose] > inl force_on n s force =
00:00:26 #5686 [Verbose] > match force with
00:00:26 #5687 [Verbose] > | ExternalForce (n0, f_one_body) =>
00:00:26 #5688 [Verbose] > if n = n0
00:00:26 #5689 [Verbose] > then f_one_body
00:00:26 #5690 [Verbose] > else fun _ => zero_vec ()
00:00:26 #5691 [Verbose] > | InternalForce (n0, n1, f_two_body) =>
00:00:26 #5692 [Verbose] > if n = n0
00:00:26 #5693 [Verbose] > then s |> stream.try_item n1 |> optionm.map f_two_body
00:00:26 #5694 [Verbose] > elif n = n1
00:00:26 #5695 [Verbose] > then s |> stream.try_item n0 |> optionm.map f_two_body
00:00:26 #5696 [Verbose] > else None
00:00:26 #5697 [Verbose] > |> optionm'.default_value (fun _ => zero_vec ())
00:00:26 #5698 [Verbose] >
00:00:26 #5699 [Verbose] > inl forces_on n (multi_particle_state sts) fs =
00:00:26 #5700 [Verbose] > fs
00:00:26 #5701 [Verbose] > |> listm.map (force_on n sts)
00:00:26 #5702 [Verbose] >
00:00:26 #5703 [Verbose] > inl newton_second_mps fs ((multi_particle_state sts) as mpst) =
00:00:26 #5704 [Verbose] > inl deriv (n, st) =
00:00:26 #5705 [Verbose] > newton_second_ps (forces_on n mpst fs) st
00:00:26 #5706 [Verbose] > sts |> stream.indexed |> stream.map deriv |> d_multi_particle_state
00:00:26 #5707 [Verbose] >
00:00:26 #5708 [Verbose] > instance (+++) d_multi_particle_state =
00:00:26 #5709 [Verbose] > fun (d_multi_particle_state dsts1) (d_multi_particle_state dsts2) =>
00:00:26 #5710 [Verbose] > (dsts1, dsts2)
00:00:26 #5711 [Verbose] > ||> stream.zip_with (+++)
00:00:26 #5712 [Verbose] > |> d_multi_particle_state
00:00:26 #5713 [Verbose] >
00:00:26 #5714 [Verbose] > instance scale d_multi_particle_state = fun w (d_multi_particle_state dsts) =>
00:00:26 #5715 [Verbose] > dsts
00:00:26 #5716 [Verbose] > |> stream.map (scale w)
00:00:26 #5717 [Verbose] > |> d_multi_particle_state
00:00:26 #5718 [Verbose] >
00:00:26 #5719 [Verbose] > instance shift multi_particle_state = fun dt dsts (multi_particle_state sts) =>
00:00:26 #5720 [Verbose] > inl (d_multi_particle_state dsts) =
00:00:26 #5721 [Verbose] > real
00:00:26 #5722 [Verbose] > match dsts with
00:00:26 #5723 [Verbose] > | d_multi_particle_state _ => dsts
00:00:26 #5724 [Verbose] > (dsts, sts)
00:00:26 #5725 [Verbose] > ||> stream.zip_with (shift dt)
00:00:26 #5726 [Verbose] > |> stream.memoize
00:00:26 #5727 [Verbose] > |> fun x => x ()
00:00:26 #5728 [Verbose] > |> multi_particle_state
00:00:26 #5729 [Verbose] >
00:00:26 #5730 [Verbose] > inl euler_cromer_mps dt : numerical_method multi_particle_state
00:00:26 #5731 [Verbose] > d_multi_particle_state =
00:00:26 #5732 [Verbose] > fun deriv ((multi_particle_state sts0) as mpst0) =>
00:00:26 #5733 [Verbose] > inl (multi_particle_state sts1) = euler dt deriv mpst0
00:00:26 #5734 [Verbose] > (sts0, sts1)
00:00:26 #5735 [Verbose] > ||> stream.zip
00:00:26 #5736 [Verbose] > |> stream.map (fun ((particle_state st0), (particle_state st1)) =>
00:00:26 #5737 [Verbose] > particle_state {
00:00:26 #5738 [Verbose] > st1 with
00:00:26 #5739 [Verbose] > pos_vec = st0.pos_vec ^+^ st1.velocity ^* dt
00:00:26 #5740 [Verbose] > }
00:00:26 #5741 [Verbose] > )
00:00:26 #5742 [Verbose] > |> multi_particle_state
00:00:26 #5743 [Verbose] >
00:00:26 #5744 [Verbose] > inl update_mps (method : numerical_method multi_particle_state
00:00:26 #5745 [Verbose] > d_multi_particle_state) =
00:00:26 #5746 [Verbose] > newton_second_mps >> method
00:00:26 #5747 [Verbose] >
00:00:26 #5748 [Verbose] > inl states_mps (method : numerical_method multi_particle_state
00:00:26 #5749 [Verbose] > d_multi_particle_state) =
00:00:26 #5750 [Verbose] > newton_second_mps
00:00:26 #5751 [Verbose] > >> method
00:00:26 #5752 [Verbose] > >> (fun x (multi_particle_state y) =>
00:00:26 #5753 [Verbose] > y
00:00:26 #5754 [Verbose] > |> stream.memoize
00:00:26 #5755 [Verbose] > |> (fun x => x ())
00:00:26 #5756 [Verbose] > |> multi_particle_state |> x
00:00:26 #5757 [Verbose] > )
00:00:26 #5758 [Verbose] > // >> stream.iterate
00:00:26 #5759 [Verbose] > >> seq.iterate'
00:00:26 #5760 [Verbose] >
00:00:26 #5761 [Verbose] > inl kinetic_energy (particle_state st) =
00:00:26 #5762 [Verbose] > inl m = st.mass
00:00:26 #5763 [Verbose] > inl v = magnitude st.velocity
00:00:26 #5764 [Verbose] > 0.5 * m * v ** 2
00:00:26 #5765 [Verbose] >
00:00:26 #5766 [Verbose] > inl system_ke (multi_particle_state sts) =
00:00:26 #5767 [Verbose] > sts
00:00:26 #5768 [Verbose] > |> stream.map kinetic_energy
00:00:26 #5769 [Verbose] > |> stream.sum
00:00:26 #5770 [Verbose] >
00:00:26 #5771 [Verbose] > inl linear_spring_pe k re (particle_state st1) (particle_state st2) =
00:00:26 #5772 [Verbose] > inl r1 = st1.pos_vec
00:00:26 #5773 [Verbose] > inl r2 = st2.pos_vec
00:00:26 #5774 [Verbose] > inl r21 = r2 ^-^ r1
00:00:26 #5775 [Verbose] > inl r21mag = magnitude r21
00:00:26 #5776 [Verbose] > k * (r21mag - re) ** 2 / 2
00:00:26 #5777 [Verbose] >
00:00:26 #5778 [Verbose] > inl earth_surface_gravity_pe (particle_state st) =
00:00:26 #5779 [Verbose] > inl g = 9.80665
00:00:26 #5780 [Verbose] > inl m = st.mass
00:00:26 #5781 [Verbose] > inl z = st.pos_vec.z
00:00:26 #5782 [Verbose] > m * g * z
00:00:26 #5783 [Verbose] >
00:00:26 #5784 [Verbose] > inl ball_radius () = 0.03
00:00:26 #5785 [Verbose] >
00:00:26 #5786 [Verbose] > inl billiard_forces k =
00:00:26 #5787 [Verbose] > [[ InternalForce (0i32, 1, billiard_force k (2 * ball_radius ())) ]]
00:00:26 #5788 [Verbose] >
00:00:26 #5789 [Verbose] > inl billiard_initial () =
00:00:26 #5790 [Verbose] > inl ball_mass = 0.160
00:00:26 #5791 [Verbose] > inl (particle_state default_particle_state') = default_particle_state ()
00:00:26 #5792 [Verbose] > [[
00:00:26 #5793 [Verbose] > particle_state {
00:00:26 #5794 [Verbose] > default_particle_state' with
00:00:26 #5795 [Verbose] > mass = ball_mass
00:00:26 #5796 [Verbose] > pos_vec = zero_vec ()
00:00:26 #5797 [Verbose] > velocity = 0.2 *^ i_hat ()
00:00:26 #5798 [Verbose] > }
00:00:26 #5799 [Verbose] > particle_state {
00:00:26 #5800 [Verbose] > default_particle_state' with
00:00:26 #5801 [Verbose] > mass = ball_mass
00:00:26 #5802 [Verbose] > pos_vec = i_hat () ^+^ 0.02 *^ j_hat ()
00:00:26 #5803 [Verbose] > velocity = zero_vec ()
00:00:26 #5804 [Verbose] > }
00:00:26 #5805 [Verbose] > ]]
00:00:26 #5806 [Verbose] > |> stream.from_list
00:00:26 #5807 [Verbose] > |> multi_particle_state
00:00:26 #5808 [Verbose] >
00:00:26 #5809 [Verbose] > inl billiard_states ~n_method k dt =
00:00:26 #5810 [Verbose] > states_mps (n_method dt) (billiard_forces k) (billiard_initial ())
00:00:26 #5811 [Verbose] >
00:00:26 #5812 [Verbose] > inl billiard_states_finite n_method k dt =
00:00:26 #5813 [Verbose] > billiard_states n_method k dt
00:00:26 #5814 [Verbose] > >> Some
00:00:26 #5815 [Verbose] > |> seq.take_while_ (fun (multi_particle_state mpst) (_ : i32) =>
00:00:26 #5816 [Verbose] > match mpst |> stream.try_item 0i32 with
00:00:26 #5817 [Verbose] > | Some st =>
00:00:26 #5818 [Verbose] > st.time <= 10
00:00:26 #5819 [Verbose] > | None => false
00:00:26 #5820 [Verbose] > )
00:00:26 #5821 [Verbose] >
00:00:26 #5822 [Verbose] > inl momentum (particle_state st) =
00:00:26 #5823 [Verbose] > inl m = st.mass
00:00:26 #5824 [Verbose] > inl v = st.velocity
00:00:26 #5825 [Verbose] > m *^ v
00:00:26 #5826 [Verbose] >
00:00:26 #5827 [Verbose] > inl system_p (multi_particle_state sts) =
00:00:26 #5828 [Verbose] > sts
00:00:26 #5829 [Verbose] > |> stream.map momentum
00:00:26 #5830 [Verbose] > |> stream.fold (^+^) (zero_vec ())
00:00:26 #5831 [Verbose] >
00:00:26 #5832 [Verbose] > inl time_ke_ec_x, time_ke_ec_y =
00:00:26 #5833 [Verbose] > billiard_states_finite euler_cromer_mps 30 0.03
00:00:26 #5834 [Verbose] > |> listm.map (fun (multi_particle_state mpst) =>
00:00:26 #5835 [Verbose] > mpst |> stream.try_item 0i32
00:00:26 #5836 [Verbose] > |> optionm.map (fun st =>
00:00:26 #5837 [Verbose] > st.time, system_ke (multi_particle_state mpst)
00:00:26 #5838 [Verbose] > )
00:00:26 #5839 [Verbose] > )
00:00:26 #5840 [Verbose] > // |> stream.to_list
00:00:26 #5841 [Verbose] > |> listm'.choose id
00:00:26 #5842 [Verbose] > |> listm'.unzip
00:00:26 #5843 [Verbose] >
00:00:26 #5844 [Verbose] > inl time_ke_rk4_x, time_ke_rk4_y =
00:00:26 #5845 [Verbose] > billiard_states_finite runge_kutta_4 30 0.03
00:00:26 #5846 [Verbose] > |> listm.map (fun (multi_particle_state mpst) =>
00:00:26 #5847 [Verbose] > mpst |> stream.try_item 0i32
00:00:26 #5848 [Verbose] > |> optionm.map (fun st =>
00:00:26 #5849 [Verbose] > st.time, system_ke (multi_particle_state mpst)
00:00:26 #5850 [Verbose] > )
00:00:26 #5851 [Verbose] > )
00:00:26 #5852 [Verbose] > // |> stream.to_list
00:00:26 #5853 [Verbose] > |> listm'.choose id
00:00:26 #5854 [Verbose] > |> listm'.unzip
00:00:26 #5855 [Verbose] >
00:00:26 #5856 [Verbose] > inl time_ke_ec_x : a i32 _ = time_ke_ec_x |> listm.toArray
00:00:26 #5857 [Verbose] > inl time_ke_ec_y : a i32 _ = time_ke_ec_y |> listm.toArray
00:00:26 #5858 [Verbose] >
00:00:26 #5859 [Verbose] > inl time_ke_rk4_x : a i32 _ = time_ke_rk4_x |> listm.toArray
00:00:26 #5860 [Verbose] > inl time_ke_rk4_y : a i32 _ = time_ke_rk4_y |> listm.toArray
00:00:26 #5861 [Verbose] >
00:00:26 #5862 [Verbose] > "system kinetic energy versus time",
00:00:26 #5863 [Verbose] > "time (s)",
00:00:26 #5864 [Verbose] > "system kinetic energy (j)",
00:00:26 #5865 [Verbose] > ;[[
00:00:26 #5866 [Verbose] > "euler-cromer", time_ke_ec_x, time_ke_ec_y
00:00:26 #5867 [Verbose] > "runge-kutta 4", time_ke_rk4_x, time_ke_rk4_y
00:00:26 #5868 [Verbose] > ]]
00:00:26 #5869 [Verbose] > Building /tmp/!dotnet-repl/20240320-1229-5349-4975-49c85d68416c/main.spi
00:00:28 #5870 [Verbose] >
00:00:28 #5871 [Verbose] > ╭─[ 1.55s - return value ]─────────────────────────────────────────────────────╮
00:00:28 #5872 [Verbose] > │ <svg width="640" height="480" viewBox="0 0 640 480" │
00:00:28 #5873 [Verbose] > │ xmlns="http://www.w3.org/2000/svg"> │
00:00:28 #5874 [Verbose] > │ <rect x="0" y="0" width="640" height="480" opacity="1" fill="#141414" │
00:00:28 #5875 [Verbose] > │ stroke="none"/> │
00:00:28 #5876 [Verbose] > │ <text x="320" y="10" dy="0.76em" text-anchor="middle" │
00:00:28 #5877 [Verbose] > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1" │
00:00:28 #5878 [Verbose] > │ fill="#FFFFFF"> │
00:00:28 #5879 [Verbose] > │ system kinetic energy versus time │
00:00:28 #5880 [Verbose] > │ </text> │
00:00:28 #5881 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="59" y1="424" x2="59" │
00:00:28 #5882 [Verbose] > │ y2="75"/> │
00:00:28 #5883 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" y1="424" x2="69" │
00:00:28 #5884 [Verbose] > │ y2="75"/> │
00:00:28 #5885 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="79" y1="424" x2="79" │
00:00:28 #5886 [Verbose] > │ y2="75"/> │
00:00:28 #5887 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="89" y1="424" x2="89" │
00:00:28 #5888 [Verbose] > │ y2="75"/> │
00:00:28 #5889 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1... │
00:00:28 #5890 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:28 #5891 [Verbose] >
00:00:28 #5892 [Verbose] > ╭─[ 1.56s - stdout ]───────────────────────────────────────────────────────────╮
00:00:28 #5893 [Verbose] > │ type UH0 = │
00:00:28 #5894 [Verbose] > │ | UH0_0 of float * float * float * float * float * float * float * float │
00:00:28 #5895 [Verbose] > │ * float * (unit -> UH0) │
00:00:28 #5896 [Verbose] > │ | UH0_1 │
00:00:28 #5897 [Verbose] > │ and UH1 = │
00:00:28 #5898 [Verbose] > │ | UH1_0 of float * float * float * float * float * float * float * float │
00:00:28 #5899 [Verbose] > │ * float * (unit -> UH1) │
00:00:28 #5900 [Verbose] > │ | UH1_1 │
00:00:28 #5901 [Verbose] > │ and [<Struct>] US0 = │
00:00:28 #5902 [Verbose] > │ | US0_0 of f0_0 : UH0 │
00:00:28 #5903 [Verbose] > │ | US0_1 of f1_0 : (unit -> UH0) │
00:00:28 #5904 [Verbose] > │ and Mut0 = {mutable l0 : US0} │
00:00:28 #5905 [Verbose] > │ and UH2 = │
00:00:28 #5906 [Verbose] > │ | UH2_0 of float * float * float * float * float * float * float * float │
00:00:28 #5907 [Verbose] > │ * float * float * float * float * float * float * float * float * float * │
00:00:28 #5908 [Verbose] > │ float * (unit -> UH2) │
00:00:28 #5909 [Verbose] > │ | UH2_1 │
00:00:28 #5910 [Verbose] > │ and UH3 = │
00:00:28 #5911 [Verbose] > │ | UH3_0 of int32 * float * float * float * float * float * float * float │
00:00:28 #5912 [Verbose] > │ * float * float * (unit -> UH3) │
00:00:28 #5913 [Verbose] > │ | UH3_1 │
00:00:28 #5914 [Verbose] > │ and [<Struct>] US1 = │
00:00:28 #5915 [Verbose] > │ | US1_0 │
00:00:28 #5916 [Verbose] > │ | US1_1 of f1_0 : (struct (float * float * float * float * float * float │
00:00:28 #5917 [Verbose] > │ * float * float * float) -> struct (float * float * float)) │
00:00:28 #5918 [Verbose] > │ and [<Struct>] US2 = │
00:00:28 #5919 [Verbose] > │ | US2_0 │
00:00:28 #5920 [Verbose] > │ | US2_1 of f1_0 : float * f1_1 : float * f1_2 : float * f1_3 : float * │
00:00:28 #5921 [Verbose] > │ f1_4 : float * f1_5 : float * f1_6 : float * f1_7 : float * f1_8 : float │
00:00:28 #5922 [Verbose] > │ and UH4 = │
00:00:28 #5923 [Verbose] > │ | UH4_0 of UH0 * UH4 │
00:00:28 #5924 [Verbose] > │ | UH4_1 │
00:00:28 #5925 [Verbose] > │ and UH5 = │
00:00:28 #5926 [Verbose] > │ | UH5_0 of int32 * UH5 │
00:00:28 #5927 [Verbose] > │ | UH5_1 │
00:00:28 #5928 [Verbose] > │ and [<Struct>] US3 = │
00:00:28 #5929 [Verbose] > │ | US3_0 │
00:00:28 #5930 [Verbose] > │ | US3_1 of f1_0 : float * f1_1 : float │
00:00:28 #5931 [Verbose] > │ and UH6 = │
00:00:28 #5932 [Verbose] > │ | UH6_0 of US3 * UH6 │
00:00:28 #5933 [Verbose] > │ | UH6_1 │
00:00:28 #5934 [Verbose] > │ and UH7 = │
00:00:28 #5935 [Verbose] > │ | UH7_0 of float * (unit -> UH7) │
00:00:28 #5936 [Verbose] > │ | UH7_1 │
00:00:28 #5937 [Verbose] > │ and UH8 = │
00:00:28 #5938 [Verbose] > │ | UH8_0 of float * float * UH8 │
00:00:28 #5939 [Verbose] > │ | UH8_1 │
00:00:28 #5940 [Verbose] > │ and UH9 = │
00:00:28 #5941 [Verbose] > │ | UH9_0 of float * UH9 │
00:00:28 #5942 [Verbose] > │ | UH9_1 │
00:00:28 #5943 [Verbose] > │ let rec closure3 (v0 : float, v1 : (unit -> UH0), v2 : (unit -> UH1)) () : │
00:00:28 #5944 [Verbose] > │ UH0 = │
00:00:28 #5945 [Verbose] > │ let v3 : UH1 = v2 () │
00:00:28 #5946 [Verbose] > │ let v4 : UH0 = v1 () │
00:00:28 #5947 [Verbose] > │ match v3 with │
00:00:28 #5948 [Verbose] > │ | UH1_0(v5, v6, v7, v8, v9, v10, v11, v12, v13, v14) -> (* StreamCons *) │
00:00:28 #5949 [Verbose] > │ match v4 with │
00:00:28 #5950 [Verbose] > │ | UH0_0(v15, v16, v17, v18, v19, v20, v21, v22, v23, v24) -> (* │
00:00:28 #5951 [Verbose] > │ StreamCons *) │
00:00:28 #5952 [Verbose] > │ let v25 : float = v10 * v0 │
00:00:28 #5953 [Verbose] > │ let v26 : float = v20 + v25 │
00:00:28 #5954 [Verbose] > │ let v27 : float = v0 * v7 │
00:00:28 #5955 [Verbose] > │ let v28 : float = v0 * v8 │
00:00:28 #5956 [Verbose] > │ let v29 : float = v0 * v9 │
00:00:28 #5957 [Verbose] > │ let v30 : float = v17 + v27 │
00:00:28 #5958 [Verbose] > │ let v31 : float = v18 + v28 │
00:00:28 #5959 [Verbose] > │ let v32 : float = v19 + v29 │
00:00:28 #5960 [Verbose] > │ let v33 : float = v0 * v11 │
00:00:28 #5961 [Verbose] > │ let v34 : float = v0 * v12 │
00:00:28 #5962 [Verbose] > │ let v35 : float = v0 * v13 │
00:00:28 #5963 [Verbose] > │ let v36 : float = v21 + v33 │
00:00:28 #5964 [Verbose] > │ let v37 : float = v22 + v34 │
00:00:28 #5965 [Verbose] > │ let v38 : float = v23 + v35 │
00:00:28 #5966 [Verbose] > │ let v39 : (unit -> UH0) = closure3(v0, v24, v14) │
00:00:28 #5967 [Verbose] > │ UH0_0(v15, v16, v30, v31, v32, v26, v36, v37, v38, v39) │
00:00:28 #5968 [Verbose] > │ | UH0_1 -> (* StreamNil *) │
00:00:28 #5969 [Verbose] > │ UH0_1 │
00:00:28 #5970 [Verbose] > │ | UH1_1 -> (* StreamNil *) │
00:00:28 #5971 [Verbose] > │ UH0_1 │
00:00:28 #5972 [Verbose] > │ and closure4 (v0 : UH0) () : UH0 = │
00:00:28 #5973 [Verbose] > │ v0 │
00:00:28 #5974 [Verbose] > │ and closure5 (v0 : UH0, v1 : Mut0) () : UH0 = │
00:00:28 #5975 [Verbose] > │ let v2 : US0 = v1.l0 │
00:00:28 #5976 [Verbose] > │ match v2 with │
00:00:28 #5977 [Verbose] > │ | US0_0(v3) -> (* Computed *) │
00:00:28 #5978 [Verbose] > │ v3 │
00:00:28 #5979 [Verbose] > │ | US0_1(v4) -> (* NotComputed *) │
00:00:28 #5980 [Verbose] > │ let v5 : UH0 = v4 () │
00:00:28 #5981 [Verbose] > │ let v20 : UH0 = │
00:00:28 #5982 [Verbose] > │ match v5 with │
00:00:28 #5983 [Verbose] > │ | UH0_0(v7, v8, v9, v10, v11, v12, v13, v14, v15, v16) -> (* │
00:00:28 #5984 [Verbose] > │ StreamCons *) │
00:00:28 #5985 [Verbose] > │ let v17 : (unit -> UH0) = method1(v0, v16) │
00:00:28 #5986 [Verbose] > │ UH0_0(v7, v8, v9, v10, v11, v12, v13, v14, v15, v17) │
00:00:28 #5987 [Verbose] > │ | UH0_1 -> (* StreamNil *) │
00:00:28 #5988 [Verbose] > │ UH0_1 │
00:00:28 #5989 [Verbose] > │ let v21 : US0 = US0_0(v20) │
00:00:28 #5990 [Verbose] > │ v1.l0 <- v21 │
00:00:28 #5991 [Verbose] > │ v20 │
00:00:28 #5992 [Verbose] > │ and method1 (v0 : UH0, v1 : (unit -> UH0)) : (unit -> UH0) = │
00:00:28 #5993 [Verbose] > │ let v2 : US0 = US0_1(v1) │
00:00:28 #5994 [Verbose] > │ let v3 : Mut0 = {l0 = v2} : Mut0 │
00:00:28 #5995 [Verbose] > │ closure5(v0, v3) │
00:00:28 #5996 [Verbose] > │ and closure6 (v0 : (unit -> UH0), v1 : (unit -> UH0)) () : UH2 = │
00:00:28 #5997 [Verbose] > │ let v2 : UH0 = v1 () │
00:00:28 #5998 [Verbose] > │ let v3 : UH0 = v0 () │
00:00:28 #5999 [Verbose] > │ match v2 with │
00:00:28 #6000 [Verbose] > │ | UH0_0(v4, v5, v6, v7, v8, v9, v10, v11, v12, v13) -> (* StreamCons *) │
00:00:28 #6001 [Verbose] > │ match v3 with │
00:00:28 #6002 [Verbose] > │ | UH0_0(v14, v15, v16, v17, v18, v19, v20, v21, v22, v23) -> (* │
00:00:28 #6003 [Verbose] > │ StreamCons *) │
00:00:28 #6004 [Verbose] > │ let v24 : (unit -> UH2) = closure6(v23, v13) │
00:00:28 #6005 [Verbose] > │ UH2_0(v4, v5, v6, v7, v8, v9, v10, v11, v12, v14, v15, v16, v17, │
00:00:28 #6006 [Verbose] > │ v18, v19, v20, v21, v22, v24) │
00:00:28 #6007 [Verbose] > │ | UH0_1 -> (* StreamNil *) │
00:00:28 #6008 [Verbose] > │ UH2_1 │
00:00:28 #6009 [Verbose] > │ | UH0_1 -> (* StreamNil *) │
00:00:28 #6010 [Verbose] > │ UH2_1 │
00:00:28 #6011 [Verbose] > │ and closure7 (v0 : UH0) () : UH0 = │
00:00:28 #6012 [Verbose] > │ v0 │
00:00:28 #6013 [Verbose] > │ and method2 (v0 : float, v1 : UH2, v2 : UH0) : UH0 = │
00:00:28 #6014 [Verbose] > │ match v1 with │
00:00:28 #6015 [Verbose] > │ | UH2_0(v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, │
00:00:28 #6016 [Verbose] > │ v17, v18, v19, v20, v21) -> (* StreamCons *) │
00:00:28 #6017 [Verbose] > │ let v22 : UH2 = v21 () │
00:00:28 #6018 [Verbose] > │ let v23 : UH0 = method2(v0, v22, v2) │
00:00:28 #6019 [Verbose] > │ let v24 : float = v0 * v18 │
00:00:28 #6020 [Verbose] > │ let v25 : float = v0 * v19 │
00:00:28 #6021 [Verbose] > │ let v26 : float = v0 * v20 │
00:00:28 #6022 [Verbose] > │ let v27 : float = v5 + v24 │
00:00:28 #6023 [Verbose] > │ let v28 : float = v6 + v25 │
00:00:28 #6024 [Verbose] > │ let v29 : float = v7 + v26 │
00:00:28 #6025 [Verbose] > │ let v30 : (unit -> UH0) = closure7(v23) │
00:00:28 #6026 [Verbose] > │ UH0_0(v12, v13, v27, v28, v29, v17, v18, v19, v20, v30) │
00:00:28 #6027 [Verbose] > │ | UH2_1 -> (* StreamNil *) │
00:00:28 #6028 [Verbose] > │ v2 │
00:00:28 #6029 [Verbose] > │ and closure2 (v0 : float, v1 : (UH0 -> UH1)) (v2 : UH0) : UH0 = │
00:00:28 #6030 [Verbose] > │ let v3 : UH1 = v1 v2 │
00:00:28 #6031 [Verbose] > │ let v45 : UH0 = │
00:00:28 #6032 [Verbose] > │ match v3 with │
00:00:28 #6033 [Verbose] > │ | UH1_0(v4, v5, v6, v7, v8, v9, v10, v11, v12, v13) -> (* StreamCons │
00:00:28 #6034 [Verbose] > │ *) │
00:00:28 #6035 [Verbose] > │ match v2 with │
00:00:28 #6036 [Verbose] > │ | UH0_0(v14, v15, v16, v17, v18, v19, v20, v21, v22, v23) -> (* │
00:00:28 #6037 [Verbose] > │ StreamCons *) │
00:00:28 #6038 [Verbose] > │ let v24 : float = v9 * v0 │
00:00:28 #6039 [Verbose] > │ let v25 : float = v19 + v24 │
00:00:28 #6040 [Verbose] > │ let v26 : float = v0 * v6 │
00:00:28 #6041 [Verbose] > │ let v27 : float = v0 * v7 │
00:00:28 #6042 [Verbose] > │ let v28 : float = v0 * v8 │
00:00:28 #6043 [Verbose] > │ let v29 : float = v16 + v26 │
00:00:28 #6044 [Verbose] > │ let v30 : float = v17 + v27 │
00:00:28 #6045 [Verbose] > │ let v31 : float = v18 + v28 │
00:00:28 #6046 [Verbose] > │ let v32 : float = v0 * v10 │
00:00:28 #6047 [Verbose] > │ let v33 : float = v0 * v11 │
00:00:28 #6048 [Verbose] > │ let v34 : float = v0 * v12 │
00:00:28 #6049 [Verbose] > │ let v35 : float = v20 + v32 │
00:00:28 #6050 [Verbose] > │ let v36 : float = v21 + v33 │
00:00:28 #6051 [Verbose] > │ let v37 : float = v22 + v34 │
00:00:28 #6052 [Verbose] > │ let v38 : (unit -> UH0) = closure3(v0, v23, v13) │
00:00:28 #6053 [Verbose] > │ UH0_0(v14, v15, v29, v30, v31, v25, v35, v36, v37, v38) │
00:00:28 #6054 [Verbose] > │ | UH0_1 -> (* StreamNil *) │
00:00:28 #6055 [Verbose] > │ UH0_1 │
00:00:28 #6056 [Verbose] > │ | UH1_1 -> (* StreamNil *) │
00:00:28 #6057 [Verbose] > │ UH0_1 │
00:00:28 #6058 [Verbose] > │ let v46 : (unit -> UH0) = closure4(v45) │
00:00:28 #6059 [Verbose] > │ let v47 : (unit -> UH0) = method1(v45, v46) │
00:00:28 #6060 [Verbose] > │ let v48 : UH0 = v47 () │
00:00:28 #6061 [Verbose] > │ let v76 : UH2 = │
00:00:28 #6062 [Verbose] > │ match v2 with │
00:00:28 #6063 [Verbose] > │ | UH0_0(v49, v50, v51, v52, v53, v54, v55, v56, v57, v58) -> (* │
00:00:28 #6064 [Verbose] > │ StreamCons *) │
00:00:28 #6065 [Verbose] > │ match v48 with │
00:00:28 #6066 [Verbose] > │ | UH0_0(v59, v60, v61, v62, v63, v64, v65, v66, v67, v68) -> (* │
00:00:28 #6067 [Verbose] > │ StreamCons *) │
00:00:28 #6068 [Verbose] > │ let v69 : (unit -> UH2) = closure6(v68, v58) │
00:00:28 #6069 [Verbose] > │ UH2_0(v49, v50, v51, v52, v53, v54, v55, v56, v57, v59, v60, │
00:00:28 #6070 [Verbose] > │ v61, v62, v63, v64, v65, v66, v67, v69) │
00:00:28 #6071 [Verbose] > │ | UH0_1 -> (* StreamNil *) │
00:00:28 #6072 [Verbose] > │ UH2_1 │
00:00:28 #6073 [Verbose] > │ | UH0_1 -> (* StreamNil *) │
00:00:28 #6074 [Verbose] > │ UH2_1 │
00:00:28 #6075 [Verbose] > │ let v77 : UH0 = UH0_1 │
00:00:28 #6076 [Verbose] > │ let v78 : UH0 = method2(v0, v76, v77) │
00:00:28 #6077 [Verbose] > │ v78 │
00:00:28 #6078 [Verbose] > │ and closure1 (v0 : float) (v1 : (UH0 -> UH1)) : (UH0 -> UH0) = │
00:00:28 #6079 [Verbose] > │ closure2(v0, v1) │
00:00:28 #6080 [Verbose] > │ and closure0 () (v0 : float) : ((UH0 -> UH1) -> (UH0 -> UH0)) = │
00:00:28 #6081 [Verbose] > │ closure1(v0) │
00:00:28 #6082 [Verbose] > │ and closure9 (v0 : UH3) () : UH3 = │
00:00:28 #6083 [Verbose] > │ v0 │
00:00:28 #6084 [Verbose] > │ and method3 (v0 : UH0, v1 : UH3, v2 : int32) : struct (UH3 * int32) = │
00:00:28 #6085 [Verbose] > │ match v0 with │
00:00:28 #6086 [Verbose] > │ | UH0_0(v3, v4, v5, v6, v7, v8, v9, v10, v11, v12) -> (* StreamCons *) │
00:00:28 #6087 [Verbose] > │ let v13 : int32 = v2 + 1 │
00:00:28 #6088 [Verbose] > │ let v14 : UH0 = v12 () │
00:00:28 #6089 [Verbose] > │ let v15 : (unit -> UH3) = closure9(v1) │
00:00:28 #6090 [Verbose] > │ let v16 : UH3 = UH3_0(v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v15) │
00:00:28 #6091 [Verbose] > │ method3(v14, v16, v13) │
00:00:28 #6092 [Verbose] > │ | UH0_1 -> (* StreamNil *) │
00:00:28 #6093 [Verbose] > │ struct (v1, v2) │
00:00:28 #6094 [Verbose] > │ and closure10 (v0 : UH3) () : UH3 = │
00:00:28 #6095 [Verbose] > │ v0 │
00:00:28 #6096 [Verbose] > │ and method4 (v0 : UH3, v1 : UH3) : UH3 = │
00:00:28 #6097 [Verbose] > │ match v0 with │
00:00:28 #6098 [Verbose] > │ | UH3_0(v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12) -> (* StreamCons │
00:00:28 #6099 [Verbose] > │ *) │
00:00:28 #6100 [Verbose] > │ let v13 : UH3 = v12 () │
00:00:28 #6101 [Verbose] > │ let v14 : (unit -> UH3) = closure10(v1) │
00:00:28 #6102 [Verbose] > │ let v15 : UH3 = UH3_0(v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v14) │
00:00:28 #6103 [Verbose] > │ method4(v13, v15) │
00:00:28 #6104 [Verbose] > │ | UH3_1 -> (* StreamNil *) │
00:00:28 #6105 [Verbose] > │ v1 │
00:00:28 #6106 [Verbose] > │ and method6 (v0 : int32, v1 : UH0) : US2 = │
00:00:28 #6107 [Verbose] > │ match v1 with │
00:00:28 #6108 [Verbose] > │ | UH0_0(v2, v3, v4, v5, v6, v7, v8, v9, v10, v11) -> (* StreamCons *) │
00:00:28 #6109 [Verbose] > │ let v12 : bool = v0 <= 0 │
00:00:28 #6110 [Verbose] > │ if v12 then │
00:00:28 #6111 [Verbose] > │ US2_1(v2, v3, v4, v5, v6, v7, v8, v9, v10) │
00:00:28 #6112 [Verbose] > │ else │
00:00:28 #6113 [Verbose] > │ let v14 : int32 = v0 - 1 │
00:00:28 #6114 [Verbose] > │ let v15 : UH0 = v11 () │
00:00:28 #6115 [Verbose] > │ method6(v14, v15) │
00:00:28 #6116 [Verbose] > │ | UH0_1 -> (* StreamNil *) │
00:00:28 #6117 [Verbose] > │ US2_0 │
00:00:28 #6118 [Verbose] > │ and closure11 (v0 : float, v1 : float, v2 : float, v3 : float, v4 : float, │
00:00:28 #6119 [Verbose] > │ v5 : float, v6 : float, v7 : float, v8 : float) struct (v9 : float, v10 : │
00:00:28 #6120 [Verbose] > │ float, v11 : float, v12 : float, v13 : float, v14 : float, v15 : float, v16 │
00:00:28 #6121 [Verbose] > │ : float, v17 : float) : struct (float * float * float) = │
00:00:28 #6122 [Verbose] > │ let v18 : float = -1.0 * v2 │
00:00:28 #6123 [Verbose] > │ let v19 : float = -1.0 * v3 │
00:00:28 #6124 [Verbose] > │ let v20 : float = -1.0 * v4 │
00:00:28 #6125 [Verbose] > │ let v21 : float = v11 + v18 │
00:00:28 #6126 [Verbose] > │ let v22 : float = v12 + v19 │
00:00:28 #6127 [Verbose] > │ let v23 : float = v13 + v20 │
00:00:28 #6128 [Verbose] > │ let v24 : float = v21 * v21 │
00:00:28 #6129 [Verbose] > │ let v25 : float = v22 * v22 │
00:00:28 #6130 [Verbose] > │ let v26 : float = v24 + v25 │
00:00:28 #6131 [Verbose] > │ let v27 : float = v23 * v23 │
00:00:28 #6132 [Verbose] > │ let v28 : float = v26 + v27 │
00:00:28 #6133 [Verbose] > │ let v29 : float = sqrt v28 │
00:00:28 #6134 [Verbose] > │ let v30 : bool = v29 >= 0.06 │
00:00:28 #6135 [Verbose] > │ let v33 : float = │
00:00:28 #6136 [Verbose] > │ if v30 then │
00:00:28 #6137 [Verbose] > │ 0.0 │
00:00:28 #6138 [Verbose] > │ else │
00:00:28 #6139 [Verbose] > │ let v31 : float = v29 - 0.06 │
00:00:28 #6140 [Verbose] > │ let v32 : float = -30.0 * v31 │
00:00:28 #6141 [Verbose] > │ v32 │
00:00:28 #6142 [Verbose] > │ let v34 : float = v33 * v21 │
00:00:28 #6143 [Verbose] > │ let v35 : float = v33 * v22 │
00:00:28 #6144 [Verbose] > │ let v36 : float = v33 * v23 │
00:00:28 #6145 [Verbose] > │ let v37 : float = v34 / v29 │
00:00:28 #6146 [Verbose] > │ let v38 : float = v35 / v29 │
00:00:28 #6147 [Verbose] > │ let v39 : float = v36 / v29 │
00:00:28 #6148 [Verbose] > │ struct (v37, v38, v39) │
00:00:28 #6149 [Verbose] > │ and closure12 () struct (v0 : float, v1 : float, v2 : float, v3 : float, v4 │
00:00:28 #6150 [Verbose] > │ : float, v5 : float, v6 : float, v7 : float, v8 : float) : struct (float * │
00:00:28 #6151 [Verbose] > │ float * float) = │
00:00:28 #6152 [Verbose] > │ struct (0.0, 0.0, 0.0) │
00:00:28 #6153 [Verbose] > │ and closure13 (v0 : UH1) () : UH1 = │
00:00:28 #6154 [Verbose] > │ v0 │
00:00:28 #6155 [Verbose] > │ and method5 (v0 : UH0, v1 : UH3, v2 : UH1) : UH1 = │
00:00:28 #6156 [Verbose] > │ match v1 with │
00:00:28 #6157 [Verbose] > │ | UH3_0(v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13) -> (* StreamCons │
00:00:28 #6158 [Verbose] > │ *) │
00:00:28 #6159 [Verbose] > │ let v14 : UH3 = v13 () │
00:00:28 #6160 [Verbose] > │ let v15 : UH1 = method5(v0, v14, v2) │
00:00:28 #6161 [Verbose] > │ let v16 : bool = v3 = 0 │
00:00:28 #6162 [Verbose] > │ let v52 : US1 = │
00:00:28 #6163 [Verbose] > │ if v16 then │
00:00:28 #6164 [Verbose] > │ let v17 : int32 = 1 │
00:00:28 #6165 [Verbose] > │ let v18 : US2 = method6(v17, v0) │
00:00:28 #6166 [Verbose] > │ match v18 with │
00:00:28 #6167 [Verbose] > │ | US2_0 -> (* None *) │
00:00:28 #6168 [Verbose] > │ US1_0 │
00:00:28 #6169 [Verbose] > │ | US2_1(v19, v20, v21, v22, v23, v24, v25, v26, v27) -> (* │
00:00:28 #6170 [Verbose] > │ Some *) │
00:00:28 #6171 [Verbose] > │ let v28 : (struct (float * float * float * float * float │
00:00:28 #6172 [Verbose] > │ * float * float * float * float) -> struct (float * float * float)) = │
00:00:28 #6173 [Verbose] > │ closure11(v19, v20, v21, v22, v23, v24, v25, v26, v27) │
00:00:28 #6174 [Verbose] > │ US1_1(v28) │
00:00:28 #6175 [Verbose] > │ else │
00:00:28 #6176 [Verbose] > │ let v33 : bool = v3 = 1 │
00:00:28 #6177 [Verbose] > │ if v33 then │
00:00:28 #6178 [Verbose] > │ let v34 : int32 = 0 │
00:00:28 #6179 [Verbose] > │ let v35 : US2 = method6(v34, v0) │
00:00:28 #6180 [Verbose] > │ match v35 with │
00:00:28 #6181 [Verbose] > │ | US2_0 -> (* None *) │
00:00:28 #6182 [Verbose] > │ US1_0 │
00:00:28 #6183 [Verbose] > │ | US2_1(v36, v37, v38, v39, v40, v41, v42, v43, v44) -> │
00:00:28 #6184 [Verbose] > │ (* Some *) │
00:00:28 #6185 [Verbose] > │ let v45 : (struct (float * float * float * float * │
00:00:28 #6186 [Verbose] > │ float * float * float * float * float) -> struct (float * float * float)) = │
00:00:28 #6187 [Verbose] > │ closure11(v36, v37, v38, v39, v40, v41, v42, v43, v44) │
00:00:28 #6188 [Verbose] > │ US1_1(v45) │
00:00:28 #6189 [Verbose] > │ else │
00:00:28 #6190 [Verbose] > │ US1_0 │
00:00:28 #6191 [Verbose] > │ let v56 : (struct (float * float * float * float * float * float * │
00:00:28 #6192 [Verbose] > │ float * float * float) -> struct (float * float * float)) = │
00:00:28 #6193 [Verbose] > │ match v52 with │
00:00:28 #6194 [Verbose] > │ | US1_0 -> (* None *) │
00:00:28 #6195 [Verbose] > │ closure12() │
00:00:28 #6196 [Verbose] > │ | US1_1(v53) -> (* Some *) │
00:00:28 #6197 [Verbose] > │ v53 │
00:00:28 #6198 [Verbose] > │ let struct (v57 : float, v58 : float, v59 : float) = v56 struct (v4, │
00:00:28 #6199 [Verbose] > │ v5, v6, v7, v8, v9, v10, v11, v12) │
00:00:28 #6200 [Verbose] > │ let v60 : float = v57 / v5 │
00:00:28 #6201 [Verbose] > │ let v61 : float = v58 / v5 │
00:00:28 #6202 [Verbose] > │ let v62 : float = v59 / v5 │
00:00:28 #6203 [Verbose] > │ let v63 : (unit -> UH1) = closure13(v15) │
00:00:28 #6204 [Verbose] > │ UH1_0(0.0, 0.0, v10, v11, v12, 1.0, v60, v61, v62, v63) │
00:00:28 #6205 [Verbose] > │ | UH3_1 -> (* StreamNil *) │
00:00:28 #6206 [Verbose] > │ v2 │
00:00:28 #6207 [Verbose] > │ and closure8 () (v0 : UH0) : UH1 = │
00:00:28 #6208 [Verbose] > │ let v1 : UH3 = UH3_1 │
00:00:28 #6209 [Verbose] > │ let v2 : int32 = 0 │
00:00:28 #6210 [Verbose] > │ let struct (v3 : UH3, v4 : int32) = method3(v0, v1, v2) │
00:00:28 #6211 [Verbose] > │ let v5 : UH3 = UH3_1 │
00:00:28 #6212 [Verbose] > │ let v6 : UH3 = method4(v3, v5) │
00:00:28 #6213 [Verbose] > │ let v7 : UH1 = UH1_1 │
00:00:28 #6214 [Verbose] > │ let v8 : UH1 = method5(v0, v6, v7) │
00:00:28 #6215 [Verbose] > │ v8 │
00:00:28 #6216 [Verbose] > │ and method8 (v0 : int32, v1 : int32) : UH5 = │
00:00:28 #6217 [Verbose] > │ let v2 : bool = v1 < v0 │
00:00:28 #6218 [Verbose] > │ if v2 then │
00:00:28 #6219 [Verbose] > │ let v3 : int32 = v1 + 1 │
00:00:28 #6220 [Verbose] > │ let v4 : UH5 = method8(v0, v3) │
00:00:28 #6221 [Verbose] > │ UH5_0(v1, v4) │
00:00:28 #6222 [Verbose] > │ else │
00:00:28 #6223 [Verbose] > │ UH5_1 │
00:00:28 #6224 [Verbose] > │ and closure15 () () : UH0 = │
00:00:28 #6225 [Verbose] > │ UH0_1 │
00:00:28 #6226 [Verbose] > │ and closure14 () () : UH0 = │
00:00:28 #6227 [Verbose] > │ let v0 : (unit -> UH0) = closure15() │
00:00:28 #6228 [Verbose] > │ UH0_0(0.0, 0.16, 1.0, 0.02, 0.0, 0.0, 0.0, 0.0, 0.0, v0) │
00:00:28 #6229 [Verbose] > │ and method9 (v0 : (UH0 -> UH0), v1 : UH5, v2 : UH0) : UH0 = │
00:00:28 #6230 [Verbose] > │ match v1 with │
00:00:28 #6231 [Verbose] > │ | UH5_0(v3, v4) -> (* Cons *) │
00:00:28 #6232 [Verbose] > │ let v5 : (unit -> UH0) = closure4(v2) │
00:00:28 #6233 [Verbose] > │ let v6 : (unit -> UH0) = method1(v2, v5) │
00:00:28 #6234 [Verbose] > │ let v7 : UH0 = v6 () │
00:00:28 #6235 [Verbose] > │ let v8 : UH0 = v0 v7 │
00:00:28 #6236 [Verbose] > │ method9(v0, v4, v8) │
00:00:28 #6237 [Verbose] > │ | UH5_1 -> (* Nil *) │
00:00:28 #6238 [Verbose] > │ v2 │
00:00:28 #6239 [Verbose] > │ and method10 (v0 : UH4, v1 : UH4) : UH4 = │
00:00:28 #6240 [Verbose] > │ match v0 with │
00:00:28 #6241 [Verbose] > │ | UH4_0(v2, v3) -> (* Cons *) │
00:00:28 #6242 [Verbose] > │ let v4 : UH4 = UH4_0(v2, v1) │
00:00:28 #6243 [Verbose] > │ method10(v3, v4) │
00:00:28 #6244 [Verbose] > │ | UH4_1 -> (* Nil *) │
00:00:28 #6245 [Verbose] > │ v1 │
00:00:28 #6246 [Verbose] > │ and method7 (v0 : (UH0 -> UH0), v1 : UH4, v2 : int32) : UH4 = │
00:00:28 #6247 [Verbose] > │ let v3 : int32 = 0 │
00:00:28 #6248 [Verbose] > │ let v4 : UH5 = method8(v2, v3) │
00:00:28 #6249 [Verbose] > │ let v5 : float = 0.0 │
00:00:28 #6250 [Verbose] > │ let v6 : float = 0.16 │
00:00:28 #6251 [Verbose] > │ let v7 : float = 0.0 │
00:00:28 #6252 [Verbose] > │ let v8 : float = 0.0 │
00:00:28 #6253 [Verbose] > │ let v9 : float = 0.0 │
00:00:28 #6254 [Verbose] > │ let v10 : float = 0.0 │
00:00:28 #6255 [Verbose] > │ let v11 : float = 0.2 │
00:00:28 #6256 [Verbose] > │ let v12 : float = 0.0 │
00:00:28 #6257 [Verbose] > │ let v13 : float = 0.0 │
00:00:28 #6258 [Verbose] > │ let v14 : (unit -> UH0) = closure14() │
00:00:28 #6259 [Verbose] > │ let v15 : UH0 = UH0_0(v5, v6, v7, v8, v9, v10, v11, v12, v13, v14) │
00:00:28 #6260 [Verbose] > │ let v16 : UH0 = method9(v0, v4, v15) │
00:00:28 #6261 [Verbose] > │ let v17 : int32 = 0 │
00:00:28 #6262 [Verbose] > │ let v18 : US2 = method6(v17, v16) │
00:00:28 #6263 [Verbose] > │ let v30 : bool = │
00:00:28 #6264 [Verbose] > │ match v18 with │
00:00:28 #6265 [Verbose] > │ | US2_0 -> (* None *) │
00:00:28 #6266 [Verbose] > │ false │
00:00:28 #6267 [Verbose] > │ | US2_1(v19, v20, v21, v22, v23, v24, v25, v26, v27) -> (* Some *) │
00:00:28 #6268 [Verbose] > │ let v28 : bool = v24 <= 10.0 │
00:00:28 #6269 [Verbose] > │ v28 │
00:00:28 #6270 [Verbose] > │ if v30 then │
00:00:28 #6271 [Verbose] > │ let v31 : UH4 = UH4_0(v16, v1) │
00:00:28 #6272 [Verbose] > │ let v32 : int32 = v2 + 1 │
00:00:28 #6273 [Verbose] > │ method7(v0, v31, v32) │
00:00:28 #6274 [Verbose] > │ else │
00:00:28 #6275 [Verbose] > │ let v34 : UH4 = UH4_1 │
00:00:28 #6276 [Verbose] > │ method10(v1, v34) │
00:00:28 #6277 [Verbose] > │ and closure16 (v0 : UH7) () : UH7 = │
00:00:28 #6278 [Verbose] > │ v0 │
00:00:28 #6279 [Verbose] > │ and method12 (v0 : UH0, v1 : UH7) : UH7 = │
00:00:28 #6280 [Verbose] > │ match v0 with │
00:00:28 #6281 [Verbose] > │ | UH0_0(v2, v3, v4, v5, v6, v7, v8, v9, v10, v11) -> (* StreamCons *) │
00:00:28 #6282 [Verbose] > │ let v12 : UH0 = v11 () │
00:00:28 #6283 [Verbose] > │ let v13 : UH7 = method12(v12, v1) │
00:00:28 #6284 [Verbose] > │ let v14 : float = v8 * v8 │
00:00:28 #6285 [Verbose] > │ let v15 : float = v9 * v9 │
00:00:28 #6286 [Verbose] > │ let v16 : float = v14 + v15 │
00:00:28 #6287 [Verbose] > │ let v17 : float = v10 * v10 │
00:00:28 #6288 [Verbose] > │ let v18 : float = v16 + v17 │
00:00:28 #6289 [Verbose] > │ let v19 : float = sqrt v18 │
00:00:28 #6290 [Verbose] > │ let v20 : float = 0.5 * v3 │
00:00:28 #6291 [Verbose] > │ let v21 : float = v19 ** 2.0 │
00:00:28 #6292 [Verbose] > │ let v22 : float = v20 * v21 │
00:00:28 #6293 [Verbose] > │ let v23 : (unit -> UH7) = closure16(v13) │
00:00:28 #6294 [Verbose] > │ UH7_0(v22, v23) │
00:00:28 #6295 [Verbose] > │ | UH0_1 -> (* StreamNil *) │
00:00:28 #6296 [Verbose] > │ v1 │
00:00:28 #6297 [Verbose] > │ and method13 (v0 : UH7, v1 : float) : float = │
00:00:28 #6298 [Verbose] > │ match v0 with │
00:00:28 #6299 [Verbose] > │ | UH7_0(v2, v3) -> (* StreamCons *) │
00:00:28 #6300 [Verbose] > │ let v4 : float = v1 + v2 │
00:00:28 #6301 [Verbose] > │ let v5 : UH7 = v3 () │
00:00:28 #6302 [Verbose] > │ method13(v5, v4) │
00:00:28 #6303 [Verbose] > │ | UH7_1 -> (* StreamNil *) │
00:00:28 #6304 [Verbose] > │ v1 │
00:00:28 #6305 [Verbose] > │ and method11 (v0 : UH4, v1 : UH6) : UH6 = │
00:00:28 #6306 [Verbose] > │ match v0 with │
00:00:28 #6307 [Verbose] > │ | UH4_0(v2, v3) -> (* Cons *) │
00:00:28 #6308 [Verbose] > │ let v4 : UH6 = method11(v3, v1) │
00:00:28 #6309 [Verbose] > │ let v5 : int32 = 0 │
00:00:28 #6310 [Verbose] > │ let v6 : US2 = method6(v5, v2) │
00:00:28 #6311 [Verbose] > │ let v23 : US3 = │
00:00:28 #6312 [Verbose] > │ match v6 with │
00:00:28 #6313 [Verbose] > │ | US2_0 -> (* None *) │
00:00:28 #6314 [Verbose] > │ US3_0 │
00:00:28 #6315 [Verbose] > │ | US2_1(v7, v8, v9, v10, v11, v12, v13, v14, v15) -> (* Some *) │
00:00:28 #6316 [Verbose] > │ let v16 : UH7 = UH7_1 │
00:00:28 #6317 [Verbose] > │ let v17 : UH7 = method12(v2, v16) │
00:00:28 #6318 [Verbose] > │ let v18 : float = 0.0 │
00:00:28 #6319 [Verbose] > │ let v19 : float = method13(v17, v18) │
00:00:28 #6320 [Verbose] > │ US3_1(v12, v19) │
00:00:28 #6321 [Verbose] > │ UH6_0(v23, v4) │
00:00:28 #6322 [Verbose] > │ | UH4_1 -> (* Nil *) │
00:00:28 #6323 [Verbose] > │ v1 │
00:00:28 #6324 [Verbose] > │ and method14 (v0 : UH6, v1 : UH8) : UH8 = │
00:00:28 #6325 [Verbose] > │ match v0 with │
00:00:28 #6326 [Verbose] > │ | UH6_0(v2, v3) -> (* Cons *) │
00:00:28 #6327 [Verbose] > │ let v4 : UH8 = method14(v3, v1) │
00:00:28 #6328 [Verbose] > │ match v2 with │
00:00:28 #6329 [Verbose] > │ | US3_0 -> (* None *) │
00:00:28 #6330 [Verbose] > │ v4 │
00:00:28 #6331 [Verbose] > │ | US3_1(v5, v6) -> (* Some *) │
00:00:28 #6332 [Verbose] > │ UH8_0(v5, v6, v4) │
00:00:28 #6333 [Verbose] > │ | UH6_1 -> (* Nil *) │
00:00:28 #6334 [Verbose] > │ v1 │
00:00:28 #6335 [Verbose] > │ and method15 (v0 : UH8, v1 : UH9, v2 : UH9) : struct (UH9 * UH9) = │
00:00:28 #6336 [Verbose] > │ match v0 with │
00:00:28 #6337 [Verbose] > │ | UH8_0(v3, v4, v5) -> (* Cons *) │
00:00:28 #6338 [Verbose] > │ let v6 : UH9 = UH9_0(v3, v1) │
00:00:28 #6339 [Verbose] > │ let v7 : UH9 = UH9_0(v4, v2) │
00:00:28 #6340 [Verbose] > │ method15(v5, v6, v7) │
00:00:28 #6341 [Verbose] > │ | UH8_1 -> (* Nil *) │
00:00:28 #6342 [Verbose] > │ struct (v1, v2) │
00:00:28 #6343 [Verbose] > │ and method16 (v0 : UH9, v1 : UH9) : UH9 = │
00:00:28 #6344 [Verbose] > │ match v0 with │
00:00:28 #6345 [Verbose] > │ | UH9_0(v2, v3) -> (* Cons *) │
00:00:28 #6346 [Verbose] > │ let v4 : UH9 = UH9_0(v2, v1) │
00:00:28 #6347 [Verbose] > │ method16(v3, v4) │
00:00:28 #6348 [Verbose] > │ | UH9_1 -> (* Nil *) │
00:00:28 #6349 [Verbose] > │ v1 │
00:00:28 #6350 [Verbose] > │ and closure20 (v0 : (unit -> UH1), v1 : (unit -> UH1)) () : UH1 = │
00:00:28 #6351 [Verbose] > │ let v2 : UH1 = v1 () │
00:00:28 #6352 [Verbose] > │ let v3 : UH1 = v0 () │
00:00:28 #6353 [Verbose] > │ match v2 with │
00:00:28 #6354 [Verbose] > │ | UH1_0(v4, v5, v6, v7, v8, v9, v10, v11, v12, v13) -> (* StreamCons *) │
00:00:28 #6355 [Verbose] > │ match v3 with │
00:00:28 #6356 [Verbose] > │ | UH1_0(v14, v15, v16, v17, v18, v19, v20, v21, v22, v23) -> (* │
00:00:28 #6357 [Verbose] > │ StreamCons *) │
00:00:28 #6358 [Verbose] > │ let v24 : float = v4 + v14 │
00:00:28 #6359 [Verbose] > │ let v25 : float = v5 + v15 │
00:00:28 #6360 [Verbose] > │ let v26 : float = v9 + v19 │
00:00:28 #6361 [Verbose] > │ let v27 : float = v6 + v16 │
00:00:28 #6362 [Verbose] > │ let v28 : float = v7 + v17 │
00:00:28 #6363 [Verbose] > │ let v29 : float = v8 + v18 │
00:00:28 #6364 [Verbose] > │ let v30 : float = v10 + v20 │
00:00:28 #6365 [Verbose] > │ let v31 : float = v11 + v21 │
00:00:28 #6366 [Verbose] > │ let v32 : float = v12 + v22 │
00:00:28 #6367 [Verbose] > │ let v33 : (unit -> UH1) = closure20(v23, v13) │
00:00:28 #6368 [Verbose] > │ UH1_0(v24, v25, v27, v28, v29, v26, v30, v31, v32, v33) │
00:00:28 #6369 [Verbose] > │ | UH1_1 -> (* StreamNil *) │
00:00:28 #6370 [Verbose] > │ UH1_1 │
00:00:28 #6371 [Verbose] > │ | UH1_1 -> (* StreamNil *) │
00:00:28 #6372 [Verbose] > │ UH1_1 │
00:00:28 #6373 [Verbose] > │ and closure19 (v0 : float, v1 : (UH0 -> UH1)) (v2 : UH0) : UH0 = │
00:00:28 #6374 [Verbose] > │ let v3 : UH1 = v1 v2 │
00:00:28 #6375 [Verbose] > │ let v4 : float = v0 / 2.0 │
00:00:28 #6376 [Verbose] > │ let v46 : UH0 = │
00:00:28 #6377 [Verbose] > │ match v3 with │
00:00:28 #6378 [Verbose] > │ | UH1_0(v5, v6, v7, v8, v9, v10, v11, v12, v13, v14) -> (* │
00:00:28 #6379 [Verbose] > │ StreamCons *) │
00:00:28 #6380 [Verbose] > │ match v2 with │
00:00:28 #6381 [Verbose] > │ | UH0_0(v15, v16, v17, v18, v19, v20, v21, v22, v23, v24) -> (* │
00:00:28 #6382 [Verbose] > │ StreamCons *) │
00:00:28 #6383 [Verbose] > │ let v25 : float = v10 * v4 │
00:00:28 #6384 [Verbose] > │ let v26 : float = v20 + v25 │
00:00:28 #6385 [Verbose] > │ let v27 : float = v4 * v7 │
00:00:28 #6386 [Verbose] > │ let v28 : float = v4 * v8 │
00:00:28 #6387 [Verbose] > │ let v29 : float = v4 * v9 │
00:00:28 #6388 [Verbose] > │ let v30 : float = v17 + v27 │
00:00:28 #6389 [Verbose] > │ let v31 : float = v18 + v28 │
00:00:28 #6390 [Verbose] > │ let v32 : float = v19 + v29 │
00:00:28 #6391 [Verbose] > │ let v33 : float = v4 * v11 │
00:00:28 #6392 [Verbose] > │ let v34 : float = v4 * v12 │
00:00:28 #6393 [Verbose] > │ let v35 : float = v4 * v13 │
00:00:28 #6394 [Verbose] > │ let v36 : float = v21 + v33 │
00:00:28 #6395 [Verbose] > │ let v37 : float = v22 + v34 │
00:00:28 #6396 [Verbose] > │ let v38 : float = v23 + v35 │
00:00:28 #6397 [Verbose] > │ let v39 : (unit -> UH0) = closure3(v4, v24, v14) │
00:00:28 #6398 [Verbose] > │ UH0_0(v15, v16, v30, v31, v32, v26, v36, v37, v38, v39) │
00:00:28 #6399 [Verbose] > │ | UH0_1 -> (* StreamNil *) │
00:00:28 #6400 [Verbose] > │ UH0_1 │
00:00:28 #6401 [Verbose] > │ | UH1_1 -> (* StreamNil *) │
00:00:28 #6402 [Verbose] > │ UH0_1 │
00:00:28 #6403 [Verbose] > │ let v47 : (unit -> UH0) = closure4(v46) │
00:00:28 #6404 [Verbose] > │ let v48 : (unit -> UH0) = method1(v46, v47) │
00:00:28 #6405 [Verbose] > │ let v49 : UH0 = v48 () │
00:00:28 #6406 [Verbose] > │ let v50 : UH1 = v1 v49 │
00:00:28 #6407 [Verbose] > │ let v92 : UH0 = │
00:00:28 #6408 [Verbose] > │ match v50 with │
00:00:28 #6409 [Verbose] > │ | UH1_0(v51, v52, v53, v54, v55, v56, v57, v58, v59, v60) -> (* │
00:00:28 #6410 [Verbose] > │ StreamCons *) │
00:00:28 #6411 [Verbose] > │ match v2 with │
00:00:28 #6412 [Verbose] > │ | UH0_0(v61, v62, v63, v64, v65, v66, v67, v68, v69, v70) -> (* │
00:00:28 #6413 [Verbose] > │ StreamCons *) │
00:00:28 #6414 [Verbose] > │ let v71 : float = v56 * v4 │
00:00:28 #6415 [Verbose] > │ let v72 : float = v66 + v71 │
00:00:28 #6416 [Verbose] > │ let v73 : float = v4 * v53 │
00:00:28 #6417 [Verbose] > │ let v74 : float = v4 * v54 │
00:00:28 #6418 [Verbose] > │ let v75 : float = v4 * v55 │
00:00:28 #6419 [Verbose] > │ let v76 : float = v63 + v73 │
00:00:28 #6420 [Verbose] > │ let v77 : float = v64 + v74 │
00:00:28 #6421 [Verbose] > │ let v78 : float = v65 + v75 │
00:00:28 #6422 [Verbose] > │ let v79 : float = v4 * v57 │
00:00:28 #6423 [Verbose] > │ let v80 : float = v4 * v58 │
00:00:28 #6424 [Verbose] > │ let v81 : float = v4 * v59 │
00:00:28 #6425 [Verbose] > │ let v82 : float = v67 + v79 │
00:00:28 #6426 [Verbose] > │ let v83 : float = v68 + v80 │
00:00:28 #6427 [Verbose] > │ let v84 : float = v69 + v81 │
00:00:28 #6428 [Verbose] > │ let v85 : (unit -> UH0) = closure3(v4, v70, v60) │
00:00:28 #6429 [Verbose] > │ UH0_0(v61, v62, v76, v77, v78, v72, v82, v83, v84, v85) │
00:00:28 #6430 [Verbose] > │ | UH0_1 -> (* StreamNil *) │
00:00:28 #6431 [Verbose] > │ UH0_1 │
00:00:28 #6432 [Verbose] > │ | UH1_1 -> (* StreamNil *) │
00:00:28 #6433 [Verbose] > │ UH0_1 │
00:00:28 #6434 [Verbose] > │ let v93 : (unit -> UH0) = closure4(v92) │
00:00:28 #6435 [Verbose] > │ let v94 : (unit -> UH0) = method1(v92, v93) │
00:00:28 #6436 [Verbose] > │ let v95 : UH0 = v94 () │
00:00:28 #6437 [Verbose] > │ let v96 : UH1 = v1 v95 │
00:00:28 #6438 [Verbose] > │ let v138 : UH0 = │
00:00:28 #6439 [Verbose] > │ match v96 with │
00:00:28 #6440 [Verbose] > │ | UH1_0(v97, v98, v99, v100, v101, v102, v103, v104, v105, v106) -> │
00:00:28 #6441 [Verbose] > │ (* StreamCons *) │
00:00:28 #6442 [Verbose] > │ match v2 with │
00:00:28 #6443 [Verbose] > │ | UH0_0(v107, v108, v109, v110, v111, v112, v113, v114, v115, │
00:00:28 #6444 [Verbose] > │ v116) -> (* StreamCons *) │
00:00:28 #6445 [Verbose] > │ let v117 : float = v102 * v0 │
00:00:28 #6446 [Verbose] > │ let v118 : float = v112 + v117 │
00:00:28 #6447 [Verbose] > │ let v119 : float = v0 * v99 │
00:00:28 #6448 [Verbose] > │ let v120 : float = v0 * v100 │
00:00:28 #6449 [Verbose] > │ let v121 : float = v0 * v101 │
00:00:28 #6450 [Verbose] > │ let v122 : float = v109 + v119 │
00:00:28 #6451 [Verbose] > │ let v123 : float = v110 + v120 │
00:00:28 #6452 [Verbose] > │ let v124 : float = v111 + v121 │
00:00:28 #6453 [Verbose] > │ let v125 : float = v0 * v103 │
00:00:28 #6454 [Verbose] > │ let v126 : float = v0 * v104 │
00:00:28 #6455 [Verbose] > │ let v127 : float = v0 * v105 │
00:00:28 #6456 [Verbose] > │ let v128 : float = v113 + v125 │
00:00:28 #6457 [Verbose] > │ let v129 : float = v114 + v126 │
00:00:28 #6458 [Verbose] > │ let v130 : float = v115 + v127 │
00:00:28 #6459 [Verbose] > │ let v131 : (unit -> UH0) = closure3(v0, v116, v106) │
00:00:28 #6460 [Verbose] > │ UH0_0(v107, v108, v122, v123, v124, v118, v128, v129, v130, │
00:00:28 #6461 [Verbose] > │ v131) │
00:00:28 #6462 [Verbose] > │ | UH0_1 -> (* StreamNil *) │
00:00:28 #6463 [Verbose] > │ UH0_1 │
00:00:28 #6464 [Verbose] > │ | UH1_1 -> (* StreamNil *) │
00:00:28 #6465 [Verbose] > │ UH0_1 │
00:00:28 #6466 [Verbose] > │ let v139 : (unit -> UH0) = closure4(v138) │
00:00:28 #6467 [Verbose] > │ let v140 : (unit -> UH0) = method1(v138, v139) │
00:00:28 #6468 [Verbose] > │ let v141 : UH0 = v140 () │
00:00:28 #6469 [Verbose] > │ let v142 : UH1 = v1 v141 │
00:00:28 #6470 [Verbose] > │ let v143 : float = v0 / 6.0 │
00:00:28 #6471 [Verbose] > │ let v180 : UH1 = │
00:00:28 #6472 [Verbose] > │ match v3 with │
00:00:28 #6473 [Verbose] > │ | UH1_0(v144, v145, v146, v147, v148, v149, v150, v151, v152, v153) │
00:00:28 #6474 [Verbose] > │ -> (* StreamCons *) │
00:00:28 #6475 [Verbose] > │ match v50 with │
00:00:28 #6476 [Verbose] > │ | UH1_0(v154, v155, v156, v157, v158, v159, v160, v161, v162, │
00:00:28 #6477 [Verbose] > │ v163) -> (* StreamCons *) │
00:00:28 #6478 [Verbose] > │ let v164 : float = v144 + v154 │
00:00:28 #6479 [Verbose] > │ let v165 : float = v145 + v155 │
00:00:28 #6480 [Verbose] > │ let v166 : float = v149 + v159 │
00:00:28 #6481 [Verbose] > │ let v167 : float = v146 + v156 │
00:00:28 #6482 [Verbose] > │ let v168 : float = v147 + v157 │
00:00:28 #6483 [Verbose] > │ let v169 : float = v148 + v158 │
00:00:28 #6484 [Verbose] > │ let v170 : float = v150 + v160 │
00:00:28 #6485 [Verbose] > │ let v171 : float = v151 + v161 │
00:00:28 #6486 [Verbose] > │ let v172 : float = v152 + v162 │
00:00:28 #6487 [Verbose] > │ let v173 : (unit -> UH1) = closure20(v163, v153) │
00:00:28 #6488 [Verbose] > │ UH1_0(v164, v165, v167, v168, v169, v166, v170, v171, v172, │
00:00:28 #6489 [Verbose] > │ v173) │
00:00:28 #6490 [Verbose] > │ | UH1_1 -> (* StreamNil *) │
00:00:28 #6491 [Verbose] > │ UH1_1 │
00:00:28 #6492 [Verbose] > │ | UH1_1 -> (* StreamNil *) │
00:00:28 #6493 [Verbose] > │ UH1_1 │
00:00:28 #6494 [Verbose] > │ let v217 : UH1 = │
00:00:28 #6495 [Verbose] > │ match v180 with │
00:00:28 #6496 [Verbose] > │ | UH1_0(v181, v182, v183, v184, v185, v186, v187, v188, v189, v190) │
00:00:28 #6497 [Verbose] > │ -> (* StreamCons *) │
00:00:28 #6498 [Verbose] > │ match v50 with │
00:00:28 #6499 [Verbose] > │ | UH1_0(v191, v192, v193, v194, v195, v196, v197, v198, v199, │
00:00:28 #6500 [Verbose] > │ v200) -> (* StreamCons *) │
00:00:28 #6501 [Verbose] > │ let v201 : float = v181 + v191 │
00:00:28 #6502 [Verbose] > │ let v202 : float = v182 + v192 │
00:00:28 #6503 [Verbose] > │ let v203 : float = v186 + v196 │
00:00:28 #6504 [Verbose] > │ let v204 : float = v183 + v193 │
00:00:28 #6505 [Verbose] > │ let v205 : float = v184 + v194 │
00:00:28 #6506 [Verbose] > │ let v206 : float = v185 + v195 │
00:00:28 #6507 [Verbose] > │ let v207 : float = v187 + v197 │
00:00:28 #6508 [Verbose] > │ let v208 : float = v188 + v198 │
00:00:28 #6509 [Verbose] > │ let v209 : float = v189 + v199 │
00:00:28 #6510 [Verbose] > │ let v210 : (unit -> UH1) = closure20(v200, v190) │
00:00:28 #6511 [Verbose] > │ UH1_0(v201, v202, v204, v205, v206, v203, v207, v208, v209, │
00:00:28 #6512 [Verbose] > │ v210) │
00:00:28 #6513 [Verbose] > │ | UH1_1 -> (* StreamNil *) │
00:00:28 #6514 [Verbose] > │ UH1_1 │
00:00:28 #6515 [Verbose] > │ | UH1_1 -> (* StreamNil *) │
00:00:28 #6516 [Verbose] > │ UH1_1 │
00:00:28 #6517 [Verbose] > │ let v254 : UH1 = │
00:00:28 #6518 [Verbose] > │ match v217 with │
00:00:28 #6519 [Verbose] > │ | UH1_0(v218, v219, v220, v221, v222, v223, v224, v225, v226, v227) │
00:00:28 #6520 [Verbose] > │ -> (* StreamCons *) │
00:00:28 #6521 [Verbose] > │ match v96 with │
00:00:28 #6522 [Verbose] > │ | UH1_0(v228, v229, v230, v231, v232, v233, v234, v235, v236, │
00:00:28 #6523 [Verbose] > │ v237) -> (* StreamCons *) │
00:00:28 #6524 [Verbose] > │ let v238 : float = v218 + v228 │
00:00:28 #6525 [Verbose] > │ let v239 : float = v219 + v229 │
00:00:28 #6526 [Verbose] > │ let v240 : float = v223 + v233 │
00:00:28 #6527 [Verbose] > │ let v241 : float = v220 + v230 │
00:00:28 #6528 [Verbose] > │ let v242 : float = v221 + v231 │
00:00:28 #6529 [Verbose] > │ let v243 : float = v222 + v232 │
00:00:28 #6530 [Verbose] > │ let v244 : float = v224 + v234 │
00:00:28 #6531 [Verbose] > │ let v245 : float = v225 + v235 │
00:00:28 #6532 [Verbose] > │ let v246 : float = v226 + v236 │
00:00:28 #6533 [Verbose] > │ let v247 : (unit -> UH1) = closure20(v237, v227) │
00:00:28 #6534 [Verbose] > │ UH1_0(v238, v239, v241, v242, v243, v240, v244, v245, v246, │
00:00:28 #6535 [Verbose] > │ v247) │
00:00:28 #6536 [Verbose] > │ | UH1_1 -> (* StreamNil *) │
00:00:28 #6537 [Verbose] > │ UH1_1 │
00:00:28 #6538 [Verbose] > │ | UH1_1 -> (* StreamNil *) │
00:00:28 #6539 [Verbose] > │ UH1_1 │
00:00:28 #6540 [Verbose] > │ let v291 : UH1 = │
00:00:28 #6541 [Verbose] > │ match v254 with │
00:00:28 #6542 [Verbose] > │ | UH1_0(v255, v256, v257, v258, v259, v260, v261, v262, v263, v264) │
00:00:28 #6543 [Verbose] > │ -> (* StreamCons *) │
00:00:28 #6544 [Verbose] > │ match v96 with │
00:00:28 #6545 [Verbose] > │ | UH1_0(v265, v266, v267, v268, v269, v270, v271, v272, v273, │
00:00:28 #6546 [Verbose] > │ v274) -> (* StreamCons *) │
00:00:28 #6547 [Verbose] > │ let v275 : float = v255 + v265 │
00:00:28 #6548 [Verbose] > │ let v276 : float = v256 + v266 │
00:00:28 #6549 [Verbose] > │ let v277 : float = v260 + v270 │
00:00:28 #6550 [Verbose] > │ let v278 : float = v257 + v267 │
00:00:28 #6551 [Verbose] > │ let v279 : float = v258 + v268 │
00:00:28 #6552 [Verbose] > │ let v280 : float = v259 + v269 │
00:00:28 #6553 [Verbose] > │ let v281 : float = v261 + v271 │
00:00:28 #6554 [Verbose] > │ let v282 : float = v262 + v272 │
00:00:28 #6555 [Verbose] > │ let v283 : float = v263 + v273 │
00:00:28 #6556 [Verbose] > │ let v284 : (unit -> UH1) = closure20(v274, v264) │
00:00:28 #6557 [Verbose] > │ UH1_0(v275, v276, v278, v279, v280, v277, v281, v282, v283, │
00:00:28 #6558 [Verbose] > │ v284) │
00:00:28 #6559 [Verbose] > │ | UH1_1 -> (* StreamNil *) │
00:00:28 #6560 [Verbose] > │ UH1_1 │
00:00:28 #6561 [Verbose] > │ | UH1_1 -> (* StreamNil *) │
00:00:28 #6562 [Verbose] > │ UH1_1 │
00:00:28 #6563 [Verbose] > │ let v328 : UH1 = │
00:00:28 #6564 [Verbose] > │ match v291 with │
00:00:28 #6565 [Verbose] > │ | UH1_0(v292, v293, v294, v295, v296, v297, v298, v299, v300, v301) │
00:00:28 #6566 [Verbose] > │ -> (* StreamCons *) │
00:00:28 #6567 [Verbose] > │ match v142 with │
00:00:28 #6568 [Verbose] > │ | UH1_0(v302, v303, v304, v305, v306, v307, v308, v309, v310, │
00:00:28 #6569 [Verbose] > │ v311) -> (* StreamCons *) │
00:00:28 #6570 [Verbose] > │ let v312 : float = v292 + v302 │
00:00:28 #6571 [Verbose] > │ let v313 : float = v293 + v303 │
00:00:28 #6572 [Verbose] > │ let v314 : float = v297 + v307 │
00:00:28 #6573 [Verbose] > │ let v315 : float = v294 + v304 │
00:00:28 #6574 [Verbose] > │ let v316 : float = v295 + v305 │
00:00:28 #6575 [Verbose] > │ let v317 : float = v296 + v306 │
00:00:28 #6576 [Verbose] > │ let v318 : float = v298 + v308 │
00:00:28 #6577 [Verbose] > │ let v319 : float = v299 + v309 │
00:00:28 #6578 [Verbose] > │ let v320 : float = v300 + v310 │
00:00:28 #6579 [Verbose] > │ let v321 : (unit -> UH1) = closure20(v311, v301) │
00:00:28 #6580 [Verbose] > │ UH1_0(v312, v313, v315, v316, v317, v314, v318, v319, v320, │
00:00:28 #6581 [Verbose] > │ v321) │
00:00:28 #6582 [Verbose] > │ | UH1_1 -> (* StreamNil *) │
00:00:28 #6583 [Verbose] > │ UH1_1 │
00:00:28 #6584 [Verbose] > │ | UH1_1 -> (* StreamNil *) │
00:00:28 #6585 [Verbose] > │ UH1_1 │
00:00:28 #6586 [Verbose] > │ let v370 : UH0 = │
00:00:28 #6587 [Verbose] > │ match v328 with │
00:00:28 #6588 [Verbose] > │ | UH1_0(v329, v330, v331, v332, v333, v334, v335, v336, v337, v338) │
00:00:28 #6589 [Verbose] > │ -> (* StreamCons *) │
00:00:28 #6590 [Verbose] > │ match v2 with │
00:00:28 #6591 [Verbose] > │ | UH0_0(v339, v340, v341, v342, v343, v344, v345, v346, v347, │
00:00:28 #6592 [Verbose] > │ v348) -> (* StreamCons *) │
00:00:28 #6593 [Verbose] > │ let v349 : float = v334 * v143 │
00:00:28 #6594 [Verbose] > │ let v350 : float = v344 + v349 │
00:00:28 #6595 [Verbose] > │ let v351 : float = v143 * v331 │
00:00:28 #6596 [Verbose] > │ let v352 : float = v143 * v332 │
00:00:28 #6597 [Verbose] > │ let v353 : float = v143 * v333 │
00:00:28 #6598 [Verbose] > │ let v354 : float = v341 + v351 │
00:00:28 #6599 [Verbose] > │ let v355 : float = v342 + v352 │
00:00:28 #6600 [Verbose] > │ let v356 : float = v343 + v353 │
00:00:28 #6601 [Verbose] > │ let v357 : float = v143 * v335 │
00:00:28 #6602 [Verbose] > │ let v358 : float = v143 * v336 │
00:00:28 #6603 [Verbose] > │ let v359 : float = v143 * v337 │
00:00:28 #6604 [Verbose] > │ let v360 : float = v345 + v357 │
00:00:28 #6605 [Verbose] > │ let v361 : float = v346 + v358 │
00:00:28 #6606 [Verbose] > │ let v362 : float = v347 + v359 │
00:00:28 #6607 [Verbose] > │ let v363 : (unit -> UH0) = closure3(v143, v348, v338) │
00:00:28 #6608 [Verbose] > │ UH0_0(v339, v340, v354, v355, v356, v350, v360, v361, v362, │
00:00:28 #6609 [Verbose] > │ v363) │
00:00:28 #6610 [Verbose] > │ | UH0_1 -> (* StreamNil *) │
00:00:28 #6611 [Verbose] > │ UH0_1 │
00:00:28 #6612 [Verbose] > │ | UH1_1 -> (* StreamNil *) │
00:00:28 #6613 [Verbose] > │ UH0_1 │
00:00:28 #6614 [Verbose] > │ let v371 : (unit -> UH0) = closure4(v370) │
00:00:28 #6615 [Verbose] > │ let v372 : (unit -> UH0) = method1(v370, v371) │
00:00:28 #6616 [Verbose] > │ let v373 : UH0 = v372 () │
00:00:28 #6617 [Verbose] > │ v373 │
00:00:28 #6618 [Verbose] > │ and closure18 (v0 : float) (v1 : (UH0 -> UH1)) : (UH0 -> UH0) = │
00:00:28 #6619 [Verbose] > │ closure19(v0, v1) │
00:00:28 #6620 [Verbose] > │ and closure17 () (v0 : float) : ((UH0 -> UH1) -> (UH0 -> UH0)) = │
00:00:28 #6621 [Verbose] > │ closure18(v0) │
00:00:28 #6622 [Verbose] > │ and method17 (v0 : UH4, v1 : UH6) : UH6 = │
00:00:28 #6623 [Verbose] > │ match v0 with │
00:00:28 #6624 [Verbose] > │ | UH4_0(v2, v3) -> (* Cons *) │
00:00:28 #6625 [Verbose] > │ let v4 : UH6 = method17(v3, v1) │
00:00:28 #6626 [Verbose] > │ let v5 : int32 = 0 │
00:00:28 #6627 [Verbose] > │ let v6 : US2 = method6(v5, v2) │
00:00:28 #6628 [Verbose] > │ let v23 : US3 = │
00:00:28 #6629 [Verbose] > │ match v6 with │
00:00:28 #6630 [Verbose] > │ | US2_0 -> (* None *) │
00:00:28 #6631 [Verbose] > │ US3_0 │
00:00:28 #6632 [Verbose] > │ | US2_1(v7, v8, v9, v10, v11, v12, v13, v14, v15) -> (* Some *) │
00:00:28 #6633 [Verbose] > │ let v16 : UH7 = UH7_1 │
00:00:28 #6634 [Verbose] > │ let v17 : UH7 = method12(v2, v16) │
00:00:28 #6635 [Verbose] > │ let v18 : float = 0.0 │
00:00:28 #6636 [Verbose] > │ let v19 : float = method13(v17, v18) │
00:00:28 #6637 [Verbose] > │ US3_1(v12, v19) │
00:00:28 #6638 [Verbose] > │ UH6_0(v23, v4) │
00:00:28 #6639 [Verbose] > │ | UH4_1 -> (* Nil *) │
00:00:28 #6640 [Verbose] > │ v1 │
00:00:28 #6641 [Verbose] > │ and method19 (v0 : UH9, v1 : int32) : int32 = │
00:00:28 #6642 [Verbose] > │ match v0 with │
00:00:28 #6643 [Verbose] > │ | UH9_0(v2, v3) -> (* Cons *) │
00:00:28 #6644 [Verbose] > │ let v4 : int32 = v1 + 1 │
00:00:28 #6645 [Verbose] > │ method19(v3, v4) │
00:00:28 #6646 [Verbose] > │ | UH9_1 -> (* Nil *) │
00:00:28 #6647 [Verbose] > │ v1 │
00:00:28 #6648 [Verbose] > │ and method20 (v0 : (float []), v1 : UH9, v2 : int32) : int32 = │
00:00:28 #6649 [Verbose] > │ match v1 with │
00:00:28 #6650 [Verbose] > │ | UH9_0(v3, v4) -> (* Cons *) │
00:00:28 #6651 [Verbose] > │ v0.[int v2] <- v3 │
00:00:28 #6652 [Verbose] > │ let v5 : int32 = v2 + 1 │
00:00:28 #6653 [Verbose] > │ method20(v0, v4, v5) │
00:00:28 #6654 [Verbose] > │ | UH9_1 -> (* Nil *) │
00:00:28 #6655 [Verbose] > │ v2 │
00:00:28 #6656 [Verbose] > │ and method18 (v0 : UH9) : (float []) = │
00:00:28 #6657 [Verbose] > │ let v1 : int32 = 0 │
00:00:28 #6658 [Verbose] > │ let v2 : int32 = method19(v0, v1) │
00:00:28 #6659 [Verbose] > │ let v3 : (float []) = Array.zeroCreate<float> (v2) │
00:00:28 #6660 [Verbose] > │ let v4 : int32 = 0 │
00:00:28 #6661 [Verbose] > │ let v5 : int32 = method20(v3, v0, v4) │
00:00:28 #6662 [Verbose] > │ v3 │
00:00:28 #6663 [Verbose] > │ and method21 (v0 : (struct (string * (float []) * (float [])) [])) : (struct │
00:00:28 #6664 [Verbose] > │ (string * (float []) * (float [])) []) = │
00:00:28 #6665 [Verbose] > │ v0 │
00:00:28 #6666 [Verbose] > │ and method0 () : struct (string * string * string * (struct (string * (float │
00:00:28 #6667 [Verbose] > │ []) * (float [])) [])) = │
00:00:28 #6668 [Verbose] > │ let v0 : (float -> ((UH0 -> UH1) -> (UH0 -> UH0))) = closure0() │
00:00:28 #6669 [Verbose] > │ let v1 : ((UH0 -> UH1) -> (UH0 -> UH0)) = v0 0.03 │
00:00:28 #6670 [Verbose] > │ let v2 : (UH0 -> UH1) = closure8() │
00:00:28 #6671 [Verbose] > │ let v3 : (UH0 -> UH0) = v1 v2 │
00:00:28 #6672 [Verbose] > │ let v4 : UH4 = UH4_1 │
00:00:28 #6673 [Verbose] > │ let v5 : int32 = 0 │
00:00:28 #6674 [Verbose] > │ let v6 : UH4 = method7(v3, v4, v5) │
00:00:28 #6675 [Verbose] > │ let v7 : UH6 = UH6_1 │
00:00:28 #6676 [Verbose] > │ let v8 : UH6 = method11(v6, v7) │
00:00:28 #6677 [Verbose] > │ let v9 : UH8 = UH8_1 │
00:00:28 #6678 [Verbose] > │ let v10 : UH8 = method14(v8, v9) │
00:00:28 #6679 [Verbose] > │ let v11 : UH9 = UH9_1 │
00:00:28 #6680 [Verbose] > │ let v12 : UH9 = UH9_1 │
00:00:28 #6681 [Verbose] > │ let struct (v13 : UH9, v14 : UH9) = method15(v10, v11, v12) │
00:00:28 #6682 [Verbose] > │ let v15 : UH9 = UH9_1 │
00:00:28 #6683 [Verbose] > │ let v16 : UH9 = method16(v13, v15) │
00:00:28 #6684 [Verbose] > │ let v17 : UH9 = UH9_1 │
00:00:28 #6685 [Verbose] > │ let v18 : UH9 = method16(v14, v17) │
00:00:28 #6686 [Verbose] > │ let v19 : (float -> ((UH0 -> UH1) -> (UH0 -> UH0))) = closure17() │
00:00:28 #6687 [Verbose] > │ let v20 : ((UH0 -> UH1) -> (UH0 -> UH0)) = v19 0.03 │
00:00:28 #6688 [Verbose] > │ let v21 : (UH0 -> UH0) = v20 v2 │
00:00:28 #6689 [Verbose] > │ let v22 : UH4 = UH4_1 │
00:00:28 #6690 [Verbose] > │ let v23 : int32 = 0 │
00:00:28 #6691 [Verbose] > │ let v24 : UH4 = method7(v21, v22, v23) │
00:00:28 #6692 [Verbose] > │ let v25 : UH6 = UH6_1 │
00:00:28 #6693 [Verbose] > │ let v26 : UH6 = method17(v24, v25) │
00:00:28 #6694 [Verbose] > │ let v27 : UH8 = UH8_1 │
00:00:28 #6695 [Verbose] > │ let v28 : UH8 = method14(v26, v27) │
00:00:28 #6696 [Verbose] > │ let v29 : UH9 = UH9_1 │
00:00:28 #6697 [Verbose] > │ let v30 : UH9 = UH9_1 │
00:00:28 #6698 [Verbose] > │ let struct (v31 : UH9, v32 : UH9) = method15(v28, v29, v30) │
00:00:28 #6699 [Verbose] > │ let v33 : UH9 = UH9_1 │
00:00:28 #6700 [Verbose] > │ let v34 : UH9 = method16(v31, v33) │
00:00:28 #6701 [Verbose] > │ let v35 : UH9 = UH9_1 │
00:00:28 #6702 [Verbose] > │ let v36 : UH9 = method16(v32, v35) │
00:00:28 #6703 [Verbose] > │ let v37 : (float []) = method18(v16) │
00:00:28 #6704 [Verbose] > │ let v38 : (float []) = method18(v18) │
00:00:28 #6705 [Verbose] > │ let v39 : (float []) = method18(v34) │
00:00:28 #6706 [Verbose] > │ let v40 : (float []) = method18(v36) │
00:00:28 #6707 [Verbose] > │ let v41 : string = "euler-cromer" │
00:00:28 #6708 [Verbose] > │ let v42 : string = "runge-kutta 4" │
00:00:28 #6709 [Verbose] > │ let v43 : (struct (string * (float []) * (float [])) []) = [|struct │
00:00:28 #6710 [Verbose] > │ (v41, v37, v38); struct (v42, v39, v40)|] │
00:00:28 #6711 [Verbose] > │ let v44 : (struct (string * (float []) * (float [])) []) = method21(v43) │
00:00:28 #6712 [Verbose] > │ let v45 : string = "system kinetic energy versus time" │
00:00:28 #6713 [Verbose] > │ let v46 : string = "time (s)" │
00:00:28 #6714 [Verbose] > │ let v47 : string = "system kinetic energy (j)" │
00:00:28 #6715 [Verbose] > │ struct (v45, v46, v47, v44) │
00:00:28 #6716 [Verbose] > │ method0() │
00:00:28 #6717 [Verbose] > │ │
00:00:28 #6718 [Verbose] > │ │
00:00:28 #6719 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:28 #6720 [Verbose] >
00:00:28 #6721 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:28 #6722 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:28 #6723 [Verbose] > │ ### wave 2 │
00:00:28 #6724 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:28 #6725 [Verbose] >
00:00:28 #6726 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:28 #6727 [Verbose] > // // test
00:00:28 #6728 [Verbose] >
00:00:28 #6729 [Verbose] > inl linear_spring k re (particle_state st1) (particle_state st2) =
00:00:28 #6730 [Verbose] > inl r1 = st1.pos_vec
00:00:28 #6731 [Verbose] > inl r2 = st2.pos_vec
00:00:28 #6732 [Verbose] > inl r21 = r2 ^-^ r1
00:00:28 #6733 [Verbose] > inl r21mag = magnitude r21
00:00:28 #6734 [Verbose] > -k * (r21mag - re) *^ r21 ^/ r21mag
00:00:28 #6735 [Verbose] >
00:00:28 #6736 [Verbose] > inl fixed_linear_spring k re r1 =
00:00:28 #6737 [Verbose] > inl (particle_state default_particle_state') = default_particle_state ()
00:00:28 #6738 [Verbose] > linear_spring k re (particle_state { default_particle_state' with pos_vec =
00:00:28 #6739 [Verbose] > r1 })
00:00:28 #6740 [Verbose] >
00:00:28 #6741 [Verbose] > inl forces_string () =
00:00:28 #6742 [Verbose] > [[
00:00:28 #6743 [Verbose] > ExternalForce (0i32, fixed_linear_spring 5384 0 (zero_vec ()))
00:00:28 #6744 [Verbose] > ExternalForce (63, fixed_linear_spring 5384 0 (0.65 *^ i_hat ()))
00:00:28 #6745 [Verbose] > ]] /@ (
00:00:28 #6746 [Verbose] > listm'.init_series 0 59 1
00:00:28 #6747 [Verbose] > |> listm.map (fun n => InternalForce (n, n + 1, linear_spring 5384 0))
00:00:28 #6748 [Verbose] > )
00:00:28 #6749 [Verbose] >
00:00:28 #6750 [Verbose] > inl string_update dt =
00:00:28 #6751 [Verbose] > update_mps (join runge_kutta_4 dt) (join forces_string ())
00:00:28 #6752 [Verbose] >
00:00:28 #6753 [Verbose] > inl string_initial_overtone n =
00:00:28 #6754 [Verbose] > inl ball_mass = 0.0008293 * 0.65 / 64
00:00:28 #6755 [Verbose] > inl (particle_state default_particle_state') = default_particle_state ()
00:00:28 #6756 [Verbose] > listm'.init_series 0.01 0.64 0.01
00:00:28 #6757 [Verbose] > |> listm.map (fun x =>
00:00:28 #6758 [Verbose] > inl y = 0.005 * sin (conv n * pi * x / 0.65)
00:00:28 #6759 [Verbose] > particle_state {
00:00:28 #6760 [Verbose] > default_particle_state' with
00:00:28 #6761 [Verbose] > mass = ball_mass
00:00:28 #6762 [Verbose] > pos_vec = x *^ i_hat () ^+^ y *^ j_hat ()
00:00:28 #6763 [Verbose] > velocity = zero_vec ()
00:00:28 #6764 [Verbose] > }
00:00:28 #6765 [Verbose] > )
00:00:28 #6766 [Verbose] > |> stream.from_list
00:00:28 #6767 [Verbose] > |> multi_particle_state
00:00:28 #6768 [Verbose] >
00:00:28 #6769 [Verbose] > let main () =
00:00:28 #6770 [Verbose] > inl ~frames = listm'.init_series 0 65 1f64 |> stream.from_list
00:00:28 #6771 [Verbose] > inl ~initial_state = string_initial_overtone 3i32
00:00:28 #6772 [Verbose] > inl frames =
00:00:28 #6773 [Verbose] > frames
00:00:28 #6774 [Verbose] > |> stream.map (fun n =>
00:00:28 #6775 [Verbose] > inl (multi_particle_state sts) =
00:00:28 #6776 [Verbose] > stream.iterate (string_update 0.000025) initial_state |>
00:00:28 #6777 [Verbose] > stream.item n
00:00:28 #6778 [Verbose] > inl x, y =
00:00:28 #6779 [Verbose] > [[ zero_vec () ]]
00:00:28 #6780 [Verbose] > /@ (sts |> stream.map (fun (particle_state st) => st.pos_vec) |>
00:00:28 #6781 [Verbose] > stream.to_list)
00:00:28 #6782 [Verbose] > /@ [[ 0.65 *^ i_hat () ]]
00:00:28 #6783 [Verbose] > |> listm.map (fun r => r.x, r.y)
00:00:28 #6784 [Verbose] > |> stream.from_list
00:00:28 #6785 [Verbose] > |> stream.unzip
00:00:28 #6786 [Verbose] > inl x : a i32 _ = x |> stream.to_list |> listm.toArray
00:00:28 #6787 [Verbose] > inl y : a i32 _ = y |> stream.to_list |> listm.toArray
00:00:28 #6788 [Verbose] > x, y
00:00:28 #6789 [Verbose] > )
00:00:28 #6790 [Verbose] >
00:00:28 #6791 [Verbose] > inl plots =
00:00:28 #6792 [Verbose] > frames
00:00:28 #6793 [Verbose] > |> stream.indexed
00:00:28 #6794 [Verbose] > |> stream.map (fun ((n : i32), (x, y)) =>
00:00:28 #6795 [Verbose] > "wave",
00:00:28 #6796 [Verbose] > "position (m)",
00:00:28 #6797 [Verbose] > "displacement (m)",
00:00:28 #6798 [Verbose] > ;[[
00:00:28 #6799 [Verbose] > ($"$\"{!n}\"" : string), x, y
00:00:28 #6800 [Verbose] > ]]
00:00:28 #6801 [Verbose] > )
00:00:28 #6802 [Verbose] >
00:00:28 #6803 [Verbose] > plots |> stream.to_list |> listm.toArray : a i32 _
00:00:28 #6804 [Verbose] > Building /tmp/!dotnet-repl/20240320-1229-5509-0947-02000577edc1/main.spi
00:00:33 #6805 [Verbose] >
00:00:33 #6806 [Verbose] > ╭─[ 5.51s - return value ]─────────────────────────────────────────────────────╮
00:00:33 #6807 [Verbose] > │ <table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><tbody><tr │
00:00:33 #6808 [Verbose] > │ ><td>0</td><td><svg width="640" height="480" viewBox="0 0 640 480" │
00:00:33 #6809 [Verbose] > │ xmlns="http://www.w3.org/2000/svg"> │
00:00:33 #6810 [Verbose] > │ <rect x="0" y="0" width="640" height="480" opacity="1" fill="#141414" │
00:00:33 #6811 [Verbose] > │ stroke="none"/> │
00:00:33 #6812 [Verbose] > │ <text x="320" y="10" dy="0.76em" text-anchor="middle" │
00:00:33 #6813 [Verbose] > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1" │
00:00:33 #6814 [Verbose] > │ fill="#FFFFFF"> │
00:00:33 #6815 [Verbose] > │ wave │
00:00:33 #6816 [Verbose] > │ </text> │
00:00:33 #6817 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="62" y1="424" x2="62" │
00:00:33 #6818 [Verbose] > │ y2="75"/> │
00:00:33 #6819 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" y1="424" x2="69" │
00:00:33 #6820 [Verbose] > │ y2="75"/> │
00:00:33 #6821 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="77" y1="424" x2="77" │
00:00:33 #6822 [Verbose] > │ y2="75"/> │
00:00:33 #6823 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="85" y1="424" │
00:00:33 #6824 [Verbose] > │ x2="85... │
00:00:33 #6825 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:34 #6826 [Verbose] >
00:00:34 #6827 [Verbose] > ╭─[ 5.54s - stdout ]───────────────────────────────────────────────────────────╮
00:00:34 #6828 [Verbose] > │ type UH0 = │
00:00:34 #6829 [Verbose] > │ | UH0_0 of float * (unit -> UH0) │
00:00:34 #6830 [Verbose] > │ | UH0_1 │
00:00:34 #6831 [Verbose] > │ and UH1 = │
00:00:34 #6832 [Verbose] > │ | UH1_0 of float * float * float * float * float * float * float * float │
00:00:34 #6833 [Verbose] > │ * float * (unit -> UH1) │
00:00:34 #6834 [Verbose] > │ | UH1_1 │
00:00:34 #6835 [Verbose] > │ and UH2 = │
00:00:34 #6836 [Verbose] > │ | UH2_0 of (float []) * (float []) * (unit -> UH2) │
00:00:34 #6837 [Verbose] > │ | UH2_1 │
00:00:34 #6838 [Verbose] > │ and UH3 = │
00:00:34 #6839 [Verbose] > │ | UH3_0 of float * float * float * float * float * float * float * float │
00:00:34 #6840 [Verbose] > │ * float * (unit -> UH3) │
00:00:34 #6841 [Verbose] > │ | UH3_1 │
00:00:34 #6842 [Verbose] > │ and [<Struct>] US0 = │
00:00:34 #6843 [Verbose] > │ | US0_0 of f0_0 : UH1 │
00:00:34 #6844 [Verbose] > │ | US0_1 of f1_0 : (unit -> UH1) │
00:00:34 #6845 [Verbose] > │ and Mut0 = {mutable l0 : US0} │
00:00:34 #6846 [Verbose] > │ and [<Struct>] US1 = │
00:00:34 #6847 [Verbose] > │ | US1_0 of f0_0 : int32 * f0_1 : (struct (float * float * float * float │
00:00:34 #6848 [Verbose] > │ * float * float * float * float * float) -> struct (float * float * float)) │
00:00:34 #6849 [Verbose] > │ | US1_1 of f1_0 : int32 * f1_1 : int32 * f1_2 : (struct (float * float * │
00:00:34 #6850 [Verbose] > │ float * float * float * float * float * float * float) -> (struct (float * │
00:00:34 #6851 [Verbose] > │ float * float * float * float * float * float * float * float) -> struct │
00:00:34 #6852 [Verbose] > │ (float * float * float))) │
00:00:34 #6853 [Verbose] > │ and UH4 = │
00:00:34 #6854 [Verbose] > │ | UH4_0 of US1 * UH4 │
00:00:34 #6855 [Verbose] > │ | UH4_1 │
00:00:34 #6856 [Verbose] > │ and UH5 = │
00:00:34 #6857 [Verbose] > │ | UH5_0 of int32 * float * float * float * float * float * float * float │
00:00:34 #6858 [Verbose] > │ * float * float * (unit -> UH5) │
00:00:34 #6859 [Verbose] > │ | UH5_1 │
00:00:34 #6860 [Verbose] > │ and UH6 = │
00:00:34 #6861 [Verbose] > │ | UH6_0 of (struct (float * float * float * float * float * float * │
00:00:34 #6862 [Verbose] > │ float * float * float) -> struct (float * float * float)) * UH6 │
00:00:34 #6863 [Verbose] > │ | UH6_1 │
00:00:34 #6864 [Verbose] > │ and [<Struct>] US2 = │
00:00:34 #6865 [Verbose] > │ | US2_0 │
00:00:34 #6866 [Verbose] > │ | US2_1 of f1_0 : (struct (float * float * float * float * float * float │
00:00:34 #6867 [Verbose] > │ * float * float * float) -> struct (float * float * float)) │
00:00:34 #6868 [Verbose] > │ and [<Struct>] US3 = │
00:00:34 #6869 [Verbose] > │ | US3_0 │
00:00:34 #6870 [Verbose] > │ | US3_1 of f1_0 : float * f1_1 : float * f1_2 : float * f1_3 : float * │
00:00:34 #6871 [Verbose] > │ f1_4 : float * f1_5 : float * f1_6 : float * f1_7 : float * f1_8 : float │
00:00:34 #6872 [Verbose] > │ and UH7 = │
00:00:34 #6873 [Verbose] > │ | UH7_0 of float * float * float * UH7 │
00:00:34 #6874 [Verbose] > │ | UH7_1 │
00:00:34 #6875 [Verbose] > │ and UH8 = │
00:00:34 #6876 [Verbose] > │ | UH8_0 of UH1 * (unit -> UH8) │
00:00:34 #6877 [Verbose] > │ | UH8_1 │
00:00:34 #6878 [Verbose] > │ and [<Struct>] US4 = │
00:00:34 #6879 [Verbose] > │ | US4_0 │
00:00:34 #6880 [Verbose] > │ | US4_1 of f1_0 : UH1 │
00:00:34 #6881 [Verbose] > │ and UH9 = │
00:00:34 #6882 [Verbose] > │ | UH9_0 of float * float * float * (unit -> UH9) │
00:00:34 #6883 [Verbose] > │ | UH9_1 │
00:00:34 #6884 [Verbose] > │ and UH10 = │
00:00:34 #6885 [Verbose] > │ | UH10_0 of float * float * UH10 │
00:00:34 #6886 [Verbose] > │ | UH10_1 │
00:00:34 #6887 [Verbose] > │ and UH11 = │
00:00:34 #6888 [Verbose] > │ | UH11_0 of float * float * (unit -> UH11) │
00:00:34 #6889 [Verbose] > │ | UH11_1 │
00:00:34 #6890 [Verbose] > │ and UH12 = │
00:00:34 #6891 [Verbose] > │ | UH12_0 of float * UH12 │
00:00:34 #6892 [Verbose] > │ | UH12_1 │
00:00:34 #6893 [Verbose] > │ and UH13 = │
00:00:34 #6894 [Verbose] > │ | UH13_0 of int32 * (float []) * (float []) * (unit -> UH13) │
00:00:34 #6895 [Verbose] > │ | UH13_1 │
00:00:34 #6896 [Verbose] > │ and UH14 = │
00:00:34 #6897 [Verbose] > │ | UH14_0 of string * string * string * (struct (string * (float []) * │
00:00:34 #6898 [Verbose] > │ (float [])) []) * (unit -> UH14) │
00:00:34 #6899 [Verbose] > │ | UH14_1 │
00:00:34 #6900 [Verbose] > │ and UH15 = │
00:00:34 #6901 [Verbose] > │ | UH15_0 of string * string * string * (struct (string * (float []) * │
00:00:34 #6902 [Verbose] > │ (float [])) []) * UH15 │
00:00:34 #6903 [Verbose] > │ | UH15_1 │
00:00:34 #6904 [Verbose] > │ let rec closure65 () () : UH0 = │
00:00:34 #6905 [Verbose] > │ UH0_1 │
00:00:34 #6906 [Verbose] > │ and closure64 () () : UH0 = │
00:00:34 #6907 [Verbose] > │ let v0 : (unit -> UH0) = closure65() │
00:00:34 #6908 [Verbose] > │ UH0_0(65.0, v0) │
00:00:34 #6909 [Verbose] > │ and closure63 () () : UH0 = │
00:00:34 #6910 [Verbose] > │ let v0 : (unit -> UH0) = closure64() │
00:00:34 #6911 [Verbose] > │ UH0_0(64.0, v0) │
00:00:34 #6912 [Verbose] > │ and closure62 () () : UH0 = │
00:00:34 #6913 [Verbose] > │ let v0 : (unit -> UH0) = closure63() │
00:00:34 #6914 [Verbose] > │ UH0_0(63.0, v0) │
00:00:34 #6915 [Verbose] > │ and closure61 () () : UH0 = │
00:00:34 #6916 [Verbose] > │ let v0 : (unit -> UH0) = closure62() │
00:00:34 #6917 [Verbose] > │ UH0_0(62.0, v0) │
00:00:34 #6918 [Verbose] > │ and closure60 () () : UH0 = │
00:00:34 #6919 [Verbose] > │ let v0 : (unit -> UH0) = closure61() │
00:00:34 #6920 [Verbose] > │ UH0_0(61.0, v0) │
00:00:34 #6921 [Verbose] > │ and closure59 () () : UH0 = │
00:00:34 #6922 [Verbose] > │ let v0 : (unit -> UH0) = closure60() │
00:00:34 #6923 [Verbose] > │ UH0_0(60.0, v0) │
00:00:34 #6924 [Verbose] > │ and closure58 () () : UH0 = │
00:00:34 #6925 [Verbose] > │ let v0 : (unit -> UH0) = closure59() │
00:00:34 #6926 [Verbose] > │ UH0_0(59.0, v0) │
00:00:34 #6927 [Verbose] > │ and closure57 () () : UH0 = │
00:00:34 #6928 [Verbose] > │ let v0 : (unit -> UH0) = closure58() │
00:00:34 #6929 [Verbose] > │ UH0_0(58.0, v0) │
00:00:34 #6930 [Verbose] > │ and closure56 () () : UH0 = │
00:00:34 #6931 [Verbose] > │ let v0 : (unit -> UH0) = closure57() │
00:00:34 #6932 [Verbose] > │ UH0_0(57.0, v0) │
00:00:34 #6933 [Verbose] > │ and closure55 () () : UH0 = │
00:00:34 #6934 [Verbose] > │ let v0 : (unit -> UH0) = closure56() │
00:00:34 #6935 [Verbose] > │ UH0_0(56.0, v0) │
00:00:34 #6936 [Verbose] > │ and closure54 () () : UH0 = │
00:00:34 #6937 [Verbose] > │ let v0 : (unit -> UH0) = closure55() │
00:00:34 #6938 [Verbose] > │ UH0_0(55.0, v0) │
00:00:34 #6939 [Verbose] > │ and closure53 () () : UH0 = │
00:00:34 #6940 [Verbose] > │ let v0 : (unit -> UH0) = closure54() │
00:00:34 #6941 [Verbose] > │ UH0_0(54.0, v0) │
00:00:34 #6942 [Verbose] > │ and closure52 () () : UH0 = │
00:00:34 #6943 [Verbose] > │ let v0 : (unit -> UH0) = closure53() │
00:00:34 #6944 [Verbose] > │ UH0_0(53.0, v0) │
00:00:34 #6945 [Verbose] > │ and closure51 () () : UH0 = │
00:00:34 #6946 [Verbose] > │ let v0 : (unit -> UH0) = closure52() │
00:00:34 #6947 [Verbose] > │ UH0_0(52.0, v0) │
00:00:34 #6948 [Verbose] > │ and closure50 () () : UH0 = │
00:00:34 #6949 [Verbose] > │ let v0 : (unit -> UH0) = closure51() │
00:00:34 #6950 [Verbose] > │ UH0_0(51.0, v0) │
00:00:34 #6951 [Verbose] > │ and closure49 () () : UH0 = │
00:00:34 #6952 [Verbose] > │ let v0 : (unit -> UH0) = closure50() │
00:00:34 #6953 [Verbose] > │ UH0_0(50.0, v0) │
00:00:34 #6954 [Verbose] > │ and closure48 () () : UH0 = │
00:00:34 #6955 [Verbose] > │ let v0 : (unit -> UH0) = closure49() │
00:00:34 #6956 [Verbose] > │ UH0_0(49.0, v0) │
00:00:34 #6957 [Verbose] > │ and closure47 () () : UH0 = │
00:00:34 #6958 [Verbose] > │ let v0 : (unit -> UH0) = closure48() │
00:00:34 #6959 [Verbose] > │ UH0_0(48.0, v0) │
00:00:34 #6960 [Verbose] > │ and closure46 () () : UH0 = │
00:00:34 #6961 [Verbose] > │ let v0 : (unit -> UH0) = closure47() │
00:00:34 #6962 [Verbose] > │ UH0_0(47.0, v0) │
00:00:34 #6963 [Verbose] > │ and closure45 () () : UH0 = │
00:00:34 #6964 [Verbose] > │ let v0 : (unit -> UH0) = closure46() │
00:00:34 #6965 [Verbose] > │ UH0_0(46.0, v0) │
00:00:34 #6966 [Verbose] > │ and closure44 () () : UH0 = │
00:00:34 #6967 [Verbose] > │ let v0 : (unit -> UH0) = closure45() │
00:00:34 #6968 [Verbose] > │ UH0_0(45.0, v0) │
00:00:34 #6969 [Verbose] > │ and closure43 () () : UH0 = │
00:00:34 #6970 [Verbose] > │ let v0 : (unit -> UH0) = closure44() │
00:00:34 #6971 [Verbose] > │ UH0_0(44.0, v0) │
00:00:34 #6972 [Verbose] > │ and closure42 () () : UH0 = │
00:00:34 #6973 [Verbose] > │ let v0 : (unit -> UH0) = closure43() │
00:00:34 #6974 [Verbose] > │ UH0_0(43.0, v0) │
00:00:34 #6975 [Verbose] > │ and closure41 () () : UH0 = │
00:00:34 #6976 [Verbose] > │ let v0 : (unit -> UH0) = closure42() │
00:00:34 #6977 [Verbose] > │ UH0_0(42.0, v0) │
00:00:34 #6978 [Verbose] > │ and closure40 () () : UH0 = │
00:00:34 #6979 [Verbose] > │ let v0 : (unit -> UH0) = closure41() │
00:00:34 #6980 [Verbose] > │ UH0_0(41.0, v0) │
00:00:34 #6981 [Verbose] > │ and closure39 () () : UH0 = │
00:00:34 #6982 [Verbose] > │ let v0 : (unit -> UH0) = closure40() │
00:00:34 #6983 [Verbose] > │ UH0_0(40.0, v0) │
00:00:34 #6984 [Verbose] > │ and closure38 () () : UH0 = │
00:00:34 #6985 [Verbose] > │ let v0 : (unit -> UH0) = closure39() │
00:00:34 #6986 [Verbose] > │ UH0_0(39.0, v0) │
00:00:34 #6987 [Verbose] > │ and closure37 () () : UH0 = │
00:00:34 #6988 [Verbose] > │ let v0 : (unit -> UH0) = closure38() │
00:00:34 #6989 [Verbose] > │ UH0_0(38.0, v0) │
00:00:34 #6990 [Verbose] > │ and closure36 () () : UH0 = │
00:00:34 #6991 [Verbose] > │ let v0 : (unit -> UH0) = closure37() │
00:00:34 #6992 [Verbose] > │ UH0_0(37.0, v0) │
00:00:34 #6993 [Verbose] > │ and closure35 () () : UH0 = │
00:00:34 #6994 [Verbose] > │ let v0 : (unit -> UH0) = closure36() │
00:00:34 #6995 [Verbose] > │ UH0_0(36.0, v0) │
00:00:34 #6996 [Verbose] > │ and closure34 () () : UH0 = │
00:00:34 #6997 [Verbose] > │ let v0 : (unit -> UH0) = closure35() │
00:00:34 #6998 [Verbose] > │ UH0_0(35.0, v0) │
00:00:34 #6999 [Verbose] > │ and closure33 () () : UH0 = │
00:00:34 #7000 [Verbose] > │ let v0 : (unit -> UH0) = closure34() │
00:00:34 #7001 [Verbose] > │ UH0_0(34.0, v0) │
00:00:34 #7002 [Verbose] > │ and closure32 () () : UH0 = │
00:00:34 #7003 [Verbose] > │ let v0 : (unit -> UH0) = closure33() │
00:00:34 #7004 [Verbose] > │ UH0_0(33.0, v0) │
00:00:34 #7005 [Verbose] > │ and closure31 () () : UH0 = │
00:00:34 #7006 [Verbose] > │ let v0 : (unit -> UH0) = closure32() │
00:00:34 #7007 [Verbose] > │ UH0_0(32.0, v0) │
00:00:34 #7008 [Verbose] > │ and closure30 () () : UH0 = │
00:00:34 #7009 [Verbose] > │ let v0 : (unit -> UH0) = closure31() │
00:00:34 #7010 [Verbose] > │ UH0_0(31.0, v0) │
00:00:34 #7011 [Verbose] > │ and closure29 () () : UH0 = │
00:00:34 #7012 [Verbose] > │ let v0 : (unit -> UH0) = closure30() │
00:00:34 #7013 [Verbose] > │ UH0_0(30.0, v0) │
00:00:34 #7014 [Verbose] > │ and closure28 () () : UH0 = │
00:00:34 #7015 [Verbose] > │ let v0 : (unit -> UH0) = closure29() │
00:00:34 #7016 [Verbose] > │ UH0_0(29.0, v0) │
00:00:34 #7017 [Verbose] > │ and closure27 () () : UH0 = │
00:00:34 #7018 [Verbose] > │ let v0 : (unit -> UH0) = closure28() │
00:00:34 #7019 [Verbose] > │ UH0_0(28.0, v0) │
00:00:34 #7020 [Verbose] > │ and closure26 () () : UH0 = │
00:00:34 #7021 [Verbose] > │ let v0 : (unit -> UH0) = closure27() │
00:00:34 #7022 [Verbose] > │ UH0_0(27.0, v0) │
00:00:34 #7023 [Verbose] > │ and closure25 () () : UH0 = │
00:00:34 #7024 [Verbose] > │ let v0 : (unit -> UH0) = closure26() │
00:00:34 #7025 [Verbose] > │ UH0_0(26.0, v0) │
00:00:34 #7026 [Verbose] > │ and closure24 () () : UH0 = │
00:00:34 #7027 [Verbose] > │ let v0 : (unit -> UH0) = closure25() │
00:00:34 #7028 [Verbose] > │ UH0_0(25.0, v0) │
00:00:34 #7029 [Verbose] > │ and closure23 () () : UH0 = │
00:00:34 #7030 [Verbose] > │ let v0 : (unit -> UH0) = closure24() │
00:00:34 #7031 [Verbose] > │ UH0_0(24.0, v0) │
00:00:34 #7032 [Verbose] > │ and closure22 () () : UH0 = │
00:00:34 #7033 [Verbose] > │ let v0 : (unit -> UH0) = closure23() │
00:00:34 #7034 [Verbose] > │ UH0_0(23.0, v0) │
00:00:34 #7035 [Verbose] > │ and closure21 () () : UH0 = │
00:00:34 #7036 [Verbose] > │ let v0 : (unit -> UH0) = closure22() │
00:00:34 #7037 [Verbose] > │ UH0_0(22.0, v0) │
00:00:34 #7038 [Verbose] > │ and closure20 () () : UH0 = │
00:00:34 #7039 [Verbose] > │ let v0 : (unit -> UH0) = closure21() │
00:00:34 #7040 [Verbose] > │ UH0_0(21.0, v0) │
00:00:34 #7041 [Verbose] > │ and closure19 () () : UH0 = │
00:00:34 #7042 [Verbose] > │ let v0 : (unit -> UH0) = closure20() │
00:00:34 #7043 [Verbose] > │ UH0_0(20.0, v0) │
00:00:34 #7044 [Verbose] > │ and closure18 () () : UH0 = │
00:00:34 #7045 [Verbose] > │ let v0 : (unit -> UH0) = closure19() │
00:00:34 #7046 [Verbose] > │ UH0_0(19.0, v0) │
00:00:34 #7047 [Verbose] > │ and closure17 () () : UH0 = │
00:00:34 #7048 [Verbose] > │ let v0 : (unit -> UH0) = closure18() │
00:00:34 #7049 [Verbose] > │ UH0_0(18.0, v0) │
00:00:34 #7050 [Verbose] > │ and closure16 () () : UH0 = │
00:00:34 #7051 [Verbose] > │ let v0 : (unit -> UH0) = closure17() │
00:00:34 #7052 [Verbose] > │ UH0_0(17.0, v0) │
00:00:34 #7053 [Verbose] > │ and closure15 () () : UH0 = │
00:00:34 #7054 [Verbose] > │ let v0 : (unit -> UH0) = closure16() │
00:00:34 #7055 [Verbose] > │ UH0_0(16.0, v0) │
00:00:34 #7056 [Verbose] > │ and closure14 () () : UH0 = │
00:00:34 #7057 [Verbose] > │ let v0 : (unit -> UH0) = closure15() │
00:00:34 #7058 [Verbose] > │ UH0_0(15.0, v0) │
00:00:34 #7059 [Verbose] > │ and closure13 () () : UH0 = │
00:00:34 #7060 [Verbose] > │ let v0 : (unit -> UH0) = closure14() │
00:00:34 #7061 [Verbose] > │ UH0_0(14.0, v0) │
00:00:34 #7062 [Verbose] > │ and closure12 () () : UH0 = │
00:00:34 #7063 [Verbose] > │ let v0 : (unit -> UH0) = closure13() │
00:00:34 #7064 [Verbose] > │ UH0_0(13.0, v0) │
00:00:34 #7065 [Verbose] > │ and closure11 () () : UH0 = │
00:00:34 #7066 [Verbose] > │ let v0 : (unit -> UH0) = closure12() │
00:00:34 #7067 [Verbose] > │ UH0_0(12.0, v0) │
00:00:34 #7068 [Verbose] > │ and closure10 () () : UH0 = │
00:00:34 #7069 [Verbose] > │ let v0 : (unit -> UH0) = closure11() │
00:00:34 #7070 [Verbose] > │ UH0_0(11.0, v0) │
00:00:34 #7071 [Verbose] > │ and closure9 () () : UH0 = │
00:00:34 #7072 [Verbose] > │ let v0 : (unit -> UH0) = closure10() │
00:00:34 #7073 [Verbose] > │ UH0_0(10.0, v0) │
00:00:34 #7074 [Verbose] > │ and closure8 () () : UH0 = │
00:00:34 #7075 [Verbose] > │ let v0 : (unit -> UH0) = closure9() │
00:00:34 #7076 [Verbose] > │ UH0_0(9.0, v0) │
00:00:34 #7077 [Verbose] > │ and closure7 () () : UH0 = │
00:00:34 #7078 [Verbose] > │ let v0 : (unit -> UH0) = closure8() │
00:00:34 #7079 [Verbose] > │ UH0_0(8.0, v0) │
00:00:34 #7080 [Verbose] > │ and closure6 () () : UH0 = │
00:00:34 #7081 [Verbose] > │ let v0 : (unit -> UH0) = closure7() │
00:00:34 #7082 [Verbose] > │ UH0_0(7.0, v0) │
00:00:34 #7083 [Verbose] > │ and closure5 () () : UH0 = │
00:00:34 #7084 [Verbose] > │ let v0 : (unit -> UH0) = closure6() │
00:00:34 #7085 [Verbose] > │ UH0_0(6.0, v0) │
00:00:34 #7086 [Verbose] > │ and closure4 () () : UH0 = │
00:00:34 #7087 [Verbose] > │ let v0 : (unit -> UH0) = closure5() │
00:00:34 #7088 [Verbose] > │ UH0_0(5.0, v0) │
00:00:34 #7089 [Verbose] > │ and closure3 () () : UH0 = │
00:00:34 #7090 [Verbose] > │ let v0 : (unit -> UH0) = closure4() │
00:00:34 #7091 [Verbose] > │ UH0_0(4.0, v0) │
00:00:34 #7092 [Verbose] > │ and closure2 () () : UH0 = │
00:00:34 #7093 [Verbose] > │ let v0 : (unit -> UH0) = closure3() │
00:00:34 #7094 [Verbose] > │ UH0_0(3.0, v0) │
00:00:34 #7095 [Verbose] > │ and closure1 () () : UH0 = │
00:00:34 #7096 [Verbose] > │ let v0 : (unit -> UH0) = closure2() │
00:00:34 #7097 [Verbose] > │ UH0_0(2.0, v0) │
00:00:34 #7098 [Verbose] > │ and closure0 () () : UH0 = │
00:00:34 #7099 [Verbose] > │ let v0 : (unit -> UH0) = closure1() │
00:00:34 #7100 [Verbose] > │ UH0_0(1.0, v0) │
00:00:34 #7101 [Verbose] > │ and closure129 () () : UH1 = │
00:00:34 #7102 [Verbose] > │ UH1_1 │
00:00:34 #7103 [Verbose] > │ and closure128 () () : UH1 = │
00:00:34 #7104 [Verbose] > │ let v0 : (unit -> UH1) = closure129() │
00:00:34 #7105 [Verbose] > │ UH1_0(0.0, 8.422578125E-06, 0.64, 0.0007224452478461016, 0.0, 0.0, 0.0, │
00:00:34 #7106 [Verbose] > │ 0.0, 0.0, v0) │
00:00:34 #7107 [Verbose] > │ and closure127 () () : UH1 = │
00:00:34 #7108 [Verbose] > │ let v0 : (unit -> UH1) = closure128() │
00:00:34 #7109 [Verbose] > │ UH1_0(0.0, 8.422578125E-06, 0.63, 0.001429728391993452, 0.0, 0.0, 0.0, │
00:00:34 #7110 [Verbose] > │ 0.0, 0.0, v0) │
00:00:34 #7111 [Verbose] > │ and closure126 () () : UH1 = │
00:00:34 #7112 [Verbose] > │ let v0 : (unit -> UH1) = closure127() │
00:00:34 #7113 [Verbose] > │ UH1_0(0.0, 8.422578125E-06, 0.62, 0.0021070055388626528, 0.0, 0.0, 0.0, │
00:00:34 #7114 [Verbose] > │ 0.0, 0.0, v0) │
00:00:34 #7115 [Verbose] > │ and closure125 () () : UH1 = │
00:00:34 #7116 [Verbose] > │ let v0 : (unit -> UH1) = closure126() │
00:00:34 #7117 [Verbose] > │ UH1_0(0.0, 8.422578125E-06, 0.61, 0.0027400625367733585, 0.0, 0.0, 0.0, │
00:00:34 #7118 [Verbose] > │ 0.0, 0.0, v0) │
00:00:34 #7119 [Verbose] > │ and closure124 () () : UH1 = │
00:00:34 #7120 [Verbose] > │ let v0 : (unit -> UH1) = closure125() │
00:00:34 #7121 [Verbose] > │ UH1_0(0.0, 8.422578125E-06, 0.6, 0.0033156132912039783, 0.0, 0.0, 0.0, │
00:00:34 #7122 [Verbose] > │ 0.0, 0.0, v0) │
00:00:34 #7123 [Verbose] > │ and closure123 () () : UH1 = │
00:00:34 #7124 [Verbose] > │ let v0 : (unit -> UH1) = closure124() │
00:00:34 #7125 [Verbose] > │ UH1_0(0.0, 8.422578125E-06, 0.59, 0.003821578602729245, 0.0, 0.0, 0.0, │
00:00:34 #7126 [Verbose] > │ 0.0, 0.0, v0) │
00:00:34 #7127 [Verbose] > │ and closure122 () () : UH1 = │
00:00:34 #7128 [Verbose] > │ let v0 : (unit -> UH1) = closure123() │
00:00:34 #7129 [Verbose] > │ UH1_0(0.0, 8.422578125E-06, 0.5800000000000001, 0.004247339675607605, │
00:00:34 #7130 [Verbose] > │ 0.0, 0.0, 0.0, 0.0, 0.0, v0) │
00:00:34 #7131 [Verbose] > │ and closure121 () () : UH1 = │
00:00:34 #7132 [Verbose] > │ let v0 : (unit -> UH1) = closure122() │
00:00:34 #7133 [Verbose] > │ UH1_0(0.0, 8.422578125E-06, 0.5700000000000001, 0.004583960976582912, │
00:00:34 #7134 [Verbose] > │ 0.0, 0.0, 0.0, 0.0, 0.0, v0) │
00:00:34 #7135 [Verbose] > │ and closure120 () () : UH1 = │
00:00:34 #7136 [Verbose] > │ let v0 : (unit -> UH1) = closure121() │
00:00:34 #7137 [Verbose] > │ UH1_0(0.0, 8.422578125E-06, 0.56, 0.004824377766717758, 0.0, 0.0, 0.0, │
00:00:34 #7138 [Verbose] > │ 0.0, 0.0, v0) │
00:00:34 #7139 [Verbose] > │ and closure119 () () : UH1 = │
00:00:34 #7140 [Verbose] > │ let v0 : (unit -> UH1) = closure120() │
00:00:34 #7141 [Verbose] > │ UH1_0(0.0, 8.422578125E-06, 0.55, 0.004963544370490271, 0.0, 0.0, 0.0, │
00:00:34 #7142 [Verbose] > │ 0.0, 0.0, v0) │
00:00:34 #7143 [Verbose] > │ and closure118 () () : UH1 = │
00:00:34 #7144 [Verbose] > │ let v0 : (unit -> UH1) = closure119() │
00:00:34 #7145 [Verbose] > │ UH1_0(0.0, 8.422578125E-06, 0.54, 0.004998540070400965, 0.0, 0.0, 0.0, │
00:00:34 #7146 [Verbose] > │ 0.0, 0.0, v0) │
00:00:34 #7147 [Verbose] > │ and closure117 () () : UH1 = │
00:00:34 #7148 [Verbose] > │ let v0 : (unit -> UH1) = closure118() │
00:00:34 #7149 [Verbose] > │ UH1_0(0.0, 8.422578125E-06, 0.53, 0.004928630404658255, 0.0, 0.0, 0.0, │
00:00:34 #7150 [Verbose] > │ 0.0, 0.0, v0) │
00:00:34 #7151 [Verbose] > │ and closure116 () () : UH1 = │
00:00:34 #7152 [Verbose] > │ let v0 : (unit -> UH1) = closure117() │
00:00:34 #7153 [Verbose] > │ UH1_0(0.0, 8.422578125E-06, 0.52, 0.004755282581475766, 0.0, 0.0, 0.0, │
00:00:34 #7154 [Verbose] > │ 0.0, 0.0, v0) │
00:00:34 #7155 [Verbose] > │ and closure115 () () : UH1 = │
00:00:34 #7156 [Verbose] > │ let v0 : (unit -> UH1) = closure116() │
00:00:34 #7157 [Verbose] > │ UH1_0(0.0, 8.422578125E-06, 0.51, 0.0044821346864785195, 0.0, 0.0, 0.0, │
00:00:34 #7158 [Verbose] > │ 0.0, 0.0, v0) │
00:00:34 #7159 [Verbose] > │ and closure114 () () : UH1 = │
00:00:34 #7160 [Verbose] > │ let v0 : (unit -> UH1) = closure115() │
00:00:34 #7161 [Verbose] > │ UH1_0(0.0, 8.422578125E-06, 0.5, 0.0041149193294682815, 0.0, 0.0, 0.0, │
00:00:34 #7162 [Verbose] > │ 0.0, 0.0, v0) │
00:00:34 #7163 [Verbose] > │ and closure113 () () : UH1 = │
00:00:34 #7164 [Verbose] > │ let v0 : (unit -> UH1) = closure114() │
00:00:34 #7165 [Verbose] > │ UH1_0(0.0, 8.422578125E-06, 0.49, 0.0036613433329888622, 0.0, 0.0, 0.0, │
00:00:34 #7166 [Verbose] > │ 0.0, 0.0, v0) │
00:00:34 #7167 [Verbose] > │ and closure112 () () : UH1 = │
00:00:34 #7168 [Verbose] > │ let v0 : (unit -> UH1) = closure113() │
00:00:34 #7169 [Verbose] > │ UH1_0(0.0, 8.422578125E-06, 0.48000000000000004, 0.003130925987691568, │
00:00:34 #7170 [Verbose] > │ 0.0, 0.0, 0.0, 0.0, 0.0, v0) │
00:00:34 #7171 [Verbose] > │ and closure111 () () : UH1 = │
00:00:34 #7172 [Verbose] > │ let v0 : (unit -> UH1) = closure112() │
00:00:34 #7173 [Verbose] > │ UH1_0(0.0, 8.422578125E-06, 0.47000000000000003, 0.002534799269067954, │
00:00:34 #7174 [Verbose] > │ 0.0, 0.0, 0.0, 0.0, 0.0, v0) │
00:00:34 #7175 [Verbose] > │ and closure110 () () : UH1 = │
00:00:34 #7176 [Verbose] > │ let v0 : (unit -> UH1) = closure111() │
00:00:34 #7177 [Verbose] > │ UH1_0(0.0, 8.422578125E-06, 0.46, 0.0018854742084416021, 0.0, 0.0, 0.0, │
00:00:34 #7178 [Verbose] > │ 0.0, 0.0, v0) │
00:00:34 #7179 [Verbose] > │ and closure109 () () : UH1 = │
00:00:34 #7180 [Verbose] > │ let v0 : (unit -> UH1) = closure110() │
00:00:34 #7181 [Verbose] > │ UH1_0(0.0, 8.422578125E-06, 0.45, 0.0011965783214377866, 0.0, 0.0, 0.0, │
00:00:34 #7182 [Verbose] > │ 0.0, 0.0, v0) │
00:00:34 #7183 [Verbose] > │ and closure108 () () : UH1 = │
00:00:34 #7184 [Verbose] > │ let v0 : (unit -> UH1) = closure109() │
00:00:34 #7185 [Verbose] > │ UH1_0(0.0, 8.422578125E-06, 0.44, 0.0004825696045725713, 0.0, 0.0, 0.0, │
00:00:34 #7186 [Verbose] > │ 0.0, 0.0, v0) │
00:00:34 #7187 [Verbose] > │ and closure107 () () : UH1 = │
00:00:34 #7188 [Verbose] > │ let v0 : (unit -> UH1) = closure108() │
00:00:34 #7189 [Verbose] > │ UH1_0(0.0, 8.422578125E-06, 0.43, -0.00024156689762753724, 0.0, 0.0, │
00:00:34 #7190 [Verbose] > │ 0.0, 0.0, 0.0, v0) │
00:00:34 #7191 [Verbose] > │ and closure106 () () : UH1 = │
00:00:34 #7192 [Verbose] > │ let v0 : (unit -> UH1) = closure107() │
00:00:34 #7193 [Verbose] > │ UH1_0(0.0, 8.422578125E-06, 0.42000000000000004, -0.0009606335867685414, │
00:00:34 #7194 [Verbose] > │ 0.0, 0.0, 0.0, 0.0, 0.0, v0) │
00:00:34 #7195 [Verbose] > │ and closure105 () () : UH1 = │
00:00:34 #7196 [Verbose] > │ let v0 : (unit -> UH1) = closure106() │
00:00:34 #7197 [Verbose] > │ UH1_0(0.0, 8.422578125E-06, 0.41000000000000003, -0.0016595392656426435, │
00:00:34 #7198 [Verbose] > │ 0.0, 0.0, 0.0, 0.0, 0.0, v0) │
00:00:34 #7199 [Verbose] > │ and closure104 () () : UH1 = │
00:00:34 #7200 [Verbose] > │ let v0 : (unit -> UH1) = closure105() │
00:00:34 #7201 [Verbose] > │ UH1_0(0.0, 8.422578125E-06, 0.4, -0.002323615860218846, 0.0, 0.0, 0.0, │
00:00:34 #7202 [Verbose] > │ 0.0, 0.0, v0) │
00:00:34 #7203 [Verbose] > │ and closure103 () () : UH1 = │
00:00:34 #7204 [Verbose] > │ let v0 : (unit -> UH1) = closure104() │
00:00:34 #7205 [Verbose] > │ UH1_0(0.0, 8.422578125E-06, 0.39, -0.002938926261462367, 0.0, 0.0, 0.0, │
00:00:34 #7206 [Verbose] > │ 0.0, 0.0, v0) │
00:00:34 #7207 [Verbose] > │ and closure102 () () : UH1 = │
00:00:34 #7208 [Verbose] > │ let v0 : (unit -> UH1) = closure103() │
00:00:34 #7209 [Verbose] > │ UH1_0(0.0, 8.422578125E-06, 0.38, -0.0034925568262446837, 0.0, 0.0, 0.0, │
00:00:34 #7210 [Verbose] > │ 0.0, 0.0, v0) │
00:00:34 #7211 [Verbose] > │ and closure101 () () : UH1 = │
00:00:34 #7212 [Verbose] > │ let v0 : (unit -> UH1) = closure102() │
00:00:34 #7213 [Verbose] > │ UH1_0(0.0, 8.422578125E-06, 0.37, -0.003972888398568774, 0.0, 0.0, 0.0, │
00:00:34 #7214 [Verbose] > │ 0.0, 0.0, v0) │
00:00:34 #7215 [Verbose] > │ and closure100 () () : UH1 = │
00:00:34 #7216 [Verbose] > │ let v0 : (unit -> UH1) = closure101() │
00:00:34 #7217 [Verbose] > │ UH1_0(0.0, 8.422578125E-06, 0.36000000000000004, -0.004369840163132589, │
00:00:34 #7218 [Verbose] > │ 0.0, 0.0, 0.0, 0.0, 0.0, v0) │
00:00:34 #7219 [Verbose] > │ and closure99 () () : UH1 = │
00:00:34 #7220 [Verbose] > │ let v0 : (unit -> UH1) = closure100() │
00:00:34 #7221 [Verbose] > │ UH1_0(0.0, 8.422578125E-06, 0.35000000000000003, -0.004675081213427074, │
00:00:34 #7222 [Verbose] > │ 0.0, 0.0, 0.0, 0.0, 0.0, v0) │
00:00:34 #7223 [Verbose] > │ and closure98 () () : UH1 = │
00:00:34 #7224 [Verbose] > │ let v0 : (unit -> UH1) = closure99() │
00:00:34 #7225 [Verbose] > │ UH1_0(0.0, 8.422578125E-06, 0.34, -0.004882205394146361, 0.0, 0.0, 0.0, │
00:00:34 #7226 [Verbose] > │ 0.0, 0.0, v0) │
00:00:34 #7227 [Verbose] > │ and closure97 () () : UH1 = │
00:00:34 #7228 [Verbose] > │ let v0 : (unit -> UH1) = closure98() │
00:00:34 #7229 [Verbose] > │ UH1_0(0.0, 8.422578125E-06, 0.33, -0.004986865748457456, 0.0, 0.0, 0.0, │
00:00:34 #7230 [Verbose] > │ 0.0, 0.0, v0) │
00:00:34 #7231 [Verbose] > │ and closure96 () () : UH1 = │
00:00:34 #7232 [Verbose] > │ let v0 : (unit -> UH1) = closure97() │
00:00:34 #7233 [Verbose] > │ UH1_0(0.0, 8.422578125E-06, 0.32, -0.004986865748457456, 0.0, 0.0, 0.0, │
00:00:34 #7234 [Verbose] > │ 0.0, 0.0, v0) │
00:00:34 #7235 [Verbose] > │ and closure95 () () : UH1 = │
00:00:34 #7236 [Verbose] > │ let v0 : (unit -> UH1) = closure96() │
00:00:34 #7237 [Verbose] > │ UH1_0(0.0, 8.422578125E-06, 0.31, -0.004882205394146359, 0.0, 0.0, 0.0, │
00:00:34 #7238 [Verbose] > │ 0.0, 0.0, v0) │
00:00:34 #7239 [Verbose] > │ and closure94 () () : UH1 = │
00:00:34 #7240 [Verbose] > │ let v0 : (unit -> UH1) = closure95() │
00:00:34 #7241 [Verbose] > │ UH1_0(0.0, 8.422578125E-06, 0.3, -0.004675081213427074, 0.0, 0.0, 0.0, │
00:00:34 #7242 [Verbose] > │ 0.0, 0.0, v0) │
00:00:34 #7243 [Verbose] > │ and closure93 () () : UH1 = │
00:00:34 #7244 [Verbose] > │ let v0 : (unit -> UH1) = closure94() │
00:00:34 #7245 [Verbose] > │ UH1_0(0.0, 8.422578125E-06, 0.29000000000000004, -0.00436984016313259, │
00:00:34 #7246 [Verbose] > │ 0.0, 0.0, 0.0, 0.0, 0.0, v0) │
00:00:34 #7247 [Verbose] > │ and closure92 () () : UH1 = │
00:00:34 #7248 [Verbose] > │ let v0 : (unit -> UH1) = closure93() │
00:00:34 #7249 [Verbose] > │ UH1_0(0.0, 8.422578125E-06, 0.28, -0.003972888398568771, 0.0, 0.0, 0.0, │
00:00:34 #7250 [Verbose] > │ 0.0, 0.0, v0) │
00:00:34 #7251 [Verbose] > │ and closure91 () () : UH1 = │
00:00:34 #7252 [Verbose] > │ let v0 : (unit -> UH1) = closure92() │
00:00:34 #7253 [Verbose] > │ UH1_0(0.0, 8.422578125E-06, 0.27, -0.003492556826244686, 0.0, 0.0, 0.0, │
00:00:34 #7254 [Verbose] > │ 0.0, 0.0, v0) │
00:00:34 #7255 [Verbose] > │ and closure90 () () : UH1 = │
00:00:34 #7256 [Verbose] > │ let v0 : (unit -> UH1) = closure91() │
00:00:34 #7257 [Verbose] > │ UH1_0(0.0, 8.422578125E-06, 0.26, -0.0029389262614623636, 0.0, 0.0, 0.0, │
00:00:34 #7258 [Verbose] > │ 0.0, 0.0, v0) │
00:00:34 #7259 [Verbose] > │ and closure89 () () : UH1 = │
00:00:34 #7260 [Verbose] > │ let v0 : (unit -> UH1) = closure90() │
00:00:34 #7261 [Verbose] > │ UH1_0(0.0, 8.422578125E-06, 0.25, -0.002323615860218842, 0.0, 0.0, 0.0, │
00:00:34 #7262 [Verbose] > │ 0.0, 0.0, v0) │
00:00:34 #7263 [Verbose] > │ and closure88 () () : UH1 = │
00:00:34 #7264 [Verbose] > │ let v0 : (unit -> UH1) = closure89() │
00:00:34 #7265 [Verbose] > │ UH1_0(0.0, 8.422578125E-06, 0.24000000000000002, -0.001659539265642642, │
00:00:34 #7266 [Verbose] > │ 0.0, 0.0, 0.0, 0.0, 0.0, v0) │
00:00:34 #7267 [Verbose] > │ and closure87 () () : UH1 = │
00:00:34 #7268 [Verbose] > │ let v0 : (unit -> UH1) = closure88() │
00:00:34 #7269 [Verbose] > │ UH1_0(0.0, 8.422578125E-06, 0.23, -0.0009606335867685418, 0.0, 0.0, 0.0, │
00:00:34 #7270 [Verbose] > │ 0.0, 0.0, v0) │
00:00:34 #7271 [Verbose] > │ and closure86 () () : UH1 = │
00:00:34 #7272 [Verbose] > │ let v0 : (unit -> UH1) = closure87() │
00:00:34 #7273 [Verbose] > │ UH1_0(0.0, 8.422578125E-06, 0.22, -0.00024156689762753317, 0.0, 0.0, │
00:00:34 #7274 [Verbose] > │ 0.0, 0.0, 0.0, v0) │
00:00:34 #7275 [Verbose] > │ and closure85 () () : UH1 = │
00:00:34 #7276 [Verbose] > │ let v0 : (unit -> UH1) = closure86() │
00:00:34 #7277 [Verbose] > │ UH1_0(0.0, 8.422578125E-06, 0.21000000000000002, 0.00048256960457257535, │
00:00:34 #7278 [Verbose] > │ 0.0, 0.0, 0.0, 0.0, 0.0, v0) │
00:00:34 #7279 [Verbose] > │ and closure84 () () : UH1 = │
00:00:34 #7280 [Verbose] > │ let v0 : (unit -> UH1) = closure85() │
00:00:34 #7281 [Verbose] > │ UH1_0(0.0, 8.422578125E-06, 0.2, 0.0011965783214377905, 0.0, 0.0, 0.0, │
00:00:34 #7282 [Verbose] > │ 0.0, 0.0, v0) │
00:00:34 #7283 [Verbose] > │ and closure83 () () : UH1 = │
00:00:34 #7284 [Verbose] > │ let v0 : (unit -> UH1) = closure84() │
00:00:34 #7285 [Verbose] > │ UH1_0(0.0, 8.422578125E-06, 0.19, 0.0018854742084416015, 0.0, 0.0, 0.0, │
00:00:34 #7286 [Verbose] > │ 0.0, 0.0, v0) │
00:00:34 #7287 [Verbose] > │ and closure82 () () : UH1 = │
00:00:34 #7288 [Verbose] > │ let v0 : (unit -> UH1) = closure83() │
00:00:34 #7289 [Verbose] > │ UH1_0(0.0, 8.422578125E-06, 0.18000000000000002, 0.002534799269067951, │
00:00:34 #7290 [Verbose] > │ 0.0, 0.0, 0.0, 0.0, 0.0, v0) │
00:00:34 #7291 [Verbose] > │ and closure81 () () : UH1 = │
00:00:34 #7292 [Verbose] > │ let v0 : (unit -> UH1) = closure82() │
00:00:34 #7293 [Verbose] > │ UH1_0(0.0, 8.422578125E-06, 0.17, 0.0031309259876915697, 0.0, 0.0, 0.0, │
00:00:34 #7294 [Verbose] > │ 0.0, 0.0, v0) │
00:00:34 #7295 [Verbose] > │ and closure80 () () : UH1 = │
00:00:34 #7296 [Verbose] > │ let v0 : (unit -> UH1) = closure81() │
00:00:34 #7297 [Verbose] > │ UH1_0(0.0, 8.422578125E-06, 0.16, 0.0036613433329888666, 0.0, 0.0, 0.0, │
00:00:34 #7298 [Verbose] > │ 0.0, 0.0, v0) │
00:00:34 #7299 [Verbose] > │ and closure79 () () : UH1 = │
00:00:34 #7300 [Verbose] > │ let v0 : (unit -> UH1) = closure80() │
00:00:34 #7301 [Verbose] > │ UH1_0(0.0, 8.422578125E-06, 0.15000000000000002, 0.0041149193294682815, │
00:00:34 #7302 [Verbose] > │ 0.0, 0.0, 0.0, 0.0, 0.0, v0) │
00:00:34 #7303 [Verbose] > │ and closure78 () () : UH1 = │
00:00:34 #7304 [Verbose] > │ let v0 : (unit -> UH1) = closure79() │
00:00:34 #7305 [Verbose] > │ UH1_0(0.0, 8.422578125E-06, 0.14, 0.004482134686478519, 0.0, 0.0, 0.0, │
00:00:34 #7306 [Verbose] > │ 0.0, 0.0, v0) │
00:00:34 #7307 [Verbose] > │ and closure77 () () : UH1 = │
00:00:34 #7308 [Verbose] > │ let v0 : (unit -> UH1) = closure78() │
00:00:34 #7309 [Verbose] > │ UH1_0(0.0, 8.422578125E-06, 0.13, 0.004755282581475768, 0.0, 0.0, 0.0, │
00:00:34 #7310 [Verbose] > │ 0.0, 0.0, v0) │
00:00:34 #7311 [Verbose] > │ and closure76 () () : UH1 = │
00:00:34 #7312 [Verbose] > │ let v0 : (unit -> UH1) = closure77() │
00:00:34 #7313 [Verbose] > │ UH1_0(0.0, 8.422578125E-06, 0.12, 0.004928630404658255, 0.0, 0.0, 0.0, │
00:00:34 #7314 [Verbose] > │ 0.0, 0.0, v0) │
00:00:34 #7315 [Verbose] > │ and closure75 () () : UH1 = │
00:00:34 #7316 [Verbose] > │ let v0 : (unit -> UH1) = closure76() │
00:00:34 #7317 [Verbose] > │ UH1_0(0.0, 8.422578125E-06, 0.11, 0.004998540070400965, 0.0, 0.0, 0.0, │
00:00:34 #7318 [Verbose] > │ 0.0, 0.0, v0) │
00:00:34 #7319 [Verbose] > │ and closure74 () () : UH1 = │
00:00:34 #7320 [Verbose] > │ let v0 : (unit -> UH1) = closure75() │
00:00:34 #7321 [Verbose] > │ UH1_0(0.0, 8.422578125E-06, 0.09999999999999999, 0.00496354437049027, │
00:00:34 #7322 [Verbose] > │ 0.0, 0.0, 0.0, 0.0, 0.0, v0) │
00:00:34 #7323 [Verbose] > │ and closure73 () () : UH1 = │
00:00:34 #7324 [Verbose] > │ let v0 : (unit -> UH1) = closure74() │
00:00:34 #7325 [Verbose] > │ UH1_0(0.0, 8.422578125E-06, 0.09, 0.004824377766717757, 0.0, 0.0, 0.0, │
00:00:34 #7326 [Verbose] > │ 0.0, 0.0, v0) │
00:00:34 #7327 [Verbose] > │ and closure72 () () : UH1 = │
00:00:34 #7328 [Verbose] > │ let v0 : (unit -> UH1) = closure73() │
00:00:34 #7329 [Verbose] > │ UH1_0(0.0, 8.422578125E-06, 0.08, 0.004583960976582912, 0.0, 0.0, 0.0, │
00:00:34 #7330 [Verbose] > │ 0.0, 0.0, v0) │
00:00:34 #7331 [Verbose] > │ and closure71 () () : UH1 = │
00:00:34 #7332 [Verbose] > │ let v0 : (unit -> UH1) = closure72() │
00:00:34 #7333 [Verbose] > │ UH1_0(0.0, 8.422578125E-06, 0.06999999999999999, 0.004247339675607605, │
00:00:34 #7334 [Verbose] > │ 0.0, 0.0, 0.0, 0.0, 0.0, v0) │
00:00:34 #7335 [Verbose] > │ and closure70 () () : UH1 = │
00:00:34 #7336 [Verbose] > │ let v0 : (unit -> UH1) = closure71() │
00:00:34 #7337 [Verbose] > │ UH1_0(0.0, 8.422578125E-06, 0.060000000000000005, 0.0038215786027292415, │
00:00:34 #7338 [Verbose] > │ 0.0, 0.0, 0.0, 0.0, 0.0, v0) │
00:00:34 #7339 [Verbose] > │ and closure69 () () : UH1 = │
00:00:34 #7340 [Verbose] > │ let v0 : (unit -> UH1) = closure70() │
00:00:34 #7341 [Verbose] > │ UH1_0(0.0, 8.422578125E-06, 0.05, 0.0033156132912039757, 0.0, 0.0, 0.0, │
00:00:34 #7342 [Verbose] > │ 0.0, 0.0, v0) │
00:00:34 #7343 [Verbose] > │ and closure68 () () : UH1 = │
00:00:34 #7344 [Verbose] > │ let v0 : (unit -> UH1) = closure69() │
00:00:34 #7345 [Verbose] > │ UH1_0(0.0, 8.422578125E-06, 0.04, 0.00274006253677335, 0.0, 0.0, 0.0, │
00:00:34 #7346 [Verbose] > │ 0.0, 0.0, v0) │
00:00:34 #7347 [Verbose] > │ and closure67 () () : UH1 = │
00:00:34 #7348 [Verbose] > │ let v0 : (unit -> UH1) = closure68() │
00:00:34 #7349 [Verbose] > │ UH1_0(0.0, 8.422578125E-06, 0.03, 0.0021070055388626454, 0.0, 0.0, 0.0, │
00:00:34 #7350 [Verbose] > │ 0.0, 0.0, v0) │
00:00:34 #7351 [Verbose] > │ and closure66 () () : UH1 = │
00:00:34 #7352 [Verbose] > │ let v0 : (unit -> UH1) = closure67() │
00:00:34 #7353 [Verbose] > │ UH1_0(0.0, 8.422578125E-06, 0.02, 0.0014297283919934465, 0.0, 0.0, 0.0, │
00:00:34 #7354 [Verbose] > │ 0.0, 0.0, v0) │
00:00:34 #7355 [Verbose] > │ and closure132 (v0 : (unit -> UH1), v1 : (unit -> UH3)) () : UH1 = │
00:00:34 #7356 [Verbose] > │ let v2 : UH3 = v1 () │
00:00:34 #7357 [Verbose] > │ let v3 : UH1 = v0 () │
00:00:34 #7358 [Verbose] > │ match v2 with │
00:00:34 #7359 [Verbose] > │ | UH3_0(v4, v5, v6, v7, v8, v9, v10, v11, v12, v13) -> (* StreamCons *) │
00:00:34 #7360 [Verbose] > │ match v3 with │
00:00:34 #7361 [Verbose] > │ | UH1_0(v14, v15, v16, v17, v18, v19, v20, v21, v22, v23) -> (* │
00:00:34 #7362 [Verbose] > │ StreamCons *) │
00:00:34 #7363 [Verbose] > │ let v24 : float = v9 * 1.25E-05 │
00:00:34 #7364 [Verbose] > │ let v25 : float = v19 + v24 │
00:00:34 #7365 [Verbose] > │ let v26 : float = 1.25E-05 * v6 │
00:00:34 #7366 [Verbose] > │ let v27 : float = 1.25E-05 * v7 │
00:00:34 #7367 [Verbose] > │ let v28 : float = 1.25E-05 * v8 │
00:00:34 #7368 [Verbose] > │ let v29 : float = v16 + v26 │
00:00:34 #7369 [Verbose] > │ let v30 : float = v17 + v27 │
00:00:34 #7370 [Verbose] > │ let v31 : float = v18 + v28 │
00:00:34 #7371 [Verbose] > │ let v32 : float = 1.25E-05 * v10 │
00:00:34 #7372 [Verbose] > │ let v33 : float = 1.25E-05 * v11 │
00:00:34 #7373 [Verbose] > │ let v34 : float = 1.25E-05 * v12 │
00:00:34 #7374 [Verbose] > │ let v35 : float = v20 + v32 │
00:00:34 #7375 [Verbose] > │ let v36 : float = v21 + v33 │
00:00:34 #7376 [Verbose] > │ let v37 : float = v22 + v34 │
00:00:34 #7377 [Verbose] > │ let v38 : (unit -> UH1) = closure132(v23, v13) │
00:00:34 #7378 [Verbose] > │ UH1_0(v14, v15, v29, v30, v31, v25, v35, v36, v37, v38) │
00:00:34 #7379 [Verbose] > │ | UH1_1 -> (* StreamNil *) │
00:00:34 #7380 [Verbose] > │ UH1_1 │
00:00:34 #7381 [Verbose] > │ | UH3_1 -> (* StreamNil *) │
00:00:34 #7382 [Verbose] > │ UH1_1 │
00:00:34 #7383 [Verbose] > │ and closure133 (v0 : UH1) () : UH1 = │
00:00:34 #7384 [Verbose] > │ v0 │
00:00:34 #7385 [Verbose] > │ and closure134 (v0 : UH1, v1 : Mut0) () : UH1 = │
00:00:34 #7386 [Verbose] > │ let v2 : US0 = v1.l0 │
00:00:34 #7387 [Verbose] > │ match v2 with │
00:00:34 #7388 [Verbose] > │ | US0_0(v3) -> (* Computed *) │
00:00:34 #7389 [Verbose] > │ v3 │
00:00:34 #7390 [Verbose] > │ | US0_1(v4) -> (* NotComputed *) │
00:00:34 #7391 [Verbose] > │ let v5 : UH1 = v4 () │
00:00:34 #7392 [Verbose] > │ let v20 : UH1 = │
00:00:34 #7393 [Verbose] > │ match v5 with │
00:00:34 #7394 [Verbose] > │ | UH1_0(v7, v8, v9, v10, v11, v12, v13, v14, v15, v16) -> (* │
00:00:34 #7395 [Verbose] > │ StreamCons *) │
00:00:34 #7396 [Verbose] > │ let v17 : (unit -> UH1) = method3(v0, v16) │
00:00:34 #7397 [Verbose] > │ UH1_0(v7, v8, v9, v10, v11, v12, v13, v14, v15, v17) │
00:00:34 #7398 [Verbose] > │ | UH1_1 -> (* StreamNil *) │
00:00:34 #7399 [Verbose] > │ UH1_1 │
00:00:34 #7400 [Verbose] > │ let v21 : US0 = US0_0(v20) │
00:00:34 #7401 [Verbose] > │ v1.l0 <- v21 │
00:00:34 #7402 [Verbose] > │ v20 │
00:00:34 #7403 [Verbose] > │ and method3 (v0 : UH1, v1 : (unit -> UH1)) : (unit -> UH1) = │
00:00:34 #7404 [Verbose] > │ let v2 : US0 = US0_1(v1) │
00:00:34 #7405 [Verbose] > │ let v3 : Mut0 = {l0 = v2} : Mut0 │
00:00:34 #7406 [Verbose] > │ closure134(v0, v3) │
00:00:34 #7407 [Verbose] > │ and closure135 (v0 : (unit -> UH1), v1 : (unit -> UH3)) () : UH1 = │
00:00:34 #7408 [Verbose] > │ let v2 : UH3 = v1 () │
00:00:34 #7409 [Verbose] > │ let v3 : UH1 = v0 () │
00:00:34 #7410 [Verbose] > │ match v2 with │
00:00:34 #7411 [Verbose] > │ | UH3_0(v4, v5, v6, v7, v8, v9, v10, v11, v12, v13) -> (* StreamCons *) │
00:00:34 #7412 [Verbose] > │ match v3 with │
00:00:34 #7413 [Verbose] > │ | UH1_0(v14, v15, v16, v17, v18, v19, v20, v21, v22, v23) -> (* │
00:00:34 #7414 [Verbose] > │ StreamCons *) │
00:00:34 #7415 [Verbose] > │ let v24 : float = v9 * 2.5E-05 │
00:00:34 #7416 [Verbose] > │ let v25 : float = v19 + v24 │
00:00:34 #7417 [Verbose] > │ let v26 : float = 2.5E-05 * v6 │
00:00:34 #7418 [Verbose] > │ let v27 : float = 2.5E-05 * v7 │
00:00:34 #7419 [Verbose] > │ let v28 : float = 2.5E-05 * v8 │
00:00:34 #7420 [Verbose] > │ let v29 : float = v16 + v26 │
00:00:34 #7421 [Verbose] > │ let v30 : float = v17 + v27 │
00:00:34 #7422 [Verbose] > │ let v31 : float = v18 + v28 │
00:00:34 #7423 [Verbose] > │ let v32 : float = 2.5E-05 * v10 │
00:00:34 #7424 [Verbose] > │ let v33 : float = 2.5E-05 * v11 │
00:00:34 #7425 [Verbose] > │ let v34 : float = 2.5E-05 * v12 │
00:00:34 #7426 [Verbose] > │ let v35 : float = v20 + v32 │
00:00:34 #7427 [Verbose] > │ let v36 : float = v21 + v33 │
00:00:34 #7428 [Verbose] > │ let v37 : float = v22 + v34 │
00:00:34 #7429 [Verbose] > │ let v38 : (unit -> UH1) = closure135(v23, v13) │
00:00:34 #7430 [Verbose] > │ UH1_0(v14, v15, v29, v30, v31, v25, v35, v36, v37, v38) │
00:00:34 #7431 [Verbose] > │ | UH1_1 -> (* StreamNil *) │
00:00:34 #7432 [Verbose] > │ UH1_1 │
00:00:34 #7433 [Verbose] > │ | UH3_1 -> (* StreamNil *) │
00:00:34 #7434 [Verbose] > │ UH1_1 │
00:00:34 #7435 [Verbose] > │ and closure136 (v0 : (unit -> UH3), v1 : (unit -> UH3)) () : UH3 = │
00:00:34 #7436 [Verbose] > │ let v2 : UH3 = v1 () │
00:00:34 #7437 [Verbose] > │ let v3 : UH3 = v0 () │
00:00:34 #7438 [Verbose] > │ match v2 with │
00:00:34 #7439 [Verbose] > │ | UH3_0(v4, v5, v6, v7, v8, v9, v10, v11, v12, v13) -> (* StreamCons *) │
00:00:34 #7440 [Verbose] > │ match v3 with │
00:00:34 #7441 [Verbose] > │ | UH3_0(v14, v15, v16, v17, v18, v19, v20, v21, v22, v23) -> (* │
00:00:34 #7442 [Verbose] > │ StreamCons *) │
00:00:34 #7443 [Verbose] > │ let v24 : float = v4 + v14 │
00:00:34 #7444 [Verbose] > │ let v25 : float = v5 + v15 │
00:00:34 #7445 [Verbose] > │ let v26 : float = v9 + v19 │
00:00:34 #7446 [Verbose] > │ let v27 : float = v6 + v16 │
00:00:34 #7447 [Verbose] > │ let v28 : float = v7 + v17 │
00:00:34 #7448 [Verbose] > │ let v29 : float = v8 + v18 │
00:00:34 #7449 [Verbose] > │ let v30 : float = v10 + v20 │
00:00:34 #7450 [Verbose] > │ let v31 : float = v11 + v21 │
00:00:34 #7451 [Verbose] > │ let v32 : float = v12 + v22 │
00:00:34 #7452 [Verbose] > │ let v33 : (unit -> UH3) = closure136(v23, v13) │
00:00:34 #7453 [Verbose] > │ UH3_0(v24, v25, v27, v28, v29, v26, v30, v31, v32, v33) │
00:00:34 #7454 [Verbose] > │ | UH3_1 -> (* StreamNil *) │
00:00:34 #7455 [Verbose] > │ UH3_1 │
00:00:34 #7456 [Verbose] > │ | UH3_1 -> (* StreamNil *) │
00:00:34 #7457 [Verbose] > │ UH3_1 │
00:00:34 #7458 [Verbose] > │ and closure137 (v0 : (unit -> UH1), v1 : (unit -> UH3)) () : UH1 = │
00:00:34 #7459 [Verbose] > │ let v2 : UH3 = v1 () │
00:00:34 #7460 [Verbose] > │ let v3 : UH1 = v0 () │
00:00:34 #7461 [Verbose] > │ match v2 with │
00:00:34 #7462 [Verbose] > │ | UH3_0(v4, v5, v6, v7, v8, v9, v10, v11, v12, v13) -> (* StreamCons *) │
00:00:34 #7463 [Verbose] > │ match v3 with │
00:00:34 #7464 [Verbose] > │ | UH1_0(v14, v15, v16, v17, v18, v19, v20, v21, v22, v23) -> (* │
00:00:34 #7465 [Verbose] > │ StreamCons *) │
00:00:34 #7466 [Verbose] > │ let v24 : float = v9 * 4.166666666666667E-06 │
00:00:34 #7467 [Verbose] > │ let v25 : float = v19 + v24 │
00:00:34 #7468 [Verbose] > │ let v26 : float = 4.166666666666667E-06 * v6 │
00:00:34 #7469 [Verbose] > │ let v27 : float = 4.166666666666667E-06 * v7 │
00:00:34 #7470 [Verbose] > │ let v28 : float = 4.166666666666667E-06 * v8 │
00:00:34 #7471 [Verbose] > │ let v29 : float = v16 + v26 │
00:00:34 #7472 [Verbose] > │ let v30 : float = v17 + v27 │
00:00:34 #7473 [Verbose] > │ let v31 : float = v18 + v28 │
00:00:34 #7474 [Verbose] > │ let v32 : float = 4.166666666666667E-06 * v10 │
00:00:34 #7475 [Verbose] > │ let v33 : float = 4.166666666666667E-06 * v11 │
00:00:34 #7476 [Verbose] > │ let v34 : float = 4.166666666666667E-06 * v12 │
00:00:34 #7477 [Verbose] > │ let v35 : float = v20 + v32 │
00:00:34 #7478 [Verbose] > │ let v36 : float = v21 + v33 │
00:00:34 #7479 [Verbose] > │ let v37 : float = v22 + v34 │
00:00:34 #7480 [Verbose] > │ let v38 : (unit -> UH1) = closure137(v23, v13) │
00:00:34 #7481 [Verbose] > │ UH1_0(v14, v15, v29, v30, v31, v25, v35, v36, v37, v38) │
00:00:34 #7482 [Verbose] > │ | UH1_1 -> (* StreamNil *) │
00:00:34 #7483 [Verbose] > │ UH1_1 │
00:00:34 #7484 [Verbose] > │ | UH3_1 -> (* StreamNil *) │
00:00:34 #7485 [Verbose] > │ UH1_1 │
00:00:34 #7486 [Verbose] > │ and closure131 (v0 : (UH1 -> UH3)) (v1 : UH1) : UH1 = │
00:00:34 #7487 [Verbose] > │ let v2 : UH3 = v0 v1 │
00:00:34 #7488 [Verbose] > │ let v44 : UH1 = │
00:00:34 #7489 [Verbose] > │ match v2 with │
00:00:34 #7490 [Verbose] > │ | UH3_0(v3, v4, v5, v6, v7, v8, v9, v10, v11, v12) -> (* StreamCons │
00:00:34 #7491 [Verbose] > │ *) │
00:00:34 #7492 [Verbose] > │ match v1 with │
00:00:34 #7493 [Verbose] > │ | UH1_0(v13, v14, v15, v16, v17, v18, v19, v20, v21, v22) -> (* │
00:00:34 #7494 [Verbose] > │ StreamCons *) │
00:00:34 #7495 [Verbose] > │ let v23 : float = v8 * 1.25E-05 │
00:00:34 #7496 [Verbose] > │ let v24 : float = v18 + v23 │
00:00:34 #7497 [Verbose] > │ let v25 : float = 1.25E-05 * v5 │
00:00:34 #7498 [Verbose] > │ let v26 : float = 1.25E-05 * v6 │
00:00:34 #7499 [Verbose] > │ let v27 : float = 1.25E-05 * v7 │
00:00:34 #7500 [Verbose] > │ let v28 : float = v15 + v25 │
00:00:34 #7501 [Verbose] > │ let v29 : float = v16 + v26 │
00:00:34 #7502 [Verbose] > │ let v30 : float = v17 + v27 │
00:00:34 #7503 [Verbose] > │ let v31 : float = 1.25E-05 * v9 │
00:00:34 #7504 [Verbose] > │ let v32 : float = 1.25E-05 * v10 │
00:00:34 #7505 [Verbose] > │ let v33 : float = 1.25E-05 * v11 │
00:00:34 #7506 [Verbose] > │ let v34 : float = v19 + v31 │
00:00:34 #7507 [Verbose] > │ let v35 : float = v20 + v32 │
00:00:34 #7508 [Verbose] > │ let v36 : float = v21 + v33 │
00:00:34 #7509 [Verbose] > │ let v37 : (unit -> UH1) = closure132(v22, v12) │
00:00:34 #7510 [Verbose] > │ UH1_0(v13, v14, v28, v29, v30, v24, v34, v35, v36, v37) │
00:00:34 #7511 [Verbose] > │ | UH1_1 -> (* StreamNil *) │
00:00:34 #7512 [Verbose] > │ UH1_1 │
00:00:34 #7513 [Verbose] > │ | UH3_1 -> (* StreamNil *) │
00:00:34 #7514 [Verbose] > │ UH1_1 │
00:00:34 #7515 [Verbose] > │ let v45 : (unit -> UH1) = closure133(v44) │
00:00:34 #7516 [Verbose] > │ let v46 : (unit -> UH1) = method3(v44, v45) │
00:00:34 #7517 [Verbose] > │ let v47 : UH1 = v46 () │
00:00:34 #7518 [Verbose] > │ let v48 : UH3 = v0 v47 │
00:00:34 #7519 [Verbose] > │ let v90 : UH1 = │
00:00:34 #7520 [Verbose] > │ match v48 with │
00:00:34 #7521 [Verbose] > │ | UH3_0(v49, v50, v51, v52, v53, v54, v55, v56, v57, v58) -> (* │
00:00:34 #7522 [Verbose] > │ StreamCons *) │
00:00:34 #7523 [Verbose] > │ match v1 with │
00:00:34 #7524 [Verbose] > │ | UH1_0(v59, v60, v61, v62, v63, v64, v65, v66, v67, v68) -> (* │
00:00:34 #7525 [Verbose] > │ StreamCons *) │
00:00:34 #7526 [Verbose] > │ let v69 : float = v54 * 1.25E-05 │
00:00:34 #7527 [Verbose] > │ let v70 : float = v64 + v69 │
00:00:34 #7528 [Verbose] > │ let v71 : float = 1.25E-05 * v51 │
00:00:34 #7529 [Verbose] > │ let v72 : float = 1.25E-05 * v52 │
00:00:34 #7530 [Verbose] > │ let v73 : float = 1.25E-05 * v53 │
00:00:34 #7531 [Verbose] > │ let v74 : float = v61 + v71 │
00:00:34 #7532 [Verbose] > │ let v75 : float = v62 + v72 │
00:00:34 #7533 [Verbose] > │ let v76 : float = v63 + v73 │
00:00:34 #7534 [Verbose] > │ let v77 : float = 1.25E-05 * v55 │
00:00:34 #7535 [Verbose] > │ let v78 : float = 1.25E-05 * v56 │
00:00:34 #7536 [Verbose] > │ let v79 : float = 1.25E-05 * v57 │
00:00:34 #7537 [Verbose] > │ let v80 : float = v65 + v77 │
00:00:34 #7538 [Verbose] > │ let v81 : float = v66 + v78 │
00:00:34 #7539 [Verbose] > │ let v82 : float = v67 + v79 │
00:00:34 #7540 [Verbose] > │ let v83 : (unit -> UH1) = closure132(v68, v58) │
00:00:34 #7541 [Verbose] > │ UH1_0(v59, v60, v74, v75, v76, v70, v80, v81, v82, v83) │
00:00:34 #7542 [Verbose] > │ | UH1_1 -> (* StreamNil *) │
00:00:34 #7543 [Verbose] > │ UH1_1 │
00:00:34 #7544 [Verbose] > │ | UH3_1 -> (* StreamNil *) │
00:00:34 #7545 [Verbose] > │ UH1_1 │
00:00:34 #7546 [Verbose] > │ let v91 : (unit -> UH1) = closure133(v90) │
00:00:34 #7547 [Verbose] > │ let v92 : (unit -> UH1) = method3(v90, v91) │
00:00:34 #7548 [Verbose] > │ let v93 : UH1 = v92 () │
00:00:34 #7549 [Verbose] > │ let v94 : UH3 = v0 v93 │
00:00:34 #7550 [Verbose] > │ let v136 : UH1 = │
00:00:34 #7551 [Verbose] > │ match v94 with │
00:00:34 #7552 [Verbose] > │ | UH3_0(v95, v96, v97, v98, v99, v100, v101, v102, v103, v104) -> (* │
00:00:34 #7553 [Verbose] > │ StreamCons *) │
00:00:34 #7554 [Verbose] > │ match v1 with │
00:00:34 #7555 [Verbose] > │ | UH1_0(v105, v106, v107, v108, v109, v110, v111, v112, v113, │
00:00:34 #7556 [Verbose] > │ v114) -> (* StreamCons *) │
00:00:34 #7557 [Verbose] > │ let v115 : float = v100 * 2.5E-05 │
00:00:34 #7558 [Verbose] > │ let v116 : float = v110 + v115 │
00:00:34 #7559 [Verbose] > │ let v117 : float = 2.5E-05 * v97 │
00:00:34 #7560 [Verbose] > │ let v118 : float = 2.5E-05 * v98 │
00:00:34 #7561 [Verbose] > │ let v119 : float = 2.5E-05 * v99 │
00:00:34 #7562 [Verbose] > │ let v120 : float = v107 + v117 │
00:00:34 #7563 [Verbose] > │ let v121 : float = v108 + v118 │
00:00:34 #7564 [Verbose] > │ let v122 : float = v109 + v119 │
00:00:34 #7565 [Verbose] > │ let v123 : float = 2.5E-05 * v101 │
00:00:34 #7566 [Verbose] > │ let v124 : float = 2.5E-05 * v102 │
00:00:34 #7567 [Verbose] > │ let v125 : float = 2.5E-05 * v103 │
00:00:34 #7568 [Verbose] > │ let v126 : float = v111 + v123 │
00:00:34 #7569 [Verbose] > │ let v127 : float = v112 + v124 │
00:00:34 #7570 [Verbose] > │ let v128 : float = v113 + v125 │
00:00:34 #7571 [Verbose] > │ let v129 : (unit -> UH1) = closure135(v114, v104) │
00:00:34 #7572 [Verbose] > │ UH1_0(v105, v106, v120, v121, v122, v116, v126, v127, v128, │
00:00:34 #7573 [Verbose] > │ v129) │
00:00:34 #7574 [Verbose] > │ | UH1_1 -> (* StreamNil *) │
00:00:34 #7575 [Verbose] > │ UH1_1 │
00:00:34 #7576 [Verbose] > │ | UH3_1 -> (* StreamNil *) │
00:00:34 #7577 [Verbose] > │ UH1_1 │
00:00:34 #7578 [Verbose] > │ let v137 : (unit -> UH1) = closure133(v136) │
00:00:34 #7579 [Verbose] > │ let v138 : (unit -> UH1) = method3(v136, v137) │
00:00:34 #7580 [Verbose] > │ let v139 : UH1 = v138 () │
00:00:34 #7581 [Verbose] > │ let v140 : UH3 = v0 v139 │
00:00:34 #7582 [Verbose] > │ let v177 : UH3 = │
00:00:34 #7583 [Verbose] > │ match v2 with │
00:00:34 #7584 [Verbose] > │ | UH3_0(v141, v142, v143, v144, v145, v146, v147, v148, v149, v150) │
00:00:34 #7585 [Verbose] > │ -> (* StreamCons *) │
00:00:34 #7586 [Verbose] > │ match v48 with │
00:00:34 #7587 [Verbose] > │ | UH3_0(v151, v152, v153, v154, v155, v156, v157, v158, v159, │
00:00:34 #7588 [Verbose] > │ v160) -> (* StreamCons *) │
00:00:34 #7589 [Verbose] > │ let v161 : float = v141 + v151 │
00:00:34 #7590 [Verbose] > │ let v162 : float = v142 + v152 │
00:00:34 #7591 [Verbose] > │ let v163 : float = v146 + v156 │
00:00:34 #7592 [Verbose] > │ let v164 : float = v143 + v153 │
00:00:34 #7593 [Verbose] > │ let v165 : float = v144 + v154 │
00:00:34 #7594 [Verbose] > │ let v166 : float = v145 + v155 │
00:00:34 #7595 [Verbose] > │ let v167 : float = v147 + v157 │
00:00:34 #7596 [Verbose] > │ let v168 : float = v148 + v158 │
00:00:34 #7597 [Verbose] > │ let v169 : float = v149 + v159 │
00:00:34 #7598 [Verbose] > │ let v170 : (unit -> UH3) = closure136(v160, v150) │
00:00:34 #7599 [Verbose] > │ UH3_0(v161, v162, v164, v165, v166, v163, v167, v168, v169, │
00:00:34 #7600 [Verbose] > │ v170) │
00:00:34 #7601 [Verbose] > │ | UH3_1 -> (* StreamNil *) │
00:00:34 #7602 [Verbose] > │ UH3_1 │
00:00:34 #7603 [Verbose] > │ | UH3_1 -> (* StreamNil *) │
00:00:34 #7604 [Verbose] > │ UH3_1 │
00:00:34 #7605 [Verbose] > │ let v214 : UH3 = │
00:00:34 #7606 [Verbose] > │ match v177 with │
00:00:34 #7607 [Verbose] > │ | UH3_0(v178, v179, v180, v181, v182, v183, v184, v185, v186, v187) │
00:00:34 #7608 [Verbose] > │ -> (* StreamCons *) │
00:00:34 #7609 [Verbose] > │ match v48 with │
00:00:34 #7610 [Verbose] > │ | UH3_0(v188, v189, v190, v191, v192, v193, v194, v195, v196, │
00:00:34 #7611 [Verbose] > │ v197) -> (* StreamCons *) │
00:00:34 #7612 [Verbose] > │ let v198 : float = v178 + v188 │
00:00:34 #7613 [Verbose] > │ let v199 : float = v179 + v189 │
00:00:34 #7614 [Verbose] > │ let v200 : float = v183 + v193 │
00:00:34 #7615 [Verbose] > │ let v201 : float = v180 + v190 │
00:00:34 #7616 [Verbose] > │ let v202 : float = v181 + v191 │
00:00:34 #7617 [Verbose] > │ let v203 : float = v182 + v192 │
00:00:34 #7618 [Verbose] > │ let v204 : float = v184 + v194 │
00:00:34 #7619 [Verbose] > │ let v205 : float = v185 + v195 │
00:00:34 #7620 [Verbose] > │ let v206 : float = v186 + v196 │
00:00:34 #7621 [Verbose] > │ let v207 : (unit -> UH3) = closure136(v197, v187) │
00:00:34 #7622 [Verbose] > │ UH3_0(v198, v199, v201, v202, v203, v200, v204, v205, v206, │
00:00:34 #7623 [Verbose] > │ v207) │
00:00:34 #7624 [Verbose] > │ | UH3_1 -> (* StreamNil *) │
00:00:34 #7625 [Verbose] > │ UH3_1 │
00:00:34 #7626 [Verbose] > │ | UH3_1 -> (* StreamNil *) │
00:00:34 #7627 [Verbose] > │ UH3_1 │
00:00:34 #7628 [Verbose] > │ let v251 : UH3 = │
00:00:34 #7629 [Verbose] > │ match v214 with │
00:00:34 #7630 [Verbose] > │ | UH3_0(v215, v216, v217, v218, v219, v220, v221, v222, v223, v224) │
00:00:34 #7631 [Verbose] > │ -> (* StreamCons *) │
00:00:34 #7632 [Verbose] > │ match v94 with │
00:00:34 #7633 [Verbose] > │ | UH3_0(v225, v226, v227, v228, v229, v230, v231, v232, v233, │
00:00:34 #7634 [Verbose] > │ v234) -> (* StreamCons *) │
00:00:34 #7635 [Verbose] > │ let v235 : float = v215 + v225 │
00:00:34 #7636 [Verbose] > │ let v236 : float = v216 + v226 │
00:00:34 #7637 [Verbose] > │ let v237 : float = v220 + v230 │
00:00:34 #7638 [Verbose] > │ let v238 : float = v217 + v227 │
00:00:34 #7639 [Verbose] > │ let v239 : float = v218 + v228 │
00:00:34 #7640 [Verbose] > │ let v240 : float = v219 + v229 │
00:00:34 #7641 [Verbose] > │ let v241 : float = v221 + v231 │
00:00:34 #7642 [Verbose] > │ let v242 : float = v222 + v232 │
00:00:34 #7643 [Verbose] > │ let v243 : float = v223 + v233 │
00:00:34 #7644 [Verbose] > │ let v244 : (unit -> UH3) = closure136(v234, v224) │
00:00:34 #7645 [Verbose] > │ UH3_0(v235, v236, v238, v239, v240, v237, v241, v242, v243, │
00:00:34 #7646 [Verbose] > │ v244) │
00:00:34 #7647 [Verbose] > │ | UH3_1 -> (* StreamNil *) │
00:00:34 #7648 [Verbose] > │ UH3_1 │
00:00:34 #7649 [Verbose] > │ | UH3_1 -> (* StreamNil *) │
00:00:34 #7650 [Verbose] > │ UH3_1 │
00:00:34 #7651 [Verbose] > │ let v288 : UH3 = │
00:00:34 #7652 [Verbose] > │ match v251 with │
00:00:34 #7653 [Verbose] > │ | UH3_0(v252, v253, v254, v255, v256, v257, v258, v259, v260, v261) │
00:00:34 #7654 [Verbose] > │ -> (* StreamCons *) │
00:00:34 #7655 [Verbose] > │ match v94 with │
00:00:34 #7656 [Verbose] > │ | UH3_0(v262, v263, v264, v265, v266, v267, v268, v269, v270, │
00:00:34 #7657 [Verbose] > │ v271) -> (* StreamCons *) │
00:00:34 #7658 [Verbose] > │ let v272 : float = v252 + v262 │
00:00:34 #7659 [Verbose] > │ let v273 : float = v253 + v263 │
00:00:34 #7660 [Verbose] > │ let v274 : float = v257 + v267 │
00:00:34 #7661 [Verbose] > │ let v275 : float = v254 + v264 │
00:00:34 #7662 [Verbose] > │ let v276 : float = v255 + v265 │
00:00:34 #7663 [Verbose] > │ let v277 : float = v256 + v266 │
00:00:34 #7664 [Verbose] > │ let v278 : float = v258 + v268 │
00:00:34 #7665 [Verbose] > │ let v279 : float = v259 + v269 │
00:00:34 #7666 [Verbose] > │ let v280 : float = v260 + v270 │
00:00:34 #7667 [Verbose] > │ let v281 : (unit -> UH3) = closure136(v271, v261) │
00:00:34 #7668 [Verbose] > │ UH3_0(v272, v273, v275, v276, v277, v274, v278, v279, v280, │
00:00:34 #7669 [Verbose] > │ v281) │
00:00:34 #7670 [Verbose] > │ | UH3_1 -> (* StreamNil *) │
00:00:34 #7671 [Verbose] > │ UH3_1 │
00:00:34 #7672 [Verbose] > │ | UH3_1 -> (* StreamNil *) │
00:00:34 #7673 [Verbose] > │ UH3_1 │
00:00:34 #7674 [Verbose] > │ let v325 : UH3 = │
00:00:34 #7675 [Verbose] > │ match v288 with │
00:00:34 #7676 [Verbose] > │ | UH3_0(v289, v290, v291, v292, v293, v294, v295, v296, v297, v298) │
00:00:34 #7677 [Verbose] > │ -> (* StreamCons *) │
00:00:34 #7678 [Verbose] > │ match v140 with │
00:00:34 #7679 [Verbose] > │ | UH3_0(v299, v300, v301, v302, v303, v304, v305, v306, v307, │
00:00:34 #7680 [Verbose] > │ v308) -> (* StreamCons *) │
00:00:34 #7681 [Verbose] > │ let v309 : float = v289 + v299 │
00:00:34 #7682 [Verbose] > │ let v310 : float = v290 + v300 │
00:00:34 #7683 [Verbose] > │ let v311 : float = v294 + v304 │
00:00:34 #7684 [Verbose] > │ let v312 : float = v291 + v301 │
00:00:34 #7685 [Verbose] > │ let v313 : float = v292 + v302 │
00:00:34 #7686 [Verbose] > │ let v314 : float = v293 + v303 │
00:00:34 #7687 [Verbose] > │ let v315 : float = v295 + v305 │
00:00:34 #7688 [Verbose] > │ let v316 : float = v296 + v306 │
00:00:34 #7689 [Verbose] > │ let v317 : float = v297 + v307 │
00:00:34 #7690 [Verbose] > │ let v318 : (unit -> UH3) = closure136(v308, v298) │
00:00:34 #7691 [Verbose] > │ UH3_0(v309, v310, v312, v313, v314, v311, v315, v316, v317, │
00:00:34 #7692 [Verbose] > │ v318) │
00:00:34 #7693 [Verbose] > │ | UH3_1 -> (* StreamNil *) │
00:00:34 #7694 [Verbose] > │ UH3_1 │
00:00:34 #7695 [Verbose] > │ | UH3_1 -> (* StreamNil *) │
00:00:34 #7696 [Verbose] > │ UH3_1 │
00:00:34 #7697 [Verbose] > │ let v367 : UH1 = │
00:00:34 #7698 [Verbose] > │ match v325 with │
00:00:34 #7699 [Verbose] > │ | UH3_0(v326, v327, v328, v329, v330, v331, v332, v333, v334, v335) │
00:00:34 #7700 [Verbose] > │ -> (* StreamCons *) │
00:00:34 #7701 [Verbose] > │ match v1 with │
00:00:34 #7702 [Verbose] > │ | UH1_0(v336, v337, v338, v339, v340, v341, v342, v343, v344, │
00:00:34 #7703 [Verbose] > │ v345) -> (* StreamCons *) │
00:00:34 #7704 [Verbose] > │ let v346 : float = v331 * 4.166666666666667E-06 │
00:00:34 #7705 [Verbose] > │ let v347 : float = v341 + v346 │
00:00:34 #7706 [Verbose] > │ let v348 : float = 4.166666666666667E-06 * v328 │
00:00:34 #7707 [Verbose] > │ let v349 : float = 4.166666666666667E-06 * v329 │
00:00:34 #7708 [Verbose] > │ let v350 : float = 4.166666666666667E-06 * v330 │
00:00:34 #7709 [Verbose] > │ let v351 : float = v338 + v348 │
00:00:34 #7710 [Verbose] > │ let v352 : float = v339 + v349 │
00:00:34 #7711 [Verbose] > │ let v353 : float = v340 + v350 │
00:00:34 #7712 [Verbose] > │ let v354 : float = 4.166666666666667E-06 * v332 │
00:00:34 #7713 [Verbose] > │ let v355 : float = 4.166666666666667E-06 * v333 │
00:00:34 #7714 [Verbose] > │ let v356 : float = 4.166666666666667E-06 * v334 │
00:00:34 #7715 [Verbose] > │ let v357 : float = v342 + v354 │
00:00:34 #7716 [Verbose] > │ let v358 : float = v343 + v355 │
00:00:34 #7717 [Verbose] > │ let v359 : float = v344 + v356 │
00:00:34 #7718 [Verbose] > │ let v360 : (unit -> UH1) = closure137(v345, v335) │
00:00:34 #7719 [Verbose] > │ UH1_0(v336, v337, v351, v352, v353, v347, v357, v358, v359, │
00:00:34 #7720 [Verbose] > │ v360) │
00:00:34 #7721 [Verbose] > │ | UH1_1 -> (* StreamNil *) │
00:00:34 #7722 [Verbose] > │ UH1_1 │
00:00:34 #7723 [Verbose] > │ | UH3_1 -> (* StreamNil *) │
00:00:34 #7724 [Verbose] > │ UH1_1 │
00:00:34 #7725 [Verbose] > │ let v368 : (unit -> UH1) = closure133(v367) │
00:00:34 #7726 [Verbose] > │ let v369 : (unit -> UH1) = method3(v367, v368) │
00:00:34 #7727 [Verbose] > │ let v370 : UH1 = v369 () │
00:00:34 #7728 [Verbose] > │ v370 │
00:00:34 #7729 [Verbose] > │ and closure130 () (v0 : (UH1 -> UH3)) : (UH1 -> UH1) = │
00:00:34 #7730 [Verbose] > │ closure131(v0) │
00:00:34 #7731 [Verbose] > │ and method2 () : ((UH1 -> UH3) -> (UH1 -> UH1)) = │
00:00:34 #7732 [Verbose] > │ closure130() │
00:00:34 #7733 [Verbose] > │ and closure138 () struct (v0 : float, v1 : float, v2 : float, v3 : float, v4 │
00:00:34 #7734 [Verbose] > │ : float, v5 : float, v6 : float, v7 : float, v8 : float) : struct (float * │
00:00:34 #7735 [Verbose] > │ float * float) = │
00:00:34 #7736 [Verbose] > │ let v9 : float = v2 * v2 │
00:00:34 #7737 [Verbose] > │ let v10 : float = v3 * v3 │
00:00:34 #7738 [Verbose] > │ let v11 : float = v9 + v10 │
00:00:34 #7739 [Verbose] > │ let v12 : float = v4 * v4 │
00:00:34 #7740 [Verbose] > │ let v13 : float = v11 + v12 │
00:00:34 #7741 [Verbose] > │ let v14 : float = sqrt v13 │
00:00:34 #7742 [Verbose] > │ let v15 : float = -5384.0 * v14 │
00:00:34 #7743 [Verbose] > │ let v16 : float = v15 * v2 │
00:00:34 #7744 [Verbose] > │ let v17 : float = v15 * v3 │
00:00:34 #7745 [Verbose] > │ let v18 : float = v15 * v4 │
00:00:34 #7746 [Verbose] > │ let v19 : float = v16 / v14 │
00:00:34 #7747 [Verbose] > │ let v20 : float = v17 / v14 │
00:00:34 #7748 [Verbose] > │ let v21 : float = v18 / v14 │
00:00:34 #7749 [Verbose] > │ struct (v19, v20, v21) │
00:00:34 #7750 [Verbose] > │ and closure139 () struct (v0 : float, v1 : float, v2 : float, v3 : float, v4 │
00:00:34 #7751 [Verbose] > │ : float, v5 : float, v6 : float, v7 : float, v8 : float) : struct (float * │
00:00:34 #7752 [Verbose] > │ float * float) = │
00:00:34 #7753 [Verbose] > │ let v9 : float = v2 + -0.65 │
00:00:34 #7754 [Verbose] > │ let v10 : float = v9 * v9 │
00:00:34 #7755 [Verbose] > │ let v11 : float = v3 * v3 │
00:00:34 #7756 [Verbose] > │ let v12 : float = v10 + v11 │
00:00:34 #7757 [Verbose] > │ let v13 : float = v4 * v4 │
00:00:34 #7758 [Verbose] > │ let v14 : float = v12 + v13 │
00:00:34 #7759 [Verbose] > │ let v15 : float = sqrt v14 │
00:00:34 #7760 [Verbose] > │ let v16 : float = -5384.0 * v15 │
00:00:34 #7761 [Verbose] > │ let v17 : float = v16 * v9 │
00:00:34 #7762 [Verbose] > │ let v18 : float = v16 * v3 │
00:00:34 #7763 [Verbose] > │ let v19 : float = v16 * v4 │
00:00:34 #7764 [Verbose] > │ let v20 : float = v17 / v15 │
00:00:34 #7765 [Verbose] > │ let v21 : float = v18 / v15 │
00:00:34 #7766 [Verbose] > │ let v22 : float = v19 / v15 │
00:00:34 #7767 [Verbose] > │ struct (v20, v21, v22) │
00:00:34 #7768 [Verbose] > │ and closure141 (v0 : float, v1 : float, v2 : float, v3 : float, v4 : float, │
00:00:34 #7769 [Verbose] > │ v5 : float, v6 : float, v7 : float, v8 : float) struct (v9 : float, v10 : │
00:00:34 #7770 [Verbose] > │ float, v11 : float, v12 : float, v13 : float, v14 : float, v15 : float, v16 │
00:00:34 #7771 [Verbose] > │ : float, v17 : float) : struct (float * float * float) = │
00:00:34 #7772 [Verbose] > │ let v18 : float = -1.0 * v2 │
00:00:34 #7773 [Verbose] > │ let v19 : float = -1.0 * v3 │
00:00:34 #7774 [Verbose] > │ let v20 : float = -1.0 * v4 │
00:00:34 #7775 [Verbose] > │ let v21 : float = v11 + v18 │
00:00:34 #7776 [Verbose] > │ let v22 : float = v12 + v19 │
00:00:34 #7777 [Verbose] > │ let v23 : float = v13 + v20 │
00:00:34 #7778 [Verbose] > │ let v24 : float = v21 * v21 │
00:00:34 #7779 [Verbose] > │ let v25 : float = v22 * v22 │
00:00:34 #7780 [Verbose] > │ let v26 : float = v24 + v25 │
00:00:34 #7781 [Verbose] > │ let v27 : float = v23 * v23 │
00:00:34 #7782 [Verbose] > │ let v28 : float = v26 + v27 │
00:00:34 #7783 [Verbose] > │ let v29 : float = sqrt v28 │
00:00:34 #7784 [Verbose] > │ let v30 : float = -5384.0 * v29 │
00:00:34 #7785 [Verbose] > │ let v31 : float = v30 * v21 │
00:00:34 #7786 [Verbose] > │ let v32 : float = v30 * v22 │
00:00:34 #7787 [Verbose] > │ let v33 : float = v30 * v23 │
00:00:34 #7788 [Verbose] > │ let v34 : float = v31 / v29 │
00:00:34 #7789 [Verbose] > │ let v35 : float = v32 / v29 │
00:00:34 #7790 [Verbose] > │ let v36 : float = v33 / v29 │
00:00:34 #7791 [Verbose] > │ struct (v34, v35, v36) │
00:00:34 #7792 [Verbose] > │ and closure140 () struct (v0 : float, v1 : float, v2 : float, v3 : float, v4 │
00:00:34 #7793 [Verbose] > │ : float, v5 : float, v6 : float, v7 : float, v8 : float) : (struct (float * │
00:00:34 #7794 [Verbose] > │ float * float * float * float * float * float * float * float) -> struct │
00:00:34 #7795 [Verbose] > │ (float * float * float)) = │
00:00:34 #7796 [Verbose] > │ closure141(v0, v1, v2, v3, v4, v5, v6, v7, v8) │
00:00:34 #7797 [Verbose] > │ and method4 () : UH4 = │
00:00:34 #7798 [Verbose] > │ let v0 : (struct (float * float * float * float * float * float * float │
00:00:34 #7799 [Verbose] > │ * float * float) -> struct (float * float * float)) = closure138() │
00:00:34 #7800 [Verbose] > │ let v1 : US1 = US1_0(0, v0) │
00:00:34 #7801 [Verbose] > │ let v2 : (struct (float * float * float * float * float * float * float │
00:00:34 #7802 [Verbose] > │ * float * float) -> struct (float * float * float)) = closure139() │
00:00:34 #7803 [Verbose] > │ let v3 : US1 = US1_0(63, v2) │
00:00:34 #7804 [Verbose] > │ let v4 : (struct (float * float * float * float * float * float * float │
00:00:34 #7805 [Verbose] > │ * float * float) -> (struct (float * float * float * float * float * float * │
00:00:34 #7806 [Verbose] > │ float * float * float) -> struct (float * float * float))) = closure140() │
00:00:34 #7807 [Verbose] > │ let v5 : US1 = US1_1(0, 1, v4) │
00:00:34 #7808 [Verbose] > │ let v6 : US1 = US1_1(1, 2, v4) │
00:00:34 #7809 [Verbose] > │ let v7 : US1 = US1_1(2, 3, v4) │
00:00:34 #7810 [Verbose] > │ let v8 : US1 = US1_1(3, 4, v4) │
00:00:34 #7811 [Verbose] > │ let v9 : US1 = US1_1(4, 5, v4) │
00:00:34 #7812 [Verbose] > │ let v10 : US1 = US1_1(5, 6, v4) │
00:00:34 #7813 [Verbose] > │ let v11 : US1 = US1_1(6, 7, v4) │
00:00:34 #7814 [Verbose] > │ let v12 : US1 = US1_1(7, 8, v4) │
00:00:34 #7815 [Verbose] > │ let v13 : US1 = US1_1(8, 9, v4) │
00:00:34 #7816 [Verbose] > │ let v14 : US1 = US1_1(9, 10, v4) │
00:00:34 #7817 [Verbose] > │ let v15 : US1 = US1_1(10, 11, v4) │
00:00:34 #7818 [Verbose] > │ let v16 : US1 = US1_1(11, 12, v4) │
00:00:34 #7819 [Verbose] > │ let v17 : US1 = US1_1(12, 13, v4) │
00:00:34 #7820 [Verbose] > │ let v18 : US1 = US1_1(13, 14, v4) │
00:00:34 #7821 [Verbose] > │ let v19 : US1 = US1_1(14, 15, v4) │
00:00:34 #7822 [Verbose] > │ let v20 : US1 = US1_1(15, 16, v4) │
00:00:34 #7823 [Verbose] > │ let v21 : US1 = US1_1(16, 17, v4) │
00:00:34 #7824 [Verbose] > │ let v22 : US1 = US1_1(17, 18, v4) │
00:00:34 #7825 [Verbose] > │ let v23 : US1 = US1_1(18, 19, v4) │
00:00:34 #7826 [Verbose] > │ let v24 : US1 = US1_1(19, 20, v4) │
00:00:34 #7827 [Verbose] > │ let v25 : US1 = US1_1(20, 21, v4) │
00:00:34 #7828 [Verbose] > │ let v26 : US1 = US1_1(21, 22, v4) │
00:00:34 #7829 [Verbose] > │ let v27 : US1 = US1_1(22, 23, v4) │
00:00:34 #7830 [Verbose] > │ let v28 : US1 = US1_1(23, 24, v4) │
00:00:34 #7831 [Verbose] > │ let v29 : US1 = US1_1(24, 25, v4) │
00:00:34 #7832 [Verbose] > │ let v30 : US1 = US1_1(25, 26, v4) │
00:00:34 #7833 [Verbose] > │ let v31 : US1 = US1_1(26, 27, v4) │
00:00:34 #7834 [Verbose] > │ let v32 : US1 = US1_1(27, 28, v4) │
00:00:34 #7835 [Verbose] > │ let v33 : US1 = US1_1(28, 29, v4) │
00:00:34 #7836 [Verbose] > │ let v34 : US1 = US1_1(29, 30, v4) │
00:00:34 #7837 [Verbose] > │ let v35 : US1 = US1_1(30, 31, v4) │
00:00:34 #7838 [Verbose] > │ let v36 : US1 = US1_1(31, 32, v4) │
00:00:34 #7839 [Verbose] > │ let v37 : US1 = US1_1(32, 33, v4) │
00:00:34 #7840 [Verbose] > │ let v38 : US1 = US1_1(33, 34, v4) │
00:00:34 #7841 [Verbose] > │ let v39 : US1 = US1_1(34, 35, v4) │
00:00:34 #7842 [Verbose] > │ let v40 : US1 = US1_1(35, 36, v4) │
00:00:34 #7843 [Verbose] > │ let v41 : US1 = US1_1(36, 37, v4) │
00:00:34 #7844 [Verbose] > │ let v42 : US1 = US1_1(37, 38, v4) │
00:00:34 #7845 [Verbose] > │ let v43 : US1 = US1_1(38, 39, v4) │
00:00:34 #7846 [Verbose] > │ let v44 : US1 = US1_1(39, 40, v4) │
00:00:34 #7847 [Verbose] > │ let v45 : US1 = US1_1(40, 41, v4) │
00:00:34 #7848 [Verbose] > │ let v46 : US1 = US1_1(41, 42, v4) │
00:00:34 #7849 [Verbose] > │ let v47 : US1 = US1_1(42, 43, v4) │
00:00:34 #7850 [Verbose] > │ let v48 : US1 = US1_1(43, 44, v4) │
00:00:34 #7851 [Verbose] > │ let v49 : US1 = US1_1(44, 45, v4) │
00:00:34 #7852 [Verbose] > │ let v50 : US1 = US1_1(45, 46, v4) │
00:00:34 #7853 [Verbose] > │ let v51 : US1 = US1_1(46, 47, v4) │
00:00:34 #7854 [Verbose] > │ let v52 : US1 = US1_1(47, 48, v4) │
00:00:34 #7855 [Verbose] > │ let v53 : US1 = US1_1(48, 49, v4) │
00:00:34 #7856 [Verbose] > │ let v54 : US1 = US1_1(49, 50, v4) │
00:00:34 #7857 [Verbose] > │ let v55 : US1 = US1_1(50, 51, v4) │
00:00:34 #7858 [Verbose] > │ let v56 : US1 = US1_1(51, 52, v4) │
00:00:34 #7859 [Verbose] > │ let v57 : US1 = US1_1(52, 53, v4) │
00:00:34 #7860 [Verbose] > │ let v58 : US1 = US1_1(53, 54, v4) │
00:00:34 #7861 [Verbose] > │ let v59 : US1 = US1_1(54, 55, v4) │
00:00:34 #7862 [Verbose] > │ let v60 : US1 = US1_1(55, 56, v4) │
00:00:34 #7863 [Verbose] > │ let v61 : US1 = US1_1(56, 57, v4) │
00:00:34 #7864 [Verbose] > │ let v62 : US1 = US1_1(57, 58, v4) │
00:00:34 #7865 [Verbose] > │ let v63 : US1 = US1_1(58, 59, v4) │
00:00:34 #7866 [Verbose] > │ let v64 : US1 = US1_1(59, 60, v4) │
00:00:34 #7867 [Verbose] > │ let v65 : UH4 = UH4_1 │
00:00:34 #7868 [Verbose] > │ let v66 : UH4 = UH4_0(v64, v65) │
00:00:34 #7869 [Verbose] > │ let v67 : UH4 = UH4_0(v63, v66) │
00:00:34 #7870 [Verbose] > │ let v68 : UH4 = UH4_0(v62, v67) │
00:00:34 #7871 [Verbose] > │ let v69 : UH4 = UH4_0(v61, v68) │
00:00:34 #7872 [Verbose] > │ let v70 : UH4 = UH4_0(v60, v69) │
00:00:34 #7873 [Verbose] > │ let v71 : UH4 = UH4_0(v59, v70) │
00:00:34 #7874 [Verbose] > │ let v72 : UH4 = UH4_0(v58, v71) │
00:00:34 #7875 [Verbose] > │ let v73 : UH4 = UH4_0(v57, v72) │
00:00:34 #7876 [Verbose] > │ let v74 : UH4 = UH4_0(v56, v73) │
00:00:34 #7877 [Verbose] > │ let v75 : UH4 = UH4_0(v55, v74) │
00:00:34 #7878 [Verbose] > │ let v76 : UH4 = UH4_0(v54, v75) │
00:00:34 #7879 [Verbose] > │ let v77 : UH4 = UH4_0(v53, v76) │
00:00:34 #7880 [Verbose] > │ let v78 : UH4 = UH4_0(v52, v77) │
00:00:34 #7881 [Verbose] > │ let v79 : UH4 = UH4_0(v51, v78) │
00:00:34 #7882 [Verbose] > │ let v80 : UH4 = UH4_0(v50, v79) │
00:00:34 #7883 [Verbose] > │ let v81 : UH4 = UH4_0(v49, v80) │
00:00:34 #7884 [Verbose] > │ let v82 : UH4 = UH4_0(v48, v81) │
00:00:34 #7885 [Verbose] > │ let v83 : UH4 = UH4_0(v47, v82) │
00:00:34 #7886 [Verbose] > │ let v84 : UH4 = UH4_0(v46, v83) │
00:00:34 #7887 [Verbose] > │ let v85 : UH4 = UH4_0(v45, v84) │
00:00:34 #7888 [Verbose] > │ let v86 : UH4 = UH4_0(v44, v85) │
00:00:34 #7889 [Verbose] > │ let v87 : UH4 = UH4_0(v43, v86) │
00:00:34 #7890 [Verbose] > │ let v88 : UH4 = UH4_0(v42, v87) │
00:00:34 #7891 [Verbose] > │ let v89 : UH4 = UH4_0(v41, v88) │
00:00:34 #7892 [Verbose] > │ let v90 : UH4 = UH4_0(v40, v89) │
00:00:34 #7893 [Verbose] > │ let v91 : UH4 = UH4_0(v39, v90) │
00:00:34 #7894 [Verbose] > │ let v92 : UH4 = UH4_0(v38, v91) │
00:00:34 #7895 [Verbose] > │ let v93 : UH4 = UH4_0(v37, v92) │
00:00:34 #7896 [Verbose] > │ let v94 : UH4 = UH4_0(v36, v93) │
00:00:34 #7897 [Verbose] > │ let v95 : UH4 = UH4_0(v35, v94) │
00:00:34 #7898 [Verbose] > │ let v96 : UH4 = UH4_0(v34, v95) │
00:00:34 #7899 [Verbose] > │ let v97 : UH4 = UH4_0(v33, v96) │
00:00:34 #7900 [Verbose] > │ let v98 : UH4 = UH4_0(v32, v97) │
00:00:34 #7901 [Verbose] > │ let v99 : UH4 = UH4_0(v31, v98) │
00:00:34 #7902 [Verbose] > │ let v100 : UH4 = UH4_0(v30, v99) │
00:00:34 #7903 [Verbose] > │ let v101 : UH4 = UH4_0(v29, v100) │
00:00:34 #7904 [Verbose] > │ let v102 : UH4 = UH4_0(v28, v101) │
00:00:34 #7905 [Verbose] > │ let v103 : UH4 = UH4_0(v27, v102) │
00:00:34 #7906 [Verbose] > │ let v104 : UH4 = UH4_0(v26, v103) │
00:00:34 #7907 [Verbose] > │ let v105 : UH4 = UH4_0(v25, v104) │
00:00:34 #7908 [Verbose] > │ let v106 : UH4 = UH4_0(v24, v105) │
00:00:34 #7909 [Verbose] > │ let v107 : UH4 = UH4_0(v23, v106) │
00:00:34 #7910 [Verbose] > │ let v108 : UH4 = UH4_0(v22, v107) │
00:00:34 #7911 [Verbose] > │ let v109 : UH4 = UH4_0(v21, v108) │
00:00:34 #7912 [Verbose] > │ let v110 : UH4 = UH4_0(v20, v109) │
00:00:34 #7913 [Verbose] > │ let v111 : UH4 = UH4_0(v19, v110) │
00:00:34 #7914 [Verbose] > │ let v112 : UH4 = UH4_0(v18, v111) │
00:00:34 #7915 [Verbose] > │ let v113 : UH4 = UH4_0(v17, v112) │
00:00:34 #7916 [Verbose] > │ let v114 : UH4 = UH4_0(v16, v113) │
00:00:34 #7917 [Verbose] > │ let v115 : UH4 = UH4_0(v15, v114) │
00:00:34 #7918 [Verbose] > │ let v116 : UH4 = UH4_0(v14, v115) │
00:00:34 #7919 [Verbose] > │ let v117 : UH4 = UH4_0(v13, v116) │
00:00:34 #7920 [Verbose] > │ let v118 : UH4 = UH4_0(v12, v117) │
00:00:34 #7921 [Verbose] > │ let v119 : UH4 = UH4_0(v11, v118) │
00:00:34 #7922 [Verbose] > │ let v120 : UH4 = UH4_0(v10, v119) │
00:00:34 #7923 [Verbose] > │ let v121 : UH4 = UH4_0(v9, v120) │
00:00:34 #7924 [Verbose] > │ let v122 : UH4 = UH4_0(v8, v121) │
00:00:34 #7925 [Verbose] > │ let v123 : UH4 = UH4_0(v7, v122) │
00:00:34 #7926 [Verbose] > │ let v124 : UH4 = UH4_0(v6, v123) │
00:00:34 #7927 [Verbose] > │ let v125 : UH4 = UH4_0(v5, v124) │
00:00:34 #7928 [Verbose] > │ let v126 : UH4 = UH4_0(v3, v125) │
00:00:34 #7929 [Verbose] > │ UH4_0(v1, v126) │
00:00:34 #7930 [Verbose] > │ and closure143 (v0 : UH5) () : UH5 = │
00:00:34 #7931 [Verbose] > │ v0 │
00:00:34 #7932 [Verbose] > │ and method5 (v0 : UH1, v1 : UH5, v2 : int32) : struct (UH5 * int32) = │
00:00:34 #7933 [Verbose] > │ match v0 with │
00:00:34 #7934 [Verbose] > │ | UH1_0(v3, v4, v5, v6, v7, v8, v9, v10, v11, v12) -> (* StreamCons *) │
00:00:34 #7935 [Verbose] > │ let v13 : int32 = v2 + 1 │
00:00:34 #7936 [Verbose] > │ let v14 : UH1 = v12 () │
00:00:34 #7937 [Verbose] > │ let v15 : (unit -> UH5) = closure143(v1) │
00:00:34 #7938 [Verbose] > │ let v16 : UH5 = UH5_0(v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v15) │
00:00:34 #7939 [Verbose] > │ method5(v14, v16, v13) │
00:00:34 #7940 [Verbose] > │ | UH1_1 -> (* StreamNil *) │
00:00:34 #7941 [Verbose] > │ struct (v1, v2) │
00:00:34 #7942 [Verbose] > │ and closure144 (v0 : UH5) () : UH5 = │
00:00:34 #7943 [Verbose] > │ v0 │
00:00:34 #7944 [Verbose] > │ and method6 (v0 : UH5, v1 : UH5) : UH5 = │
00:00:34 #7945 [Verbose] > │ match v0 with │
00:00:34 #7946 [Verbose] > │ | UH5_0(v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12) -> (* StreamCons │
00:00:34 #7947 [Verbose] > │ *) │
00:00:34 #7948 [Verbose] > │ let v13 : UH5 = v12 () │
00:00:34 #7949 [Verbose] > │ let v14 : (unit -> UH5) = closure144(v1) │
00:00:34 #7950 [Verbose] > │ let v15 : UH5 = UH5_0(v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v14) │
00:00:34 #7951 [Verbose] > │ method6(v13, v15) │
00:00:34 #7952 [Verbose] > │ | UH5_1 -> (* StreamNil *) │
00:00:34 #7953 [Verbose] > │ v1 │
00:00:34 #7954 [Verbose] > │ and closure145 () struct (v0 : float, v1 : float, v2 : float, v3 : float, v4 │
00:00:34 #7955 [Verbose] > │ : float, v5 : float, v6 : float, v7 : float, v8 : float) : struct (float * │
00:00:34 #7956 [Verbose] > │ float * float) = │
00:00:34 #7957 [Verbose] > │ struct (0.0, 0.0, 0.0) │
00:00:34 #7958 [Verbose] > │ and method9 (v0 : int32, v1 : UH1) : US3 = │
00:00:34 #7959 [Verbose] > │ match v1 with │
00:00:34 #7960 [Verbose] > │ | UH1_0(v2, v3, v4, v5, v6, v7, v8, v9, v10, v11) -> (* StreamCons *) │
00:00:34 #7961 [Verbose] > │ let v12 : bool = v0 <= 0 │
00:00:34 #7962 [Verbose] > │ if v12 then │
00:00:34 #7963 [Verbose] > │ US3_1(v2, v3, v4, v5, v6, v7, v8, v9, v10) │
00:00:34 #7964 [Verbose] > │ else │
00:00:34 #7965 [Verbose] > │ let v14 : int32 = v0 - 1 │
00:00:34 #7966 [Verbose] > │ let v15 : UH1 = v11 () │
00:00:34 #7967 [Verbose] > │ method9(v14, v15) │
00:00:34 #7968 [Verbose] > │ | UH1_1 -> (* StreamNil *) │
00:00:34 #7969 [Verbose] > │ US3_0 │
00:00:34 #7970 [Verbose] > │ and closure146 () struct (v0 : float, v1 : float, v2 : float, v3 : float, v4 │
00:00:34 #7971 [Verbose] > │ : float, v5 : float, v6 : float, v7 : float, v8 : float) : struct (float * │
00:00:34 #7972 [Verbose] > │ float * float) = │
00:00:34 #7973 [Verbose] > │ struct (0.0, 0.0, 0.0) │
00:00:34 #7974 [Verbose] > │ and method8 (v0 : int32, v1 : UH1, v2 : UH4, v3 : UH6) : UH6 = │
00:00:34 #7975 [Verbose] > │ match v2 with │
00:00:34 #7976 [Verbose] > │ | UH4_0(v4, v5) -> (* Cons *) │
00:00:34 #7977 [Verbose] > │ let v6 : UH6 = method8(v0, v1, v5, v3) │
00:00:34 #7978 [Verbose] > │ let v55 : (struct (float * float * float * float * float * float * │
00:00:34 #7979 [Verbose] > │ float * float * float) -> struct (float * float * float)) = │
00:00:34 #7980 [Verbose] > │ match v4 with │
00:00:34 #7981 [Verbose] > │ | US1_0(v7, v8) -> (* ExternalForce *) │
00:00:34 #7982 [Verbose] > │ let v9 : bool = v0 = v7 │
00:00:34 #7983 [Verbose] > │ if v9 then │
00:00:34 #7984 [Verbose] > │ v8 │
00:00:34 #7985 [Verbose] > │ else │
00:00:34 #7986 [Verbose] > │ closure145() │
00:00:34 #7987 [Verbose] > │ | US1_1(v12, v13, v14) -> (* InternalForce *) │
00:00:34 #7988 [Verbose] > │ let v15 : bool = v0 = v12 │
00:00:34 #7989 [Verbose] > │ let v49 : US2 = │
00:00:34 #7990 [Verbose] > │ if v15 then │
00:00:34 #7991 [Verbose] > │ let v16 : US3 = method9(v13, v1) │
00:00:34 #7992 [Verbose] > │ match v16 with │
00:00:34 #7993 [Verbose] > │ | US3_0 -> (* None *) │
00:00:34 #7994 [Verbose] > │ US2_0 │
00:00:34 #7995 [Verbose] > │ | US3_1(v17, v18, v19, v20, v21, v22, v23, v24, v25) │
00:00:34 #7996 [Verbose] > │ -> (* Some *) │
00:00:34 #7997 [Verbose] > │ let v26 : (struct (float * float * float * float │
00:00:34 #7998 [Verbose] > │ * float * float * float * float * float) -> struct (float * float * float)) │
00:00:34 #7999 [Verbose] > │ = v14 struct (v17, v18, v19, v20, v21, v22, v23, v24, v25) │
00:00:34 #8000 [Verbose] > │ US2_1(v26) │
00:00:34 #8001 [Verbose] > │ else │
00:00:34 #8002 [Verbose] > │ let v31 : bool = v0 = v13 │
00:00:34 #8003 [Verbose] > │ if v31 then │
00:00:34 #8004 [Verbose] > │ let v32 : US3 = method9(v12, v1) │
00:00:34 #8005 [Verbose] > │ match v32 with │
00:00:34 #8006 [Verbose] > │ | US3_0 -> (* None *) │
00:00:34 #8007 [Verbose] > │ US2_0 │
00:00:34 #8008 [Verbose] > │ | US3_1(v33, v34, v35, v36, v37, v38, v39, v40, │
00:00:34 #8009 [Verbose] > │ v41) -> (* Some *) │
00:00:34 #8010 [Verbose] > │ let v42 : (struct (float * float * float * │
00:00:34 #8011 [Verbose] > │ float * float * float * float * float * float) -> struct (float * float * │
00:00:34 #8012 [Verbose] > │ float)) = v14 struct (v33, v34, v35, v36, v37, v38, v39, v40, v41) │
00:00:34 #8013 [Verbose] > │ US2_1(v42) │
00:00:34 #8014 [Verbose] > │ else │
00:00:34 #8015 [Verbose] > │ US2_0 │
00:00:34 #8016 [Verbose] > │ match v49 with │
00:00:34 #8017 [Verbose] > │ | US2_0 -> (* None *) │
00:00:34 #8018 [Verbose] > │ closure146() │
00:00:34 #8019 [Verbose] > │ | US2_1(v50) -> (* Some *) │
00:00:34 #8020 [Verbose] > │ v50 │
00:00:34 #8021 [Verbose] > │ UH6_0(v55, v6) │
00:00:34 #8022 [Verbose] > │ | UH4_1 -> (* Nil *) │
00:00:34 #8023 [Verbose] > │ v3 │
00:00:34 #8024 [Verbose] > │ and method10 (v0 : float, v1 : float, v2 : float, v3 : float, v4 : float, v5 │
00:00:34 #8025 [Verbose] > │ : float, v6 : float, v7 : float, v8 : float, v9 : UH6, v10 : UH7) : UH7 = │
00:00:34 #8026 [Verbose] > │ match v9 with │
00:00:34 #8027 [Verbose] > │ | UH6_0(v11, v12) -> (* Cons *) │
00:00:34 #8028 [Verbose] > │ let v13 : UH7 = method10(v0, v1, v2, v3, v4, v5, v6, v7, v8, v12, │
00:00:34 #8029 [Verbose] > │ v10) │
00:00:34 #8030 [Verbose] > │ let struct (v14 : float, v15 : float, v16 : float) = v11 struct (v0, │
00:00:34 #8031 [Verbose] > │ v1, v2, v3, v4, v5, v6, v7, v8) │
00:00:34 #8032 [Verbose] > │ UH7_0(v14, v15, v16, v13) │
00:00:34 #8033 [Verbose] > │ | UH6_1 -> (* Nil *) │
00:00:34 #8034 [Verbose] > │ v10 │
00:00:34 #8035 [Verbose] > │ and method11 (v0 : UH7, v1 : float, v2 : float, v3 : float) : struct (float │
00:00:34 #8036 [Verbose] > │ * float * float) = │
00:00:34 #8037 [Verbose] > │ match v0 with │
00:00:34 #8038 [Verbose] > │ | UH7_0(v4, v5, v6, v7) -> (* Cons *) │
00:00:34 #8039 [Verbose] > │ let v8 : float = v1 + v4 │
00:00:34 #8040 [Verbose] > │ let v9 : float = v2 + v5 │
00:00:34 #8041 [Verbose] > │ let v10 : float = v3 + v6 │
00:00:34 #8042 [Verbose] > │ method11(v7, v8, v9, v10) │
00:00:34 #8043 [Verbose] > │ | UH7_1 -> (* Nil *) │
00:00:34 #8044 [Verbose] > │ struct (v1, v2, v3) │
00:00:34 #8045 [Verbose] > │ and closure147 (v0 : UH3) () : UH3 = │
00:00:34 #8046 [Verbose] > │ v0 │
00:00:34 #8047 [Verbose] > │ and method7 (v0 : UH4, v1 : UH1, v2 : UH5, v3 : UH3) : UH3 = │
00:00:34 #8048 [Verbose] > │ match v2 with │
00:00:34 #8049 [Verbose] > │ | UH5_0(v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14) -> (* │
00:00:34 #8050 [Verbose] > │ StreamCons *) │
00:00:34 #8051 [Verbose] > │ let v15 : UH5 = v14 () │
00:00:34 #8052 [Verbose] > │ let v16 : UH3 = method7(v0, v1, v15, v3) │
00:00:34 #8053 [Verbose] > │ let v17 : UH6 = UH6_1 │
00:00:34 #8054 [Verbose] > │ let v18 : UH6 = method8(v4, v1, v0, v17) │
00:00:34 #8055 [Verbose] > │ let v19 : UH7 = UH7_1 │
00:00:34 #8056 [Verbose] > │ let v20 : UH7 = method10(v5, v6, v7, v8, v9, v10, v11, v12, v13, │
00:00:34 #8057 [Verbose] > │ v18, v19) │
00:00:34 #8058 [Verbose] > │ let v21 : float = 0.0 │
00:00:34 #8059 [Verbose] > │ let v22 : float = 0.0 │
00:00:34 #8060 [Verbose] > │ let v23 : float = 0.0 │
00:00:34 #8061 [Verbose] > │ let struct (v24 : float, v25 : float, v26 : float) = method11(v20, │
00:00:34 #8062 [Verbose] > │ v21, v22, v23) │
00:00:34 #8063 [Verbose] > │ let v27 : float = v24 / v6 │
00:00:34 #8064 [Verbose] > │ let v28 : float = v25 / v6 │
00:00:34 #8065 [Verbose] > │ let v29 : float = v26 / v6 │
00:00:34 #8066 [Verbose] > │ let v30 : (unit -> UH3) = closure147(v16) │
00:00:34 #8067 [Verbose] > │ UH3_0(0.0, 0.0, v11, v12, v13, 1.0, v27, v28, v29, v30) │
00:00:34 #8068 [Verbose] > │ | UH5_1 -> (* StreamNil *) │
00:00:34 #8069 [Verbose] > │ v3 │
00:00:34 #8070 [Verbose] > │ and closure142 (v0 : UH4) (v1 : UH1) : UH3 = │
00:00:34 #8071 [Verbose] > │ let v2 : UH5 = UH5_1 │
00:00:34 #8072 [Verbose] > │ let v3 : int32 = 0 │
00:00:34 #8073 [Verbose] > │ let struct (v4 : UH5, v5 : int32) = method5(v1, v2, v3) │
00:00:34 #8074 [Verbose] > │ let v6 : UH5 = UH5_1 │
00:00:34 #8075 [Verbose] > │ let v7 : UH5 = method6(v4, v6) │
00:00:34 #8076 [Verbose] > │ let v8 : UH3 = UH3_1 │
00:00:34 #8077 [Verbose] > │ let v9 : UH3 = method7(v0, v1, v7, v8) │
00:00:34 #8078 [Verbose] > │ v9 │
00:00:34 #8079 [Verbose] > │ and closure148 (v0 : (UH1 -> UH1), v1 : UH1, v2 : UH1) () : UH8 = │
00:00:34 #8080 [Verbose] > │ let v3 : UH1 = v0 v2 │
00:00:34 #8081 [Verbose] > │ let v4 : (unit -> UH8) = closure148(v0, v1, v3) │
00:00:34 #8082 [Verbose] > │ UH8_0(v2, v4) │
00:00:34 #8083 [Verbose] > │ and method12 (v0 : float, v1 : UH8) : US4 = │
00:00:34 #8084 [Verbose] > │ match v1 with │
00:00:34 #8085 [Verbose] > │ | UH8_0(v2, v3) -> (* StreamCons *) │
00:00:34 #8086 [Verbose] > │ let v4 : bool = v0 <= 0.0 │
00:00:34 #8087 [Verbose] > │ if v4 then │
00:00:34 #8088 [Verbose] > │ US4_1(v2) │
00:00:34 #8089 [Verbose] > │ else │
00:00:34 #8090 [Verbose] > │ let v6 : float = v0 - 1.0 │
00:00:34 #8091 [Verbose] > │ let v7 : UH8 = v3 () │
00:00:34 #8092 [Verbose] > │ method12(v6, v7) │
00:00:34 #8093 [Verbose] > │ | UH8_1 -> (* StreamNil *) │
00:00:34 #8094 [Verbose] > │ US4_0 │
00:00:34 #8095 [Verbose] > │ and closure149 (v0 : UH9) () : UH9 = │
00:00:34 #8096 [Verbose] > │ v0 │
00:00:34 #8097 [Verbose] > │ and method13 (v0 : UH1, v1 : UH9) : UH9 = │
00:00:34 #8098 [Verbose] > │ match v0 with │
00:00:34 #8099 [Verbose] > │ | UH1_0(v2, v3, v4, v5, v6, v7, v8, v9, v10, v11) -> (* StreamCons *) │
00:00:34 #8100 [Verbose] > │ let v12 : UH1 = v11 () │
00:00:34 #8101 [Verbose] > │ let v13 : UH9 = method13(v12, v1) │
00:00:34 #8102 [Verbose] > │ let v14 : (unit -> UH9) = closure149(v13) │
00:00:34 #8103 [Verbose] > │ UH9_0(v4, v5, v6, v14) │
00:00:34 #8104 [Verbose] > │ | UH1_1 -> (* StreamNil *) │
00:00:34 #8105 [Verbose] > │ v1 │
00:00:34 #8106 [Verbose] > │ and method14 (v0 : UH9, v1 : UH7) : UH7 = │
00:00:34 #8107 [Verbose] > │ match v0 with │
00:00:34 #8108 [Verbose] > │ | UH9_0(v2, v3, v4, v5) -> (* StreamCons *) │
00:00:34 #8109 [Verbose] > │ let v6 : UH9 = v5 () │
00:00:34 #8110 [Verbose] > │ let v7 : UH7 = method14(v6, v1) │
00:00:34 #8111 [Verbose] > │ UH7_0(v2, v3, v4, v7) │
00:00:34 #8112 [Verbose] > │ | UH9_1 -> (* StreamNil *) │
00:00:34 #8113 [Verbose] > │ v1 │
00:00:34 #8114 [Verbose] > │ and method15 (v0 : UH7, v1 : UH7) : UH7 = │
00:00:34 #8115 [Verbose] > │ match v0 with │
00:00:34 #8116 [Verbose] > │ | UH7_0(v2, v3, v4, v5) -> (* Cons *) │
00:00:34 #8117 [Verbose] > │ let v6 : UH7 = method15(v5, v1) │
00:00:34 #8118 [Verbose] > │ UH7_0(v2, v3, v4, v6) │
00:00:34 #8119 [Verbose] > │ | UH7_1 -> (* Nil *) │
00:00:34 #8120 [Verbose] > │ v1 │
00:00:34 #8121 [Verbose] > │ and method16 (v0 : UH7, v1 : UH10) : UH10 = │
00:00:34 #8122 [Verbose] > │ match v0 with │
00:00:34 #8123 [Verbose] > │ | UH7_0(v2, v3, v4, v5) -> (* Cons *) │
00:00:34 #8124 [Verbose] > │ let v6 : UH10 = method16(v5, v1) │
00:00:34 #8125 [Verbose] > │ UH10_0(v2, v3, v6) │
00:00:34 #8126 [Verbose] > │ | UH7_1 -> (* Nil *) │
00:00:34 #8127 [Verbose] > │ v1 │
00:00:34 #8128 [Verbose] > │ and closure150 (v0 : UH11) () : UH11 = │
00:00:34 #8129 [Verbose] > │ v0 │
00:00:34 #8130 [Verbose] > │ and method17 (v0 : UH10, v1 : UH11) : UH11 = │
00:00:34 #8131 [Verbose] > │ match v0 with │
00:00:34 #8132 [Verbose] > │ | UH10_0(v2, v3, v4) -> (* Cons *) │
00:00:34 #8133 [Verbose] > │ let v5 : UH11 = method17(v4, v1) │
00:00:34 #8134 [Verbose] > │ let v6 : (unit -> UH11) = closure150(v5) │
00:00:34 #8135 [Verbose] > │ UH11_0(v2, v3, v6) │
00:00:34 #8136 [Verbose] > │ | UH10_1 -> (* Nil *) │
00:00:34 #8137 [Verbose] > │ v1 │
00:00:34 #8138 [Verbose] > │ and closure151 (v0 : UH0) () : UH0 = │
00:00:34 #8139 [Verbose] > │ v0 │
00:00:34 #8140 [Verbose] > │ and closure152 (v0 : UH0) () : UH0 = │
00:00:34 #8141 [Verbose] > │ v0 │
00:00:34 #8142 [Verbose] > │ and method18 (v0 : UH11) : struct (UH0 * UH0) = │
00:00:34 #8143 [Verbose] > │ match v0 with │
00:00:34 #8144 [Verbose] > │ | UH11_0(v1, v2, v3) -> (* StreamCons *) │
00:00:34 #8145 [Verbose] > │ let v4 : UH11 = v3 () │
00:00:34 #8146 [Verbose] > │ let struct (v5 : UH0, v6 : UH0) = method18(v4) │
00:00:34 #8147 [Verbose] > │ let v7 : (unit -> UH0) = closure151(v5) │
00:00:34 #8148 [Verbose] > │ let v8 : UH0 = UH0_0(v1, v7) │
00:00:34 #8149 [Verbose] > │ let v9 : (unit -> UH0) = closure152(v6) │
00:00:34 #8150 [Verbose] > │ let v10 : UH0 = UH0_0(v2, v9) │
00:00:34 #8151 [Verbose] > │ struct (v8, v10) │
00:00:34 #8152 [Verbose] > │ | UH11_1 -> (* StreamNil *) │
00:00:34 #8153 [Verbose] > │ let v11 : UH0 = UH0_1 │
00:00:34 #8154 [Verbose] > │ let v12 : UH0 = UH0_1 │
00:00:34 #8155 [Verbose] > │ struct (v11, v12) │
00:00:34 #8156 [Verbose] > │ and method19 (v0 : UH0, v1 : UH12) : UH12 = │
00:00:34 #8157 [Verbose] > │ match v0 with │
00:00:34 #8158 [Verbose] > │ | UH0_0(v2, v3) -> (* StreamCons *) │
00:00:34 #8159 [Verbose] > │ let v4 : UH0 = v3 () │
00:00:34 #8160 [Verbose] > │ let v5 : UH12 = method19(v4, v1) │
00:00:34 #8161 [Verbose] > │ UH12_0(v2, v5) │
00:00:34 #8162 [Verbose] > │ | UH0_1 -> (* StreamNil *) │
00:00:34 #8163 [Verbose] > │ v1 │
00:00:34 #8164 [Verbose] > │ and method21 (v0 : UH12, v1 : int32) : int32 = │
00:00:34 #8165 [Verbose] > │ match v0 with │
00:00:34 #8166 [Verbose] > │ | UH12_0(v2, v3) -> (* Cons *) │
00:00:34 #8167 [Verbose] > │ let v4 : int32 = v1 + 1 │
00:00:34 #8168 [Verbose] > │ method21(v3, v4) │
00:00:34 #8169 [Verbose] > │ | UH12_1 -> (* Nil *) │
00:00:34 #8170 [Verbose] > │ v1 │
00:00:34 #8171 [Verbose] > │ and method22 (v0 : (float []), v1 : UH12, v2 : int32) : int32 = │
00:00:34 #8172 [Verbose] > │ match v1 with │
00:00:34 #8173 [Verbose] > │ | UH12_0(v3, v4) -> (* Cons *) │
00:00:34 #8174 [Verbose] > │ v0.[int v2] <- v3 │
00:00:34 #8175 [Verbose] > │ let v5 : int32 = v2 + 1 │
00:00:34 #8176 [Verbose] > │ method22(v0, v4, v5) │
00:00:34 #8177 [Verbose] > │ | UH12_1 -> (* Nil *) │
00:00:34 #8178 [Verbose] > │ v2 │
00:00:34 #8179 [Verbose] > │ and method20 (v0 : UH12) : (float []) = │
00:00:34 #8180 [Verbose] > │ let v1 : int32 = 0 │
00:00:34 #8181 [Verbose] > │ let v2 : int32 = method21(v0, v1) │
00:00:34 #8182 [Verbose] > │ let v3 : (float []) = Array.zeroCreate<float> (v2) │
00:00:34 #8183 [Verbose] > │ let v4 : int32 = 0 │
00:00:34 #8184 [Verbose] > │ let v5 : int32 = method22(v3, v0, v4) │
00:00:34 #8185 [Verbose] > │ v3 │
00:00:34 #8186 [Verbose] > │ and closure153 (v0 : UH2) () : UH2 = │
00:00:34 #8187 [Verbose] > │ v0 │
00:00:34 #8188 [Verbose] > │ and method1 (v0 : UH1, v1 : UH0, v2 : UH2) : UH2 = │
00:00:34 #8189 [Verbose] > │ match v1 with │
00:00:34 #8190 [Verbose] > │ | UH0_0(v3, v4) -> (* StreamCons *) │
00:00:34 #8191 [Verbose] > │ let v5 : UH0 = v4 () │
00:00:34 #8192 [Verbose] > │ let v6 : UH2 = method1(v0, v5, v2) │
00:00:34 #8193 [Verbose] > │ let v7 : ((UH1 -> UH3) -> (UH1 -> UH1)) = method2() │
00:00:34 #8194 [Verbose] > │ let v8 : UH4 = method4() │
00:00:34 #8195 [Verbose] > │ let v9 : (UH1 -> UH3) = closure142(v8) │
00:00:34 #8196 [Verbose] > │ let v10 : (UH1 -> UH1) = v7 v9 │
00:00:34 #8197 [Verbose] > │ let v11 : UH1 = v10 v0 │
00:00:34 #8198 [Verbose] > │ let v12 : (unit -> UH8) = closure148(v10, v0, v11) │
00:00:34 #8199 [Verbose] > │ let v13 : UH8 = UH8_0(v0, v12) │
00:00:34 #8200 [Verbose] > │ let v14 : US4 = method12(v3, v13) │
00:00:34 #8201 [Verbose] > │ let v18 : UH1 = │
00:00:34 #8202 [Verbose] > │ match v14 with │
00:00:34 #8203 [Verbose] > │ | US4_0 -> (* None *) │
00:00:34 #8204 [Verbose] > │ failwith<UH1> "Option does not have a value." │
00:00:34 #8205 [Verbose] > │ | US4_1(v15) -> (* Some *) │
00:00:34 #8206 [Verbose] > │ v15 │
00:00:34 #8207 [Verbose] > │ let v19 : UH9 = UH9_1 │
00:00:34 #8208 [Verbose] > │ let v20 : UH9 = method13(v18, v19) │
00:00:34 #8209 [Verbose] > │ let v21 : UH7 = UH7_1 │
00:00:34 #8210 [Verbose] > │ let v22 : UH7 = method14(v20, v21) │
00:00:34 #8211 [Verbose] > │ let v23 : float = 0.65 │
00:00:34 #8212 [Verbose] > │ let v24 : float = 0.0 │
00:00:34 #8213 [Verbose] > │ let v25 : float = 0.0 │
00:00:34 #8214 [Verbose] > │ let v26 : UH7 = UH7_1 │
00:00:34 #8215 [Verbose] > │ let v27 : UH7 = UH7_0(v23, v24, v25, v26) │
00:00:34 #8216 [Verbose] > │ let v28 : UH7 = method15(v22, v27) │
00:00:34 #8217 [Verbose] > │ let v29 : UH10 = UH10_1 │
00:00:34 #8218 [Verbose] > │ let v30 : UH10 = method16(v28, v29) │
00:00:34 #8219 [Verbose] > │ let v31 : UH11 = UH11_1 │
00:00:34 #8220 [Verbose] > │ let v32 : UH11 = method17(v30, v31) │
00:00:34 #8221 [Verbose] > │ let struct (v33 : UH0, v34 : UH0) = method18(v32) │
00:00:34 #8222 [Verbose] > │ let v35 : UH12 = UH12_1 │
00:00:34 #8223 [Verbose] > │ let v36 : UH12 = method19(v33, v35) │
00:00:34 #8224 [Verbose] > │ let v37 : float = 0.0 │
00:00:34 #8225 [Verbose] > │ let v38 : UH12 = UH12_0(v37, v36) │
00:00:34 #8226 [Verbose] > │ let v39 : (float []) = method20(v38) │
00:00:34 #8227 [Verbose] > │ let v40 : UH12 = UH12_1 │
00:00:34 #8228 [Verbose] > │ let v41 : UH12 = method19(v34, v40) │
00:00:34 #8229 [Verbose] > │ let v42 : float = 0.0 │
00:00:34 #8230 [Verbose] > │ let v43 : UH12 = UH12_0(v42, v41) │
00:00:34 #8231 [Verbose] > │ let v44 : (float []) = method20(v43) │
00:00:34 #8232 [Verbose] > │ let v45 : (unit -> UH2) = closure153(v6) │
00:00:34 #8233 [Verbose] > │ UH2_0(v39, v44, v45) │
00:00:34 #8234 [Verbose] > │ | UH0_1 -> (* StreamNil *) │
00:00:34 #8235 [Verbose] > │ v2 │
00:00:34 #8236 [Verbose] > │ and closure154 (v0 : UH13) () : UH13 = │
00:00:34 #8237 [Verbose] > │ v0 │
00:00:34 #8238 [Verbose] > │ and method23 (v0 : UH2, v1 : UH13, v2 : int32) : struct (UH13 * int32) = │
00:00:34 #8239 [Verbose] > │ match v0 with │
00:00:34 #8240 [Verbose] > │ | UH2_0(v3, v4, v5) -> (* StreamCons *) │
00:00:34 #8241 [Verbose] > │ let v6 : int32 = v2 + 1 │
00:00:34 #8242 [Verbose] > │ let v7 : UH2 = v5 () │
00:00:34 #8243 [Verbose] > │ let v8 : (unit -> UH13) = closure154(v1) │
00:00:34 #8244 [Verbose] > │ let v9 : UH13 = UH13_0(v2, v3, v4, v8) │
00:00:34 #8245 [Verbose] > │ method23(v7, v9, v6) │
00:00:34 #8246 [Verbose] > │ | UH2_1 -> (* StreamNil *) │
00:00:34 #8247 [Verbose] > │ struct (v1, v2) │
00:00:34 #8248 [Verbose] > │ and closure155 (v0 : UH13) () : UH13 = │
00:00:34 #8249 [Verbose] > │ v0 │
00:00:34 #8250 [Verbose] > │ and method24 (v0 : UH13, v1 : UH13) : UH13 = │
00:00:34 #8251 [Verbose] > │ match v0 with │
00:00:34 #8252 [Verbose] > │ | UH13_0(v2, v3, v4, v5) -> (* StreamCons *) │
00:00:34 #8253 [Verbose] > │ let v6 : UH13 = v5 () │
00:00:34 #8254 [Verbose] > │ let v7 : (unit -> UH13) = closure155(v1) │
00:00:34 #8255 [Verbose] > │ let v8 : UH13 = UH13_0(v2, v3, v4, v7) │
00:00:34 #8256 [Verbose] > │ method24(v6, v8) │
00:00:34 #8257 [Verbose] > │ | UH13_1 -> (* StreamNil *) │
00:00:34 #8258 [Verbose] > │ v1 │
00:00:34 #8259 [Verbose] > │ and method26 (v0 : (struct (string * (float []) * (float [])) [])) : (struct │
00:00:34 #8260 [Verbose] > │ (string * (float []) * (float [])) []) = │
00:00:34 #8261 [Verbose] > │ v0 │
00:00:34 #8262 [Verbose] > │ and closure156 (v0 : UH14) () : UH14 = │
00:00:34 #8263 [Verbose] > │ v0 │
00:00:34 #8264 [Verbose] > │ and method25 (v0 : UH13, v1 : UH14) : UH14 = │
00:00:34 #8265 [Verbose] > │ match v0 with │
00:00:34 #8266 [Verbose] > │ | UH13_0(v2, v3, v4, v5) -> (* StreamCons *) │
00:00:34 #8267 [Verbose] > │ let v6 : UH13 = v5 () │
00:00:34 #8268 [Verbose] > │ let v7 : UH14 = method25(v6, v1) │
00:00:34 #8269 [Verbose] > │ let v8 : string = $"{v2}" │
00:00:34 #8270 [Verbose] > │ let v9 : (struct (string * (float []) * (float [])) []) = [|struct │
00:00:34 #8271 [Verbose] > │ (v8, v3, v4)|] │
00:00:34 #8272 [Verbose] > │ let v10 : (struct (string * (float []) * (float [])) []) = │
00:00:34 #8273 [Verbose] > │ method26(v9) │
00:00:34 #8274 [Verbose] > │ let v11 : string = "wave" │
00:00:34 #8275 [Verbose] > │ let v12 : string = "position (m)" │
00:00:34 #8276 [Verbose] > │ let v13 : string = "displacement (m)" │
00:00:34 #8277 [Verbose] > │ let v14 : (unit -> UH14) = closure156(v7) │
00:00:34 #8278 [Verbose] > │ UH14_0(v11, v12, v13, v10, v14) │
00:00:34 #8279 [Verbose] > │ | UH13_1 -> (* StreamNil *) │
00:00:34 #8280 [Verbose] > │ v1 │
00:00:34 #8281 [Verbose] > │ and method27 (v0 : UH14, v1 : UH15) : UH15 = │
00:00:34 #8282 [Verbose] > │ match v0 with │
00:00:34 #8283 [Verbose] > │ | UH14_0(v2, v3, v4, v5, v6) -> (* StreamCons *) │
00:00:34 #8284 [Verbose] > │ let v7 : UH14 = v6 () │
00:00:34 #8285 [Verbose] > │ let v8 : UH15 = method27(v7, v1) │
00:00:34 #8286 [Verbose] > │ UH15_0(v2, v3, v4, v5, v8) │
00:00:34 #8287 [Verbose] > │ | UH14_1 -> (* StreamNil *) │
00:00:34 #8288 [Verbose] > │ v1 │
00:00:34 #8289 [Verbose] > │ and method29 (v0 : UH15, v1 : int32) : int32 = │
00:00:34 #8290 [Verbose] > │ match v0 with │
00:00:34 #8291 [Verbose] > │ | UH15_0(v2, v3, v4, v5, v6) -> (* Cons *) │
00:00:34 #8292 [Verbose] > │ let v7 : int32 = v1 + 1 │
00:00:34 #8293 [Verbose] > │ method29(v6, v7) │
00:00:34 #8294 [Verbose] > │ | UH15_1 -> (* Nil *) │
00:00:34 #8295 [Verbose] > │ v1 │
00:00:34 #8296 [Verbose] > │ and method30 (v0 : (struct (string * string * string * (struct (string * │
00:00:34 #8297 [Verbose] > │ (float []) * (float [])) [])) []), v1 : UH15, v2 : int32) : int32 = │
00:00:34 #8298 [Verbose] > │ match v1 with │
00:00:34 #8299 [Verbose] > │ | UH15_0(v3, v4, v5, v6, v7) -> (* Cons *) │
00:00:34 #8300 [Verbose] > │ v0.[int v2] <- struct (v3, v4, v5, v6) │
00:00:34 #8301 [Verbose] > │ let v8 : int32 = v2 + 1 │
00:00:34 #8302 [Verbose] > │ method30(v0, v7, v8) │
00:00:34 #8303 [Verbose] > │ | UH15_1 -> (* Nil *) │
00:00:34 #8304 [Verbose] > │ v2 │
00:00:34 #8305 [Verbose] > │ and method28 (v0 : UH15) : (struct (string * string * string * (struct │
00:00:34 #8306 [Verbose] > │ (string * (float []) * (float [])) [])) []) = │
00:00:34 #8307 [Verbose] > │ let v1 : int32 = 0 │
00:00:34 #8308 [Verbose] > │ let v2 : int32 = method29(v0, v1) │
00:00:34 #8309 [Verbose] > │ let v3 : (struct (string * string * string * (struct (string * (float [ │
00:00:34 #8310 [Verbose] > │ ]) * (float [])) [])) []) = Array.zeroCreate<struct (string * string * │
00:00:34 #8311 [Verbose] > │ string * (struct (string * (float []) * (float [])) []))> (v2) │
00:00:34 #8312 [Verbose] > │ let v4 : int32 = 0 │
00:00:34 #8313 [Verbose] > │ let v5 : int32 = method30(v3, v0, v4) │
00:00:34 #8314 [Verbose] > │ v3 │
00:00:34 #8315 [Verbose] > │ and method0 () : (struct (string * string * string * (struct (string * │
00:00:34 #8316 [Verbose] > │ (float []) * (float [])) [])) []) = │
00:00:34 #8317 [Verbose] > │ let v0 : float = 0.0 │
00:00:34 #8318 [Verbose] > │ let v1 : (unit -> UH0) = closure0() │
00:00:34 #8319 [Verbose] > │ let v2 : UH0 = UH0_0(v0, v1) │
00:00:34 #8320 [Verbose] > │ let v3 : float = 0.0 │
00:00:34 #8321 [Verbose] > │ let v4 : float = 8.422578125E-06 │
00:00:34 #8322 [Verbose] > │ let v5 : float = 0.01 │
00:00:34 #8323 [Verbose] > │ let v6 : float = 0.0007224452478461068 │
00:00:34 #8324 [Verbose] > │ let v7 : float = 0.0 │
00:00:34 #8325 [Verbose] > │ let v8 : float = 0.0 │
00:00:34 #8326 [Verbose] > │ let v9 : float = 0.0 │
00:00:34 #8327 [Verbose] > │ let v10 : float = 0.0 │
00:00:34 #8328 [Verbose] > │ let v11 : float = 0.0 │
00:00:34 #8329 [Verbose] > │ let v12 : (unit -> UH1) = closure66() │
00:00:34 #8330 [Verbose] > │ let v13 : UH1 = UH1_0(v3, v4, v5, v6, v7, v8, v9, v10, v11, v12) │
00:00:34 #8331 [Verbose] > │ let v14 : UH2 = UH2_1 │
00:00:34 #8332 [Verbose] > │ let v15 : UH2 = method1(v13, v2, v14) │
00:00:34 #8333 [Verbose] > │ let v16 : UH13 = UH13_1 │
00:00:34 #8334 [Verbose] > │ let v17 : int32 = 0 │
00:00:34 #8335 [Verbose] > │ let struct (v18 : UH13, v19 : int32) = method23(v15, v16, v17) │
00:00:34 #8336 [Verbose] > │ let v20 : UH13 = UH13_1 │
00:00:34 #8337 [Verbose] > │ let v21 : UH13 = method24(v18, v20) │
00:00:34 #8338 [Verbose] > │ let v22 : UH14 = UH14_1 │
00:00:34 #8339 [Verbose] > │ let v23 : UH14 = method25(v21, v22) │
00:00:34 #8340 [Verbose] > │ let v24 : UH15 = UH15_1 │
00:00:34 #8341 [Verbose] > │ let v25 : UH15 = method27(v23, v24) │
00:00:34 #8342 [Verbose] > │ method28(v25) │
00:00:34 #8343 [Verbose] > │ method0() │
00:00:34 #8344 [Verbose] > │ │
00:00:34 #8345 [Verbose] > │ │
00:00:34 #8346 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:34 #8347 [Verbose] >
00:00:34 #8348 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:34 #8349 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:34 #8350 [Verbose] > │ ## end │
00:00:34 #8351 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:35 #8352 [Verbose] > [NbConvertApp] Converting notebook physics.dib.ipynb to html
00:00:35 #8353 [Verbose] > /opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:00:35 #8354 [Verbose] > validate(nb)
00:00:35 #8355 [Verbose] > /opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:00:35 #8356 [Verbose] > return _pygments_highlight(
00:00:38 #8357 [Verbose] > [NbConvertApp] Writing 2732681 bytes to physics.dib.html
00:00:39 #8358 [Debug] executeAsync / exitCode: 0 / output.Length: 734350
00:00:39 #8359 [Debug] main / executeCommand / exitCode: 0
00:00:00 #1 [Debug] writeDibCode / output: Spi / path: math.dib
00:00:00 #1 [Debug] writeDibCode / output: Spi / path: console.dib
00:00:00 #1 [Debug] writeDibCode / output: Spi / path: testing.dib
00:00:00 #1 [Debug] writeDibCode / output: Spi / path: common.dib
00:00:00 #5 [Debug] parseDibCode / output: Spi / file: common.dib
00:00:00 #3 [Debug] parseDibCode / output: Spi / file: testing.dib
00:00:00 #3 [Debug] parseDibCode / output: Spi / file: math.dib
00:00:00 #4 [Debug] parseDibCode / output: Spi / file: console.dib
00:00:00 #7 [Debug] writeDibCode / output: Spi / path: optionm'.dib
00:00:00 #9 [Debug] writeDibCode / output: Spi / path: listm'.dib
00:00:00 #7 [Debug] writeDibCode / output: Spi / path: am'.dib
00:00:00 #10 [Debug] parseDibCode / output: Spi / file: optionm'.dib
00:00:00 #11 [Debug] parseDibCode / output: Spi / file: listm'.dib
00:00:00 #12 [Debug] parseDibCode / output: Spi / file: am'.dib
00:00:00 #9 [Debug] writeDibCode / output: Spi / path: sm'.dib
00:00:00 #13 [Debug] parseDibCode / output: Spi / file: sm'.dib
00:00:00 #14 [Debug] writeDibCode / output: Spi / path: benchmark.dib
00:00:00 #15 [Debug] parseDibCode / output: Spi / file: benchmark.dib
00:00:00 #16 [Debug] writeDibCode / output: Spi / path: stream.dib
00:00:00 #17 [Debug] parseDibCode / output: Spi / file: stream.dib
00:00:00 #18 [Debug] writeDibCode / output: Spi / path: seq.dib
00:00:00 #19 [Debug] parseDibCode / output: Spi / file: seq.dib
00:00:00 #20 [Debug] writeDibCode / output: Spi / path: util.dib
00:00:00 #21 [Debug] parseDibCode / output: Spi / file: util.dib
00:00:00 #22 [Debug] writeDibCode / output: Spi / path: rust.dib
00:00:00 #23 [Debug] parseDibCode / output: Spi / file: rust.dib
00:00:00 #24 [Debug] writeDibCode / output: Spi / path: physics.dib
00:00:00 #25 [Debug] parseDibCode / output: Spi / file: physics.dib
In [ ]:
{ . "$ScriptDir/../lib/math/build.ps1" } | Invoke-Block
00:00:00 #1 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #2 [Debug] executeAsync / options: { Command =
"dotnet "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 --default-int i32 --default-float f64"
WorkingDirectory = None
CancellationToken = Some System.Threading.CancellationToken
OnLine = Some <fun:main@464-1020> }
00:00:00 #3 [Verbose] > pwd: /home/runner/work/polyglot/polyglot/lib/math
00:00:00 #4 [Verbose] > dll_path: /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release
00:00:00 #5 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #6 [Verbose] waitForPortAccess / port: 13805 / retry: 0
00:00:00 #7 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #8 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #9 [Verbose] > Starting the Spiral Server. It is bound to: http://localhost:13805
00:00:00 #10 [Debug] runWithTimeoutAsync / timeout: 500
00:00:01 #11 [Debug] sendJson / port: 13805 / json: {"Ping":true} / result.Length:
00:00:01 #12 [Verbose] awaitCompiler / Ping / result: Some(null) / port: 13805 / retry: 0
00:00:01 #13 [Verbose] > Server bound to: http://localhost:13805
00:00:01 #14 [Debug] executeAsync / options: { Command = "pwsh -c "../../scripts/invoke-dib.ps1 math.dib""
WorkingDirectory = None
CancellationToken = Some System.Threading.CancellationToken
OnLine = None }
00:00:02 #15 [Verbose] >
00:00:03 #16 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:03 #17 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:03 #18 [Verbose] > │ # math │
00:00:03 #19 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:03 #20 [Verbose] >
00:00:03 #21 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:03 #22 [Verbose] > // // test
00:00:03 #23 [Verbose] >
00:00:03 #24 [Verbose] > open testing
00:00:03 #25 [Verbose] > open rust_operators
00:00:04 #26 [Verbose] > Building /tmp/!dotnet-repl/20240320-1230-1240-4043-476d99b688a4/main.spi
00:00:06 #27 [Verbose] >
00:00:06 #28 [Verbose] > ╭─[ 3.83s - stdout ]───────────────────────────────────────────────────────────╮
00:00:06 #29 [Verbose] > │ () │
00:00:06 #30 [Verbose] > │ │
00:00:06 #31 [Verbose] > │ │
00:00:06 #32 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #33 [Verbose] >
00:00:06 #34 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 #35 [Verbose] > inl types () =
00:00:06 #36 [Verbose] > global "[[<Fable.Core.Erase;
00:00:06 #37 [Verbose] > Fable.Core.Emit(\"num_complex::Complex<$0>\")>]] type num_complex_Complex<'T> =
00:00:06 #38 [Verbose] > class end"
00:00:06 #39 [Verbose] > global "[[<Fable.Core.Erase; Fable.Core.Emit(\"pyo3::types::PyModule\")>]]
00:00:06 #40 [Verbose] > type pyo3_types_PyModule = class end"
00:00:06 #41 [Verbose] > global "[[<Fable.Core.Erase; Fable.Core.Emit(\"pyo3::Bound<$0>\")>]] type
00:00:06 #42 [Verbose] > pyo3_Bound<'T> = class end"
00:00:06 #43 [Verbose] > global "[[<Fable.Core.Erase; Fable.Core.Emit(\"pyo3::Python\")>]] type
00:00:06 #44 [Verbose] > pyo3_Python = class end"
00:00:06 #45 [Verbose] > global "[[<Fable.Core.Erase; Fable.Core.Emit(\"pyo3::PyAny\")>]] type
00:00:06 #46 [Verbose] > pyo3_PyAny = class end"
00:00:06 #47 [Verbose] > global "[[<Fable.Core.Erase; Fable.Core.Emit(\"pyo3::PyErr\")>]] type
00:00:06 #48 [Verbose] > pyo3_PyErr = class end"
00:00:06 #49 [Verbose] > Building /tmp/!dotnet-repl/20240320-1230-1485-8594-84809e1bcda6/main.spi
00:00:07 #50 [Verbose] >
00:00:07 #51 [Verbose] > ╭─[ 156.37ms - stdout ]────────────────────────────────────────────────────────╮
00:00:07 #52 [Verbose] > │ () │
00:00:07 #53 [Verbose] > │ │
00:00:07 #54 [Verbose] > │ │
00:00:07 #55 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #56 [Verbose] >
00:00:07 #57 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:07 #58 [Verbose] > inl types () =
00:00:07 #59 [Verbose] > rust.types ()
00:00:07 #60 [Verbose] > sm'.types ()
00:00:07 #61 [Verbose] > types ()
00:00:07 #62 [Verbose] > Building /tmp/!dotnet-repl/20240320-1230-1501-0107-01f5c7dbb262/main.spi
00:00:07 #63 [Verbose] >
00:00:07 #64 [Verbose] > ╭─[ 147.66ms - stdout ]────────────────────────────────────────────────────────╮
00:00:07 #65 [Verbose] > │ () │
00:00:07 #66 [Verbose] > │ │
00:00:07 #67 [Verbose] > │ │
00:00:07 #68 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #69 [Verbose] >
00:00:07 #70 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:07 #71 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:07 #72 [Verbose] > │ ## complex │
00:00:07 #73 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #74 [Verbose] >
00:00:07 #75 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:07 #76 [Verbose] > nominal complex t = $"num_complex_Complex<`t>"
00:00:07 #77 [Verbose] > nominal bound t = $"pyo3_Bound<`t>"
00:00:07 #78 [Verbose] > nominal python = $"pyo3_Python"
00:00:07 #79 [Verbose] > nominal pymodule = $"pyo3_types_PyModule"
00:00:07 #80 [Verbose] > nominal pyany = $"pyo3_PyAny"
00:00:07 #81 [Verbose] > nominal pyerr = $"pyo3_PyErr"
00:00:07 #82 [Verbose] >
00:00:07 #83 [Verbose] > inl complex forall t. ((re : t), (im : t)) : complex t =
00:00:07 #84 [Verbose] > inl re = join re
00:00:07 #85 [Verbose] > inl im = join im
00:00:07 #86 [Verbose] > !\($'"num_complex::Complex::new(!re, !im)"')
00:00:07 #87 [Verbose] > Building /tmp/!dotnet-repl/20240320-1230-1515-1595-124209fa4b59/main.spi
00:00:07 #88 [Verbose] >
00:00:07 #89 [Verbose] > ╭─[ 149.78ms - stdout ]────────────────────────────────────────────────────────╮
00:00:07 #90 [Verbose] > │ () │
00:00:07 #91 [Verbose] > │ │
00:00:07 #92 [Verbose] > │ │
00:00:07 #93 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #94 [Verbose] >
00:00:07 #95 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:07 #96 [Verbose] > // // test
00:00:07 #97 [Verbose] > // // rust=
00:00:07 #98 [Verbose] >
00:00:07 #99 [Verbose] > types ()
00:00:07 #100 [Verbose] >
00:00:07 #101 [Verbose] > complex (0f64, 0f64)
00:00:07 #102 [Verbose] > |> sm'.format'
00:00:07 #103 [Verbose] > |> sm'.from_std_string
00:00:07 #104 [Verbose] > |> _assert_eq "0+0i"
00:00:07 #105 [Verbose] > Building /tmp/!dotnet-repl/20240320-1230-1531-3102-3bcbbf85f309/main.spi
00:00:10 #106 [Verbose] >
00:00:10 #107 [Verbose] > ╭─[ 3.08s - return value ]─────────────────────────────────────────────────────╮
00:00:10 #108 [Verbose] > │ .rs output: │
00:00:10 #109 [Verbose] > │ │
00:00:10 #110 [Verbose] > │ │
00:00:10 #111 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:10 #112 [Verbose] >
00:00:10 #113 [Verbose] > ╭─[ 3.09s - stdout ]───────────────────────────────────────────────────────────╮
00:00:10 #114 [Verbose] > │ │
00:00:10 #115 [Verbose] > │ .fsx: │
00:00:10 #116 [Verbose] > │ [<Fable.Core.Erase; Fable.Core.Emit("Func0<$0>")>] type Func0<'T> = class │
00:00:10 #117 [Verbose] > │ end │
00:00:10 #118 [Verbose] > │ [<Fable.Core.Erase; Fable.Core.Emit("Func1<$0, $1>")>] type Func0<'T, 'U> = │
00:00:10 #119 [Verbose] > │ class end │
00:00:10 #120 [Verbose] > │ [<Fable.Core.Erase; Fable.Core.Emit("Box<$0>")>] type Box<'T> = class end │
00:00:10 #121 [Verbose] > │ [<Fable.Core.Erase; Fable.Core.Emit("dyn $0")>] type Dyn<'T> = class end │
00:00:10 #122 [Verbose] > │ [<Fable.Core.Erase; Fable.Core.Emit("Fn() -> $0")>] type Fn<'T> = class end │
00:00:10 #123 [Verbose] > │ [<Fable.Core.Erase; Fable.Core.Emit("Fn()")>] type FnUnit = class end │
00:00:10 #124 [Verbose] > │ [<Fable.Core.Erase; Fable.Core.Emit("FnOnce() -> $0")>] type FnOnce<'T> = │
00:00:10 #125 [Verbose] > │ class end │
00:00:10 #126 [Verbose] > │ [<Fable.Core.Erase; Fable.Core.Emit("Fn($0, $1)")>] type ActionFn2<'T, 'U> = │
00:00:10 #127 [Verbose] > │ class end │
00:00:10 #128 [Verbose] > │ [<Fable.Core.Erase; Fable.Core.Emit("impl $0")>] type Impl<'T> = class end │
00:00:10 #129 [Verbose] > │ [<Fable.Core.Erase; Fable.Core.Emit("mut $0")>] type Mut<'T> = class end │
00:00:10 #130 [Verbose] > │ [<Fable.Core.Erase; Fable.Core.Emit("&$0")>] type Ref<'T> = class end │
00:00:10 #131 [Verbose] > │ [<Fable.Core.Erase; Fable.Core.Emit("&'static $0")>] type StaticRef<'T> = │
00:00:10 #132 [Verbose] > │ class end │
00:00:10 #133 [Verbose] > │ [<Fable.Core.Erase; Fable.Core.Emit("MutCell<$0>")>] type MutCell<'T> = │
00:00:10 #134 [Verbose] > │ class end │
00:00:10 #135 [Verbose] > │ [<Fable.Core.Erase; Fable.Core.Emit("std::any::Any")>] type std_any_Any = │
00:00:10 #136 [Verbose] > │ class end │
00:00:10 #137 [Verbose] > │ [<Fable.Core.Erase; Fable.Core.Emit("std::cell::RefCell<$0>")>] type │
00:00:10 #138 [Verbose] > │ std_cell_RefCell<'T> = class end │
00:00:10 #139 [Verbose] > │ [<Fable.Core.Erase; Fable.Core.Emit("std::pin::Pin<$0>")>] type │
00:00:10 #140 [Verbose] > │ std_pin_Pin<'T> = class end │
00:00:10 #141 [Verbose] > │ [<Fable.Core.Erase; Fable.Core.Emit("std::rc::Rc<$0>")>] type std_rc_Rc<'T> │
00:00:10 #142 [Verbose] > │ = class end │
00:00:10 #143 [Verbose] > │ [<Fable.Core.Erase; Fable.Core.Emit("std::rc::Weak<$0>")>] type │
00:00:10 #144 [Verbose] > │ std_rc_Weak<'T> = class end │
00:00:10 #145 [Verbose] > │ [<Fable.Core.Erase; Fable.Core.Emit("std::sync::Arc<$0>")>] type │
00:00:10 #146 [Verbose] > │ std_sync_Arc<'T> = class end │
00:00:10 #147 [Verbose] > │ [<Fable.Core.Erase; Fable.Core.Emit("str")>] type Str = class end │
00:00:10 #148 [Verbose] > │ [<Fable.Core.Erase; Fable.Core.Emit("base64::DecodeError")>] type │
00:00:10 #149 [Verbose] > │ base64_DecodeError = class end │
00:00:10 #150 [Verbose] > │ [<Fable.Core.Erase; Fable.Core.Emit("borsh::io::Error")>] type │
00:00:10 #151 [Verbose] > │ borsh_io_Error = class end │
00:00:10 #152 [Verbose] > │ [<Fable.Core.Erase; Fable.Core.Emit("js_sys::JsString")>] type │
00:00:10 #153 [Verbose] > │ js_sys_JsString = class end │
00:00:10 #154 [Verbose] > │ [<Fable.Core.Erase; Fable.Core.Emit("serde_json::Error")>] type │
00:00:10 #155 [Verbose] > │ serde_json_Error = class end │
00:00:10 #156 [Verbose] > │ [<Fable.Core.Erase; Fable.Core.Emit("serde_json::Value")>] type │
00:00:10 #157 [Verbose] > │ serde_json_Value = class end │
00:00:10 #158 [Verbose] > │ [<Fable.Core.Erase; Fable.Core.Emit("serde_wasm_bindgen::Error")>] type │
00:00:10 #159 [Verbose] > │ serde_wasm_bindgen_Error = class end │
00:00:10 #160 [Verbose] > │ [<Fable.Core.Erase; Fable.Core.Emit("std::str::Utf8Error")>] type │
00:00:10 #161 [Verbose] > │ std_str_Utf8Error = class end │
00:00:10 #162 [Verbose] > │ [<Fable.Core.Erase; Fable.Core.Emit("std::string::String")>] type │
00:00:10 #163 [Verbose] > │ std_string_String = class end │
00:00:10 #164 [Verbose] > │ [<Fable.Core.Erase; Fable.Core.Emit("num_complex::Complex<$0>")>] type │
00:00:10 #165 [Verbose] > │ num_complex_Complex<'T> = class end │
00:00:10 #166 [Verbose] > │ [<Fable.Core.Erase; Fable.Core.Emit("pyo3::types::PyModule")>] type │
00:00:10 #167 [Verbose] > │ pyo3_types_PyModule = class end │
00:00:10 #168 [Verbose] > │ [<Fable.Core.Erase; Fable.Core.Emit("pyo3::Bound<$0>")>] type pyo3_Bound<'T> │
00:00:10 #169 [Verbose] > │ = class end │
00:00:10 #170 [Verbose] > │ [<Fable.Core.Erase; Fable.Core.Emit("pyo3::Python")>] type pyo3_Python = │
00:00:10 #171 [Verbose] > │ class end │
00:00:10 #172 [Verbose] > │ [<Fable.Core.Erase; Fable.Core.Emit("pyo3::PyAny")>] type pyo3_PyAny = class │
00:00:10 #173 [Verbose] > │ end │
00:00:10 #174 [Verbose] > │ [<Fable.Core.Erase; Fable.Core.Emit("pyo3::PyErr")>] type pyo3_PyErr = class │
00:00:10 #175 [Verbose] > │ end │
00:00:10 #176 [Verbose] > │ let rec method1 () : float = │
00:00:10 #177 [Verbose] > │ 0.0 │
00:00:10 #178 [Verbose] > │ and method2 () : float = │
00:00:10 #179 [Verbose] > │ 0.0 │
00:00:10 #180 [Verbose] > │ and method3 (v0 : std_string_String) : std_string_String = │
00:00:10 #181 [Verbose] > │ v0 │
00:00:10 #182 [Verbose] > │ and method4 (v0 : bool) : bool = │
00:00:10 #183 [Verbose] > │ v0 │
00:00:10 #184 [Verbose] > │ and method0 () : unit = │
00:00:10 #185 [Verbose] > │ let v0 : float = method1() │
00:00:10 #186 [Verbose] > │ let v1 : float = method2() │
00:00:10 #187 [Verbose] > │ let v2 : string = "num_complex::Complex::new(v0, v1)" │
00:00:10 #188 [Verbose] > │ let v3 : num_complex_Complex<float> = │
00:00:10 #189 [Verbose] > │ Fable.Core.RustInterop.emitRustExpr () v2 │
00:00:10 #190 [Verbose] > │ let v4 : string = @$"format!(""{{}}"", $0)" │
00:00:10 #191 [Verbose] > │ let v5 : std_string_String = Fable.Core.RustInterop.emitRustExpr v3 v4 │
00:00:10 #192 [Verbose] > │ let v6 : std_string_String = method3(v5) │
00:00:10 #193 [Verbose] > │ let v7 : string = "fable_library_rust::String_::fromString(v6)" │
00:00:10 #194 [Verbose] > │ let v8 : string = Fable.Core.RustInterop.emitRustExpr () v7 │
00:00:10 #195 [Verbose] > │ let v10 : bool = v8 = "0+0i" │
00:00:10 #196 [Verbose] > │ let v12 : bool = │
00:00:10 #197 [Verbose] > │ if v10 then │
00:00:10 #198 [Verbose] > │ true │
00:00:10 #199 [Verbose] > │ else │
00:00:10 #200 [Verbose] > │ method4(v10) │
00:00:10 #201 [Verbose] > │ let v13 : string = "0+0i" │
00:00:10 #202 [Verbose] > │ let v14 : string = $"__expect / actual: %A{v8} / expected: %A{v13}" │
00:00:10 #203 [Verbose] > │ let v15 : bool = v12 = false │
00:00:10 #204 [Verbose] > │ if v15 then │
00:00:10 #205 [Verbose] > │ failwith<unit> v14 │
00:00:10 #206 [Verbose] > │ method0() │
00:00:10 #207 [Verbose] > │ │
00:00:10 #208 [Verbose] > │ .rs: │
00:00:10 #209 [Verbose] > │ #![allow(dead_code,)] │
00:00:10 #210 [Verbose] > │ #![allow(non_camel_case_types,)] │
00:00:10 #211 [Verbose] > │ #![allow(non_snake_case,)] │
00:00:10 #212 [Verbose] > │ #![allow(non_upper_case_globals,)] │
00:00:10 #213 [Verbose] > │ #![allow(unreachable_code,)] │
00:00:10 #214 [Verbose] > │ #![allow(unused_attributes,)] │
00:00:10 #215 [Verbose] > │ #![allow(unused_imports,)] │
00:00:10 #216 [Verbose] > │ #![allow(unused_macros,)] │
00:00:10 #217 [Verbose] > │ #![allow(unused_parens,)] │
00:00:10 #218 [Verbose] > │ #![allow(unused_variables,)] │
00:00:10 #219 [Verbose] > │ mod module_ccfa04bf { │
00:00:10 #220 [Verbose] > │ pub mod Spiral_eval { │
00:00:10 #221 [Verbose] > │ use super::*; │
00:00:10 #222 [Verbose] > │ use fable_library_rust::Native_::on_startup; │
00:00:10 #223 [Verbose] > │ use fable_library_rust::String_::sprintf; │
00:00:10 #224 [Verbose] > │ use fable_library_rust::String_::string; │
00:00:10 #225 [Verbose] > │ pub fn method1() -> f64 { 0.0_f64 } │
00:00:10 #226 [Verbose] > │ pub fn method2() -> f64 { 0.0_f64 } │
00:00:10 #227 [Verbose] > │ pub fn method3(v0: std::string::String) -> std::string::String { v0 │
00:00:10 #228 [Verbose] > │ } │
00:00:10 #229 [Verbose] > │ pub fn method4(v0: bool) -> bool { v0 } │
00:00:10 #230 [Verbose] > │ pub fn method0() { │
00:00:10 #231 [Verbose] > │ let v0: f64 = Spiral_eval::method1(); │
00:00:10 #232 [Verbose] > │ let v1: f64 = Spiral_eval::method2(); │
00:00:10 #233 [Verbose] > │ let v3: num_complex::Complex<f64> = │
00:00:10 #234 [Verbose] > │ num_complex::Complex::new(v0, v1); │
00:00:10 #235 [Verbose] > │ let v6: std::string::String = │
00:00:10 #236 [Verbose] > │ Spiral_eval::method3(format!("{}", v3)); │
00:00:10 #237 [Verbose] > │ let v8: string = fable_library_rust::String_::fromString(v6); │
00:00:10 #238 [Verbose] > │ let v10: bool = v8.clone() == string("0+0i"); │
00:00:10 #239 [Verbose] > │ if (if v10 { true } else { Spiral_eval::method4(v10) }) == false │
00:00:10 #240 [Verbose] > │ { │
00:00:10 #241 [Verbose] > │ panic!("{}", │
00:00:10 #242 [Verbose] > │ sprintf!("__expect / actual: {:?} / expected: {:?}", │
00:00:10 #243 [Verbose] > │ v8, string("0+0i"))); │
00:00:10 #244 [Verbose] > │ } │
00:00:10 #245 [Verbose] > │ } │
00:00:10 #246 [Verbose] > │ on_startup!(Spiral_eval::method0()); │
00:00:10 #247 [Verbose] > │ } │
00:00:10 #248 [Verbose] > │ } │
00:00:10 #249 [Verbose] > │ pub use module_ccfa04bf::*; │
00:00:10 #250 [Verbose] > │ │
00:00:10 #251 [Verbose] > │ │
00:00:10 #252 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:10 #253 [Verbose] >
00:00:10 #254 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:10 #255 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:10 #256 [Verbose] > │ ## run_test │
00:00:10 #257 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:10 #258 [Verbose] >
00:00:10 #259 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:10 #260 [Verbose] > inl re forall t. (c : complex t) : t =
00:00:10 #261 [Verbose] > !\($'"!c.re"')
00:00:10 #262 [Verbose] >
00:00:10 #263 [Verbose] > inl im forall t. (c : complex t) : t =
00:00:10 #264 [Verbose] > !\($'"!c.im"')
00:00:10 #265 [Verbose] >
00:00:10 #266 [Verbose] > inl complex_unbox forall t. (c : complex t) =
00:00:10 #267 [Verbose] > c |> re, c |> im
00:00:10 #268 [Verbose] >
00:00:10 #269 [Verbose] > inl powc forall t. (s : complex t) (c : complex t) : complex t =
00:00:10 #270 [Verbose] > !\($'"num_complex::Complex::powc(!c, !s)"')
00:00:10 #271 [Verbose] >
00:00:10 #272 [Verbose] > inl complex_sub forall t. (a : complex t) (b : complex t) : complex t =
00:00:10 #273 [Verbose] > !\($'"!a - !b"')
00:00:10 #274 [Verbose] >
00:00:10 #275 [Verbose] > inl complex_mult forall t. (a : complex t) (b : complex t) : complex t =
00:00:10 #276 [Verbose] > !\($'"!a * !b"')
00:00:10 #277 [Verbose] >
00:00:10 #278 [Verbose] > inl complex_div forall t. (a : complex t) (b : complex t) : complex t =
00:00:10 #279 [Verbose] > !\($'"!a / !b"')
00:00:10 #280 [Verbose] >
00:00:10 #281 [Verbose] > inl complex_sin forall t. (c : complex t) : complex t =
00:00:10 #282 [Verbose] > !\($'"!c.sin()"')
00:00:10 #283 [Verbose] >
00:00:10 #284 [Verbose] > inl conj forall t. (c : complex t) : complex t =
00:00:10 #285 [Verbose] > !\($'"!c.conj()"')
00:00:10 #286 [Verbose] >
00:00:10 #287 [Verbose] > inl module_from_code (py : python) (code : string) : resultm.result' (bound
00:00:10 #288 [Verbose] > pymodule) pyerr =
00:00:10 #289 [Verbose] > inl py = join py
00:00:10 #290 [Verbose] > inl code = code |> sm'.as_str
00:00:10 #291 [Verbose] > !\($'"pyo3::types::PyModule::from_code_bound(!py, !code, \\"\\", \\"\\")"')
00:00:10 #292 [Verbose] >
00:00:10 #293 [Verbose] > inl use_pyanymethods () =
00:00:10 #294 [Verbose] > global "Fable.Core.RustInterop.emitRustExpr () \");\nuse
00:00:10 #295 [Verbose] > pyo3::prelude::PyAnyMethods;\n//\""
00:00:10 #296 [Verbose] >
00:00:10 #297 [Verbose] > inl getattr (attr : string) (module : bound pymodule) : resultm.result' (bound
00:00:10 #298 [Verbose] > pyany) pyerr =
00:00:10 #299 [Verbose] > inl attr = attr |> sm'.as_str
00:00:10 #300 [Verbose] > inl module = join module
00:00:10 #301 [Verbose] > use_pyanymethods ()
00:00:10 #302 [Verbose] > !\($'"!module.getattr(!attr)"')
00:00:10 #303 [Verbose] >
00:00:10 #304 [Verbose] > inl call forall t. (args : t) (module : bound pyany) : resultm.result' (bound
00:00:10 #305 [Verbose] > pyany) pyerr =
00:00:10 #306 [Verbose] > inl args = join args
00:00:10 #307 [Verbose] > inl module = join module
00:00:10 #308 [Verbose] > !\($'"pyo3::prelude::PyAnyMethods::call(&!module, (*(*!args).0, ()),
00:00:10 #309 [Verbose] > None)"')
00:00:10 #310 [Verbose] >
00:00:10 #311 [Verbose] > inl extract forall t. (result : bound pyany) : resultm.result' t pyerr =
00:00:10 #312 [Verbose] > inl result = join result
00:00:10 #313 [Verbose] > use_pyanymethods ()
00:00:10 #314 [Verbose] > !\($'"!result.extract()"')
00:00:10 #315 [Verbose] >
00:00:10 #316 [Verbose] > inl eval py code args =
00:00:10 #317 [Verbose] > inl code =
00:00:10 #318 [Verbose] > code
00:00:10 #319 [Verbose] > |> module_from_code py
00:00:10 #320 [Verbose] > |> resultm.unwrap'
00:00:10 #321 [Verbose] > inl fn =
00:00:10 #322 [Verbose] > code
00:00:10 #323 [Verbose] > |> getattr "fn"
00:00:10 #324 [Verbose] > |> fun x => x : _ _ pyerr
00:00:10 #325 [Verbose] > |> resultm.unwrap'
00:00:10 #326 [Verbose] >
00:00:10 #327 [Verbose] > fn
00:00:10 #328 [Verbose] > |> call args
00:00:10 #329 [Verbose] > |> resultm.unwrap'
00:00:10 #330 [Verbose] > |> extract
00:00:10 #331 [Verbose] > |> fun x => x : _ _ pyerr
00:00:10 #332 [Verbose] > |> resultm.unwrap'
00:00:10 #333 [Verbose] > |> complex
00:00:10 #334 [Verbose] > |> Ok
00:00:10 #335 [Verbose] > |> fun x => x : _ _ pyerr
00:00:10 #336 [Verbose] > |> resultm.box
00:00:10 #337 [Verbose] >
00:00:10 #338 [Verbose] > inl gamma_ py s =
00:00:10 #339 [Verbose] > inl code =
00:00:10 #340 [Verbose] > ;[[
00:00:10 #341 [Verbose] > "import mpmath"
00:00:10 #342 [Verbose] > "def fn(s, _):"
00:00:10 #343 [Verbose] > " s = complex(*s)"
00:00:10 #344 [Verbose] > " s = mpmath.gamma(s)"
00:00:10 #345 [Verbose] > " return (s.real, s.imag)"
00:00:10 #346 [Verbose] > ]]
00:00:10 #347 [Verbose] > inl code = (a code : _ i32 _) |> sm'.concat_array_trailing "\n"
00:00:10 #348 [Verbose] >
00:00:10 #349 [Verbose] > inl s = new_pair (s |> re) (s |> im)
00:00:10 #350 [Verbose] > inl args = new_pair s ()
00:00:10 #351 [Verbose] >
00:00:10 #352 [Verbose] > eval py code args
00:00:10 #353 [Verbose] >
00:00:10 #354 [Verbose] > inl zeta_ py s =
00:00:10 #355 [Verbose] > inl code =
00:00:10 #356 [Verbose] > ;[[
00:00:10 #357 [Verbose] > "import mpmath"
00:00:10 #358 [Verbose] > "def fn(s, _):"
00:00:10 #359 [Verbose] > " s = complex(*s)"
00:00:10 #360 [Verbose] > " try:"
00:00:10 #361 [Verbose] > " s = mpmath.zeta(s)"
00:00:10 #362 [Verbose] > " except ValueError as e:"
00:00:10 #363 [Verbose] > " if s.real == 1:"
00:00:10 #364 [Verbose] > " s = complex(float('inf'), 0)"
00:00:10 #365 [Verbose] > " return (s.real, s.imag)"
00:00:10 #366 [Verbose] > ]]
00:00:10 #367 [Verbose] > inl code = (a code : _ i32 _) |> sm'.concat_array_trailing "\n"
00:00:10 #368 [Verbose] >
00:00:10 #369 [Verbose] > inl s = new_pair (s |> re) (s |> im)
00:00:10 #370 [Verbose] > inl args = new_pair s ()
00:00:10 #371 [Verbose] >
00:00:10 #372 [Verbose] > eval py code args
00:00:10 #373 [Verbose] >
00:00:10 #374 [Verbose] > inl run_test closure_fix (fn : (complex f64 -> complex f64) * (complex f64 ->
00:00:10 #375 [Verbose] > complex f64) -> ()) =
00:00:10 #376 [Verbose] > inl fn_ (py : python) : resultm.result' () pyerr =
00:00:10 #377 [Verbose] > inl zeta = fun (s : complex f64) =>
00:00:10 #378 [Verbose] > inl s = zeta_ py s |> resultm.unwrap'
00:00:10 #379 [Verbose] > s
00:00:10 #380 [Verbose] > inl gamma = fun (s : complex f64) =>
00:00:10 #381 [Verbose] > inl s = gamma_ py s |> resultm.unwrap'
00:00:10 #382 [Verbose] > s
00:00:10 #383 [Verbose] > fn (zeta, gamma)
00:00:10 #384 [Verbose] >
00:00:10 #385 [Verbose] > Ok ()
00:00:10 #386 [Verbose] > |> resultm.box
00:00:10 #387 [Verbose] >
00:00:10 #388 [Verbose] > join
00:00:10 #389 [Verbose] > !\($'"pyo3::prepare_freethreaded_python()"') : ()
00:00:10 #390 [Verbose] >
00:00:10 #391 [Verbose] > !\($'"let __result = pyo3::Python::with_gil(|py| -> pyo3::PyResult<()> {
00:00:10 #392 [Verbose] > //"')
00:00:10 #393 [Verbose] >
00:00:10 #394 [Verbose] > inl x = fn_
00:00:10 #395 [Verbose] > let x' = x (!\($'"py"') : python)
00:00:10 #396 [Verbose] > inl x' = join x'
00:00:10 #397 [Verbose] >
00:00:10 #398 [Verbose] > x' |> rust.fix_closure closure_fix
00:00:10 #399 [Verbose] >
00:00:10 #400 [Verbose] > (!\($'"__result"') : _ () pyerr)
00:00:10 #401 [Verbose] > |> resultm.unwrap'
00:00:10 #402 [Verbose] > Building /tmp/!dotnet-repl/20240320-1230-1841-4165-4c540435640f/main.spi
00:00:10 #403 [Verbose] >
00:00:10 #404 [Verbose] > ╭─[ 171.77ms - stdout ]────────────────────────────────────────────────────────╮
00:00:10 #405 [Verbose] > │ () │
00:00:10 #406 [Verbose] > │ │
00:00:10 #407 [Verbose] > │ │
00:00:10 #408 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:10 #409 [Verbose] >
00:00:10 #410 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:10 #411 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:10 #412 [Verbose] > │ ## test_zeta_at_2___ │
00:00:10 #413 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:10 #414 [Verbose] >
00:00:10 #415 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:10 #416 [Verbose] > // // test
00:00:10 #417 [Verbose] > // // rust=
00:00:10 #418 [Verbose] > // // print_code=true
00:00:10 #419 [Verbose] >
00:00:10 #420 [Verbose] > types ()
00:00:10 #421 [Verbose] >
00:00:10 #422 [Verbose] > run_test (5u8, 4u8) fun zeta, gamma =>
00:00:10 #423 [Verbose] > inl s = complex (2f64, 0f64)
00:00:10 #424 [Verbose] > inl result = zeta s
00:00:10 #425 [Verbose] >
00:00:10 #426 [Verbose] > result
00:00:10 #427 [Verbose] > |> im
00:00:10 #428 [Verbose] > |> _assert_eq 0f64
00:00:10 #429 [Verbose] >
00:00:10 #430 [Verbose] > ((result |> re) - (pi ** 2f64) / 6f64) |> abs
00:00:10 #431 [Verbose] > |> _assert_lt 0.001f64
00:00:10 #432 [Verbose] > Building /tmp/!dotnet-repl/20240320-1230-1858-5836-565a8f88bfec/main.spi
00:00:14 #433 [Verbose] >
00:00:14 #434 [Verbose] > ╭─[ 3.89s - return value ]─────────────────────────────────────────────────────╮
00:00:14 #435 [Verbose] > │ .rs output: │
00:00:14 #436 [Verbose] > │ │
00:00:14 #437 [Verbose] > │ │
00:00:14 #438 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:14 #439 [Verbose] >
00:00:14 #440 [Verbose] > ╭─[ 3.89s - stdout ]───────────────────────────────────────────────────────────╮
00:00:14 #441 [Verbose] > │ │
00:00:14 #442 [Verbose] > │ .fsx: │
00:00:14 #443 [Verbose] > │ [<Fable.Core.Erase; Fable.Core.Emit("Func0<$0>")>] type Func0<'T> = class │
00:00:14 #444 [Verbose] > │ end │
00:00:14 #445 [Verbose] > │ [<Fable.Core.Erase; Fable.Core.Emit("Func1<$0, $1>")>] type Func0<'T, 'U> = │
00:00:14 #446 [Verbose] > │ class end │
00:00:14 #447 [Verbose] > │ [<Fable.Core.Erase; Fable.Core.Emit("Box<$0>")>] type Box<'T> = class end │
00:00:14 #448 [Verbose] > │ [<Fable.Core.Erase; Fable.Core.Emit("dyn $0")>] type Dyn<'T> = class end │
00:00:14 #449 [Verbose] > │ [<Fable.Core.Erase; Fable.Core.Emit("Fn() -> $0")>] type Fn<'T> = class end │
00:00:14 #450 [Verbose] > │ [<Fable.Core.Erase; Fable.Core.Emit("Fn()")>] type FnUnit = class end │
00:00:14 #451 [Verbose] > │ [<Fable.Core.Erase; Fable.Core.Emit("FnOnce() -> $0")>] type FnOnce<'T> = │
00:00:14 #452 [Verbose] > │ class end │
00:00:14 #453 [Verbose] > │ [<Fable.Core.Erase; Fable.Core.Emit("Fn($0, $1)")>] type ActionFn2<'T, 'U> = │
00:00:14 #454 [Verbose] > │ class end │
00:00:14 #455 [Verbose] > │ [<Fable.Core.Erase; Fable.Core.Emit("impl $0")>] type Impl<'T> = class end │
00:00:14 #456 [Verbose] > │ [<Fable.Core.Erase; Fable.Core.Emit("mut $0")>] type Mut<'T> = class end │
00:00:14 #457 [Verbose] > │ [<Fable.Core.Erase; Fable.Core.Emit("&$0")>] type Ref<'T> = class end │
00:00:14 #458 [Verbose] > │ [<Fable.Core.Erase; Fable.Core.Emit("&'static $0")>] type StaticRef<'T> = │
00:00:14 #459 [Verbose] > │ class end │
00:00:14 #460 [Verbose] > │ [<Fable.Core.Erase; Fable.Core.Emit("MutCell<$0>")>] type MutCell<'T> = │
00:00:14 #461 [Verbose] > │ class end │
00:00:14 #462 [Verbose] > │ [<Fable.Core.Erase; Fable.Core.Emit("std::any::Any")>] type std_any_Any = │
00:00:14 #463 [Verbose] > │ class end │
00:00:14 #464 [Verbose] > │ [<Fable.Core.Erase; Fable.Core.Emit("std::cell::RefCell<$0>")>] type │
00:00:14 #465 [Verbose] > │ std_cell_RefCell<'T> = class end │
00:00:14 #466 [Verbose] > │ [<Fable.Core.Erase; Fable.Core.Emit("std::pin::Pin<$0>")>] type │
00:00:14 #467 [Verbose] > │ std_pin_Pin<'T> = class end │
00:00:14 #468 [Verbose] > │ [<Fable.Core.Erase; Fable.Core.Emit("std::rc::Rc<$0>")>] type std_rc_Rc<'T> │
00:00:14 #469 [Verbose] > │ = class end │
00:00:14 #470 [Verbose] > │ [<Fable.Core.Erase; Fable.Core.Emit("std::rc::Weak<$0>")>] type │
00:00:14 #471 [Verbose] > │ std_rc_Weak<'T> = class end │
00:00:14 #472 [Verbose] > │ [<Fable.Core.Erase; Fable.Core.Emit("std::sync::Arc<$0>")>] type │
00:00:14 #473 [Verbose] > │ std_sync_Arc<'T> = class end │
00:00:14 #474 [Verbose] > │ [<Fable.Core.Erase; Fable.Core.Emit("str")>] type Str = class end │
00:00:14 #475 [Verbose] > │ [<Fable.Core.Erase; Fable.Core.Emit("base64::DecodeError")>] type │
00:00:14 #476 [Verbose] > │ base64_DecodeError = class end │
00:00:14 #477 [Verbose] > │ [<Fable.Core.Erase; Fable.Core.Emit("borsh::io::Error")>] type │
00:00:14 #478 [Verbose] > │ borsh_io_Error = class end │
00:00:14 #479 [Verbose] > │ [<Fable.Core.Erase; Fable.Core.Emit("js_sys::JsString")>] type │
00:00:14 #480 [Verbose] > │ js_sys_JsString = class end │
00:00:14 #481 [Verbose] > │ [<Fable.Core.Erase; Fable.Core.Emit("serde_json::Error")>] type │
00:00:14 #482 [Verbose] > │ serde_json_Error = class end │
00:00:14 #483 [Verbose] > │ [<Fable.Core.Erase; Fable.Core.Emit("serde_json::Value")>] type │
00:00:14 #484 [Verbose] > │ serde_json_Value = class end │
00:00:14 #485 [Verbose] > │ [<Fable.Core.Erase; Fable.Core.Emit("serde_wasm_bindgen::Error")>] type │
00:00:14 #486 [Verbose] > │ serde_wasm_bindgen_Error = class end │
00:00:14 #487 [Verbose] > │ [<Fable.Core.Erase; Fable.Core.Emit("std::str::Utf8Error")>] type │
00:00:14 #488 [Verbose] > │ std_str_Utf8Error = class end │
00:00:14 #489 [Verbose] > │ [<Fable.Core.Erase; Fable.Core.Emit("std::string::String")>] type │
00:00:14 #490 [Verbose] > │ std_string_String = class end │
00:00:14 #491 [Verbose] > │ [<Fable.Core.Erase; Fable.Core.Emit("num_complex::Complex<$0>")>] type │
00:00:14 #492 [Verbose] > │ num_complex_Complex<'T> = class end │
00:00:14 #493 [Verbose] > │ [<Fable.Core.Erase; Fable.Core.Emit("pyo3::types::PyModule")>] type │
00:00:14 #494 [Verbose] > │ pyo3_types_PyModule = class end │
00:00:14 #495 [Verbose] > │ [<Fable.Core.Erase; Fable.Core.Emit("pyo3::Bound<$0>")>] type pyo3_Bound<'T> │
00:00:14 #496 [Verbose] > │ = class end │
00:00:14 #497 [Verbose] > │ [<Fable.Core.Erase; Fable.Core.Emit("pyo3::Python")>] type pyo3_Python = │
00:00:14 #498 [Verbose] > │ class end │
00:00:14 #499 [Verbose] > │ [<Fable.Core.Erase; Fable.Core.Emit("pyo3::PyAny")>] type pyo3_PyAny = class │
00:00:14 #500 [Verbose] > │ end │
00:00:14 #501 [Verbose] > │ [<Fable.Core.Erase; Fable.Core.Emit("pyo3::PyErr")>] type pyo3_PyErr = class │
00:00:14 #502 [Verbose] > │ end │
00:00:14 #503 [Verbose] > │ Fable.Core.RustInterop.emitRustExpr () "); │
00:00:14 #504 [Verbose] > │ use pyo3::prelude::PyAnyMethods; │
00:00:14 #505 [Verbose] > │ //" │
00:00:14 #506 [Verbose] > │ type Mut0 = {mutable l0 : int32; mutable l1 : string} │
00:00:14 #507 [Verbose] > │ let rec method2 () : float = │
00:00:14 #508 [Verbose] > │ 2.0 │
00:00:14 #509 [Verbose] > │ and method3 () : float = │
00:00:14 #510 [Verbose] > │ 0.0 │
00:00:14 #511 [Verbose] > │ and method4 (v0 : (string [])) : (string []) = │
00:00:14 #512 [Verbose] > │ v0 │
00:00:14 #513 [Verbose] > │ and method5 (v0 : int32, v1 : Mut0) : bool = │
00:00:14 #514 [Verbose] > │ let v2 : int32 = v1.l0 │
00:00:14 #515 [Verbose] > │ let v3 : bool = v2 < v0 │
00:00:14 #516 [Verbose] > │ v3 │
00:00:14 #517 [Verbose] > │ and method6 (v0 : pyo3_Python) : pyo3_Python = │
00:00:14 #518 [Verbose] > │ v0 │
00:00:14 #519 [Verbose] > │ and method7 (v0 : string) : string = │
00:00:14 #520 [Verbose] > │ v0 │
00:00:14 #521 [Verbose] > │ and method8 (v0 : Result<pyo3_Bound<pyo3_types_PyModule>, pyo3_PyErr>) : │
00:00:14 #522 [Verbose] > │ Result<pyo3_Bound<pyo3_types_PyModule>, pyo3_PyErr> = │
00:00:14 #523 [Verbose] > │ v0 │
00:00:14 #524 [Verbose] > │ and method9 () : string = │
00:00:14 #525 [Verbose] > │ let v0 : string = "fn" │
00:00:14 #526 [Verbose] > │ v0 │
00:00:14 #527 [Verbose] > │ and method10 (v0 : pyo3_Bound<pyo3_types_PyModule>) : │
00:00:14 #528 [Verbose] > │ pyo3_Bound<pyo3_types_PyModule> = │
00:00:14 #529 [Verbose] > │ v0 │
00:00:14 #530 [Verbose] > │ and method11 (v0 : Result<pyo3_Bound<pyo3_PyAny>, pyo3_PyErr>) : │
00:00:14 #531 [Verbose] > │ Result<pyo3_Bound<pyo3_PyAny>, pyo3_PyErr> = │
00:00:14 #532 [Verbose] > │ v0 │
00:00:14 #533 [Verbose] > │ and method12 (v0 : ((float * float) * unit)) : ((float * float) * unit) = │
00:00:14 #534 [Verbose] > │ v0 │
00:00:14 #535 [Verbose] > │ and method13 (v0 : pyo3_Bound<pyo3_PyAny>) : pyo3_Bound<pyo3_PyAny> = │
00:00:14 #536 [Verbose] > │ v0 │
00:00:14 #537 [Verbose] > │ and method14 (v0 : pyo3_Bound<pyo3_PyAny>) : pyo3_Bound<pyo3_PyAny> = │
00:00:14 #538 [Verbose] > │ v0 │
00:00:14 #539 [Verbose] > │ and method15 (v0 : Result<struct (float * float), pyo3_PyErr>) : │
00:00:14 #540 [Verbose] > │ Result<struct (float * float), pyo3_PyErr> = │
00:00:14 #541 [Verbose] > │ v0 │
00:00:14 #542 [Verbose] > │ and method16 (v0 : float) : float = │
00:00:14 #543 [Verbose] > │ v0 │
00:00:14 #544 [Verbose] > │ and method17 (v0 : float) : float = │
00:00:14 #545 [Verbose] > │ v0 │
00:00:14 #546 [Verbose] > │ and method18 (v0 : Result<num_complex_Complex<float>, pyo3_PyErr>) : │
00:00:14 #547 [Verbose] > │ Result<num_complex_Complex<float>, pyo3_PyErr> = │
00:00:14 #548 [Verbose] > │ v0 │
00:00:14 #549 [Verbose] > │ and method19 (v0 : bool) : bool = │
00:00:14 #550 [Verbose] > │ v0 │
00:00:14 #551 [Verbose] > │ and method20 (v0 : Result<unit, pyo3_PyErr>) : Result<unit, pyo3_PyErr> = │
00:00:14 #552 [Verbose] > │ v0 │
00:00:14 #553 [Verbose] > │ and method21 (v0 : Result<unit, pyo3_PyErr>) : Result<unit, pyo3_PyErr> = │
00:00:14 #554 [Verbose] > │ v0 │
00:00:14 #555 [Verbose] > │ and method1 () : unit = │
00:00:14 #556 [Verbose] > │ let v0 : string = "pyo3::prepare_freethreaded_python()" │
00:00:14 #557 [Verbose] > │ Fable.Core.RustInterop.emitRustExpr () v0 │
00:00:14 #558 [Verbose] > │ let v1 : string = "let __result = pyo3::Python::with_gil(|py| -> │
00:00:14 #559 [Verbose] > │ pyo3::PyResult<()> { //" │
00:00:14 #560 [Verbose] > │ Fable.Core.RustInterop.emitRustExpr () v1 │
00:00:14 #561 [Verbose] > │ let v2 : string = "py" │
00:00:14 #562 [Verbose] > │ let v3 : pyo3_Python = Fable.Core.RustInterop.emitRustExpr () v2 │
00:00:14 #563 [Verbose] > │ let v4 : float = method2() │
00:00:14 #564 [Verbose] > │ let v5 : float = method3() │
00:00:14 #565 [Verbose] > │ let v6 : string = "num_complex::Complex::new(v4, v5)" │
00:00:14 #566 [Verbose] > │ let v7 : num_complex_Complex<float> = │
00:00:14 #567 [Verbose] > │ Fable.Core.RustInterop.emitRustExpr () v6 │
00:00:14 #568 [Verbose] > │ let v8 : string = "import mpmath" │
00:00:14 #569 [Verbose] > │ let v9 : string = "def fn(s, _):" │
00:00:14 #570 [Verbose] > │ let v10 : string = " s = complex(*s)" │
00:00:14 #571 [Verbose] > │ let v11 : string = " try:" │
00:00:14 #572 [Verbose] > │ let v12 : string = " s = mpmath.zeta(s)" │
00:00:14 #573 [Verbose] > │ let v13 : string = " except ValueError as e:" │
00:00:14 #574 [Verbose] > │ let v14 : string = " if s.real == 1:" │
00:00:14 #575 [Verbose] > │ let v15 : string = " s = complex(float('inf'), 0)" │
00:00:14 #576 [Verbose] > │ let v16 : string = " return (s.real, s.imag)" │
00:00:14 #577 [Verbose] > │ let v17 : (string []) = [|v8; v9; v10; v11; v12; v13; v14; v15; v16|] │
00:00:14 #578 [Verbose] > │ let v18 : (string []) = method4(v17) │
00:00:14 #579 [Verbose] > │ let v19 : int32 = v18.Length │
00:00:14 #580 [Verbose] > │ let v20 : string = "" │
00:00:14 #581 [Verbose] > │ let v21 : Mut0 = {l0 = 0; l1 = v20} : Mut0 │
00:00:14 #582 [Verbose] > │ while method5(v19, v21) do │
00:00:14 #583 [Verbose] > │ let v23 : int32 = v21.l0 │
00:00:14 #584 [Verbose] > │ let v24 : string = v21.l1 │
00:00:14 #585 [Verbose] > │ let v25 : string = v18.[int v23] │
00:00:14 #586 [Verbose] > │ let v26 : string = "\n" │
00:00:14 #587 [Verbose] > │ let v27 : string = v24 + v25 + v26 + "" │
00:00:14 #588 [Verbose] > │ let v28 : int32 = v23 + 1 │
00:00:14 #589 [Verbose] > │ v21.l0 <- v28 │
00:00:14 #590 [Verbose] > │ v21.l1 <- v27 │
00:00:14 #591 [Verbose] > │ () │
00:00:14 #592 [Verbose] > │ let v29 : string = v21.l1 │
00:00:14 #593 [Verbose] > │ let v30 : string = "v7.re" │
00:00:14 #594 [Verbose] > │ let v31 : float = Fable.Core.RustInterop.emitRustExpr () v30 │
00:00:14 #595 [Verbose] > │ let v32 : string = "v7.im" │
00:00:14 #596 [Verbose] > │ let v33 : float = Fable.Core.RustInterop.emitRustExpr () v32 │
00:00:14 #597 [Verbose] > │ let v34 : (float * float) = v31, v33 │
00:00:14 #598 [Verbose] > │ let v35 : ((float * float) * unit) = v34, () │
00:00:14 #599 [Verbose] > │ let v36 : pyo3_Python = method6(v3) │
00:00:14 #600 [Verbose] > │ let v37 : string = method7(v29) │
00:00:14 #601 [Verbose] > │ let v38 : string = $"fable_library_rust::String_::LrcStr::as_str(&v37)" │
00:00:14 #602 [Verbose] > │ let v39 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v38 │
00:00:14 #603 [Verbose] > │ let v40 : string = "pyo3::types::PyModule::from_code_bound(v36, v39, │
00:00:14 #604 [Verbose] > │ \"\", \"\")" │
00:00:14 #605 [Verbose] > │ let v41 : Result<pyo3_Bound<pyo3_types_PyModule>, pyo3_PyErr> = │
00:00:14 #606 [Verbose] > │ Fable.Core.RustInterop.emitRustExpr () v40 │
00:00:14 #607 [Verbose] > │ let v42 : Result<pyo3_Bound<pyo3_types_PyModule>, pyo3_PyErr> = │
00:00:14 #608 [Verbose] > │ method8(v41) │
00:00:14 #609 [Verbose] > │ let v43 : string = "v42.unwrap()" │
00:00:14 #610 [Verbose] > │ let v44 : pyo3_Bound<pyo3_types_PyModule> = │
00:00:14 #611 [Verbose] > │ Fable.Core.RustInterop.emitRustExpr () v43 │
00:00:14 #612 [Verbose] > │ let v45 : string = method9() │
00:00:14 #613 [Verbose] > │ let v46 : string = $"fable_library_rust::String_::LrcStr::as_str(&v45)" │
00:00:14 #614 [Verbose] > │ let v47 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v46 │
00:00:14 #615 [Verbose] > │ let v48 : pyo3_Bound<pyo3_types_PyModule> = method10(v44) │
00:00:14 #616 [Verbose] > │ let v49 : string = "v48.getattr(v47)" │
00:00:14 #617 [Verbose] > │ let v50 : Result<pyo3_Bound<pyo3_PyAny>, pyo3_PyErr> = │
00:00:14 #618 [Verbose] > │ Fable.Core.RustInterop.emitRustExpr () v49 │
00:00:14 #619 [Verbose] > │ let v51 : Result<pyo3_Bound<pyo3_PyAny>, pyo3_PyErr> = method11(v50) │
00:00:14 #620 [Verbose] > │ let v52 : string = "v51.unwrap()" │
00:00:14 #621 [Verbose] > │ let v53 : pyo3_Bound<pyo3_PyAny> = Fable.Core.RustInterop.emitRustExpr │
00:00:14 #622 [Verbose] > │ () v52 │
00:00:14 #623 [Verbose] > │ let v54 : ((float * float) * unit) = method12(v35) │
00:00:14 #624 [Verbose] > │ let v55 : pyo3_Bound<pyo3_PyAny> = method13(v53) │
00:00:14 #625 [Verbose] > │ let v56 : string = "pyo3::prelude::PyAnyMethods::call(&v55, (*(*v54).0, │
00:00:14 #626 [Verbose] > │ ()), None)" │
00:00:14 #627 [Verbose] > │ let v57 : Result<pyo3_Bound<pyo3_PyAny>, pyo3_PyErr> = │
00:00:14 #628 [Verbose] > │ Fable.Core.RustInterop.emitRustExpr () v56 │
00:00:14 #629 [Verbose] > │ let v58 : Result<pyo3_Bound<pyo3_PyAny>, pyo3_PyErr> = method11(v57) │
00:00:14 #630 [Verbose] > │ let v59 : string = "v58.unwrap()" │
00:00:14 #631 [Verbose] > │ let v60 : pyo3_Bound<pyo3_PyAny> = Fable.Core.RustInterop.emitRustExpr │
00:00:14 #632 [Verbose] > │ () v59 │
00:00:14 #633 [Verbose] > │ let v61 : pyo3_Bound<pyo3_PyAny> = method14(v60) │
00:00:14 #634 [Verbose] > │ let v62 : string = "v61.extract()" │
00:00:14 #635 [Verbose] > │ let v63 : Result<struct (float * float), pyo3_PyErr> = │
00:00:14 #636 [Verbose] > │ Fable.Core.RustInterop.emitRustExpr () v62 │
00:00:14 #637 [Verbose] > │ let v64 : Result<struct (float * float), pyo3_PyErr> = method15(v63) │
00:00:14 #638 [Verbose] > │ let v65 : string = "v64.unwrap()" │
00:00:14 #639 [Verbose] > │ let struct (v66 : float, v67 : float) = │
00:00:14 #640 [Verbose] > │ Fable.Core.RustInterop.emitRustExpr () v65 │
00:00:14 #641 [Verbose] > │ let v68 : float = method16(v66) │
00:00:14 #642 [Verbose] > │ let v69 : float = method17(v67) │
00:00:14 #643 [Verbose] > │ let v70 : string = "num_complex::Complex::new(v68, v69)" │
00:00:14 #644 [Verbose] > │ let v71 : num_complex_Complex<float> = │
00:00:14 #645 [Verbose] > │ Fable.Core.RustInterop.emitRustExpr () v70 │
00:00:14 #646 [Verbose] > │ let v72 : Result<num_complex_Complex<float>, pyo3_PyErr> = Ok v71 │
00:00:14 #647 [Verbose] > │ let v73 : Result<num_complex_Complex<float>, pyo3_PyErr> = method18(v72) │
00:00:14 #648 [Verbose] > │ let v74 : string = "v73.unwrap()" │
00:00:14 #649 [Verbose] > │ let v75 : num_complex_Complex<float> = │
00:00:14 #650 [Verbose] > │ Fable.Core.RustInterop.emitRustExpr () v74 │
00:00:14 #651 [Verbose] > │ let v76 : string = "v75.im" │
00:00:14 #652 [Verbose] > │ let v77 : float = Fable.Core.RustInterop.emitRustExpr () v76 │
00:00:14 #653 [Verbose] > │ let v78 : bool = v77 = 0.0 │
00:00:14 #654 [Verbose] > │ let v80 : bool = │
00:00:14 #655 [Verbose] > │ if v78 then │
00:00:14 #656 [Verbose] > │ true │
00:00:14 #657 [Verbose] > │ else │
00:00:14 #658 [Verbose] > │ method19(v78) │
00:00:14 #659 [Verbose] > │ let v81 : string = $"__expect / actual: %A{v77} / expected: %A{0.0}" │
00:00:14 #660 [Verbose] > │ let v82 : bool = v80 = false │
00:00:14 #661 [Verbose] > │ if v82 then │
00:00:14 #662 [Verbose] > │ failwith<unit> v81 │
00:00:14 #663 [Verbose] > │ let v83 : string = "v75.re" │
00:00:14 #664 [Verbose] > │ let v84 : float = Fable.Core.RustInterop.emitRustExpr () v83 │
00:00:14 #665 [Verbose] > │ let v85 : float = v84 - 1.6449340668482264 │
00:00:14 #666 [Verbose] > │ let v86 : float = -v85 │
00:00:14 #667 [Verbose] > │ let v87 : bool = v85 >= v86 │
00:00:14 #668 [Verbose] > │ let v88 : float = │
00:00:14 #669 [Verbose] > │ if v87 then │
00:00:14 #670 [Verbose] > │ v85 │
00:00:14 #671 [Verbose] > │ else │
00:00:14 #672 [Verbose] > │ v86 │
00:00:14 #673 [Verbose] > │ let v89 : bool = v88 < 0.001 │
00:00:14 #674 [Verbose] > │ let v91 : bool = │
00:00:14 #675 [Verbose] > │ if v89 then │
00:00:14 #676 [Verbose] > │ true │
00:00:14 #677 [Verbose] > │ else │
00:00:14 #678 [Verbose] > │ method19(v89) │
00:00:14 #679 [Verbose] > │ let v92 : string = $"__expect / actual: %A{v88} / expected: %A{0.001}" │
00:00:14 #680 [Verbose] > │ let v93 : bool = v91 = false │
00:00:14 #681 [Verbose] > │ if v93 then │
00:00:14 #682 [Verbose] > │ failwith<unit> v92 │
00:00:14 #683 [Verbose] > │ let v94 : Result<unit, pyo3_PyErr> = Ok () │
00:00:14 #684 [Verbose] > │ let v95 : Result<unit, pyo3_PyErr> = method20(v94) │
00:00:14 #685 [Verbose] > │ let v96 : string = "v95 }}}}})" │
00:00:14 #686 [Verbose] > │ Fable.Core.RustInterop.emitRustExpr () v96 │
00:00:14 #687 [Verbose] > │ let v97 : string = " {{{{ //" │
00:00:14 #688 [Verbose] > │ Fable.Core.RustInterop.emitRustExpr () v97 │
00:00:14 #689 [Verbose] > │ let v98 : string = "__result" │
00:00:14 #690 [Verbose] > │ let v99 : Result<unit, pyo3_PyErr> = Fable.Core.RustInterop.emitRustExpr │
00:00:14 #691 [Verbose] > │ () v98 │
00:00:14 #692 [Verbose] > │ let v100 : Result<unit, pyo3_PyErr> = method21(v99) │
00:00:14 #693 [Verbose] > │ let v101 : string = "v100.unwrap()" │
00:00:14 #694 [Verbose] > │ Fable.Core.RustInterop.emitRustExpr () v101 │
00:00:14 #695 [Verbose] > │ () │
00:00:14 #696 [Verbose] > │ and method0 () : unit = │
00:00:14 #697 [Verbose] > │ method1() │
00:00:14 #698 [Verbose] > │ method0() │
00:00:14 #699 [Verbose] > │ │
00:00:14 #700 [Verbose] > │ .rs: │
00:00:14 #701 [Verbose] > │ #![allow(dead_code,)] │
00:00:14 #702 [Verbose] > │ #![allow(non_camel_case_types,)] │
00:00:14 #703 [Verbose] > │ #![allow(non_snake_case,)] │
00:00:14 #704 [Verbose] > │ #![allow(non_upper_case_globals,)] │
00:00:14 #705 [Verbose] > │ #![allow(unreachable_code,)] │
00:00:14 #706 [Verbose] > │ #![allow(unused_attributes,)] │
00:00:14 #707 [Verbose] > │ #![allow(unused_imports,)] │
00:00:14 #708 [Verbose] > │ #![allow(unused_macros,)] │
00:00:14 #709 [Verbose] > │ #![allow(unused_parens,)] │
00:00:14 #710 [Verbose] > │ #![allow(unused_variables,)] │
00:00:14 #711 [Verbose] > │ mod module_ccfa04bf { │
00:00:14 #712 [Verbose] > │ pub mod Spiral_eval { │
00:00:14 #713 [Verbose] > │ use super::*; │
00:00:14 #714 [Verbose] > │ use fable_library_rust::Native_::LrcPtr; │
00:00:14 #715 [Verbose] > │ use fable_library_rust::Native_::MutCell; │
00:00:14 #716 [Verbose] > │ use fable_library_rust::Native_::on_startup; │
00:00:14 #717 [Verbose] > │ use fable_library_rust::NativeArray_::Array; │
00:00:14 #718 [Verbose] > │ use fable_library_rust::NativeArray_::count; │
00:00:14 #719 [Verbose] > │ use fable_library_rust::NativeArray_::new_array; │
00:00:14 #720 [Verbose] > │ use fable_library_rust::String_::append; │
00:00:14 #721 [Verbose] > │ use fable_library_rust::String_::sprintf; │
00:00:14 #722 [Verbose] > │ use fable_library_rust::String_::string; │
00:00:14 #723 [Verbose] > │ on_startup!(); │
00:00:14 #724 [Verbose] > │ use pyo3::prelude::PyAnyMethods; │
00:00:14 #725 [Verbose] > │ //,); │
00:00:14 #726 [Verbose] > │ #[derive(Clone, Debug, Default, PartialEq, PartialOrd, Hash, Eq,)] │
00:00:14 #727 [Verbose] > │ pub struct Mut0 { │
00:00:14 #728 [Verbose] > │ pub l0: MutCell<i32>, │
00:00:14 #729 [Verbose] > │ pub l1: MutCell<string>, │
00:00:14 #730 [Verbose] > │ } │
00:00:14 #731 [Verbose] > │ impl core::fmt::Display for Spiral_eval::Mut0 { │
00:00:14 #732 [Verbose] > │ fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result │
00:00:14 #733 [Verbose] > │ { │
00:00:14 #734 [Verbose] > │ write!(f, "{}", core::any::type_name::<Self>()) │
00:00:14 #735 [Verbose] > │ } │
00:00:14 #736 [Verbose] > │ } │
00:00:14 #737 [Verbose] > │ pub fn method2() -> f64 { 2.0_f64 } │
00:00:14 #738 [Verbose] > │ pub fn method3() -> f64 { 0.0_f64 } │
00:00:14 #739 [Verbose] > │ pub fn method4(v0: Array<string>) -> Array<string> { v0 } │
00:00:14 #740 [Verbose] > │ pub fn method5(v0: i32, v1: LrcPtr<Spiral_eval::Mut0>) -> bool { │
00:00:14 #741 [Verbose] > │ v1.l0.get().clone() < v0 │
00:00:14 #742 [Verbose] > │ } │
00:00:14 #743 [Verbose] > │ pub fn method6(v0: pyo3::Python) -> pyo3::Python { v0 } │
00:00:14 #744 [Verbose] > │ pub fn method7(v0: string) -> string { v0 } │
00:00:14 #745 [Verbose] > │ pub fn method8(v0: │
00:00:14 #746 [Verbose] > │ Result<pyo3::Bound<pyo3::types::PyModule>, │
00:00:14 #747 [Verbose] > │ pyo3::PyErr>) │
00:00:14 #748 [Verbose] > │ -> Result<pyo3::Bound<pyo3::types::PyModule>, pyo3::PyErr> { │
00:00:14 #749 [Verbose] > │ v0 │
00:00:14 #750 [Verbose] > │ } │
00:00:14 #751 [Verbose] > │ pub fn method9() -> string { string("fn") } │
00:00:14 #752 [Verbose] > │ pub fn method10(v0: pyo3::Bound<pyo3::types::PyModule>) │
00:00:14 #753 [Verbose] > │ -> pyo3::Bound<pyo3::types::PyModule> { │
00:00:14 #754 [Verbose] > │ v0 │
00:00:14 #755 [Verbose] > │ } │
00:00:14 #756 [Verbose] > │ pub fn method11(v0: Result<pyo3::Bound<pyo3::PyAny>, pyo3::PyErr>) │
00:00:14 #757 [Verbose] > │ -> Result<pyo3::Bound<pyo3::PyAny>, pyo3::PyErr> { │
00:00:14 #758 [Verbose] > │ v0 │
00:00:14 #759 [Verbose] > │ } │
00:00:14 #760 [Verbose] > │ pub fn method12(v0_: LrcPtr<(f64, f64)>, v0__1: ()) │
00:00:14 #761 [Verbose] > │ -> LrcPtr<(LrcPtr<(f64, f64)>, ())> { │
00:00:14 #762 [Verbose] > │ LrcPtr::new((v0_, ())) │
00:00:14 #763 [Verbose] > │ } │
00:00:14 #764 [Verbose] > │ pub fn method13(v0: pyo3::Bound<pyo3::PyAny>) │
00:00:14 #765 [Verbose] > │ -> pyo3::Bound<pyo3::PyAny> { │
00:00:14 #766 [Verbose] > │ v0 │
00:00:14 #767 [Verbose] > │ } │
00:00:14 #768 [Verbose] > │ pub fn method14(v0: pyo3::Bound<pyo3::PyAny>) │
00:00:14 #769 [Verbose] > │ -> pyo3::Bound<pyo3::PyAny> { │
00:00:14 #770 [Verbose] > │ v0 │
00:00:14 #771 [Verbose] > │ } │
00:00:14 #772 [Verbose] > │ pub fn method15(v0: Result<(f64, f64), pyo3::PyErr>) │
00:00:14 #773 [Verbose] > │ -> Result<(f64, f64), pyo3::PyErr> { │
00:00:14 #774 [Verbose] > │ v0 │
00:00:14 #775 [Verbose] > │ } │
00:00:14 #776 [Verbose] > │ pub fn method16(v0: f64) -> f64 { v0 } │
00:00:14 #777 [Verbose] > │ pub fn method17(v0: f64) -> f64 { v0 } │
00:00:14 #778 [Verbose] > │ pub fn method18(v0: Result<num_complex::Complex<f64>, pyo3::PyErr>) │
00:00:14 #779 [Verbose] > │ -> Result<num_complex::Complex<f64>, pyo3::PyErr> { │
00:00:14 #780 [Verbose] > │ v0 │
00:00:14 #781 [Verbose] > │ } │
00:00:14 #782 [Verbose] > │ pub fn method19(v0: bool) -> bool { v0 } │
00:00:14 #783 [Verbose] > │ pub fn method20(v0: Result<(), pyo3::PyErr>) │
00:00:14 #784 [Verbose] > │ -> Result<(), pyo3::PyErr> { │
00:00:14 #785 [Verbose] > │ v0 │
00:00:14 #786 [Verbose] > │ } │
00:00:14 #787 [Verbose] > │ pub fn method21(v0: Result<(), pyo3::PyErr>) │
00:00:14 #788 [Verbose] > │ -> Result<(), pyo3::PyErr> { │
00:00:14 #789 [Verbose] > │ v0 │
00:00:14 #790 [Verbose] > │ } │
00:00:14 #791 [Verbose] > │ pub fn method1() { │
00:00:14 #792 [Verbose] > │ pyo3::prepare_freethreaded_python(); │
00:00:14 #793 [Verbose] > │ let __result = pyo3::Python::with_gil(|py| -> pyo3::PyResult<()> │
00:00:14 #794 [Verbose] > │ { //; │
00:00:14 #795 [Verbose] > │ { │
00:00:14 #796 [Verbose] > │ let v3: pyo3::Python = py; │
00:00:14 #797 [Verbose] > │ let v4: f64 = Spiral_eval::method2(); │
00:00:14 #798 [Verbose] > │ let v5: f64 = Spiral_eval::method3(); │
00:00:14 #799 [Verbose] > │ let v7: num_complex::Complex<f64> = │
00:00:14 #800 [Verbose] > │ num_complex::Complex::new(v4, v5); │
00:00:14 #801 [Verbose] > │ let v18: Array<string> = │
00:00:14 #802 [Verbose] > │ Spiral_eval::method4(new_array(&[string("import │
00:00:14 #803 [Verbose] > │ mpmath"), │
00:00:14 #804 [Verbose] > │ string("def fn(s, │
00:00:14 #805 [Verbose] > │ _):"), │
00:00:14 #806 [Verbose] > │ string(" s = │
00:00:14 #807 [Verbose] > │ complex(*s)"), │
00:00:14 #808 [Verbose] > │ string(" try:"), │
00:00:14 #809 [Verbose] > │ string(" s = │
00:00:14 #810 [Verbose] > │ mpmath.zeta(s)"), │
00:00:14 #811 [Verbose] > │ string(" except │
00:00:14 #812 [Verbose] > │ ValueError as e:"), │
00:00:14 #813 [Verbose] > │ string(" if │
00:00:14 #814 [Verbose] > │ s.real == 1:"), │
00:00:14 #815 [Verbose] > │ string(" s = │
00:00:14 #816 [Verbose] > │ complex(float(\'inf\'), 0)"), │
00:00:14 #817 [Verbose] > │ string(" return │
00:00:14 #818 [Verbose] > │ (s.real, s.imag)")])); │
00:00:14 #819 [Verbose] > │ let v19: i32 = count(v18.clone()); │
00:00:14 #820 [Verbose] > │ let v21: LrcPtr<Spiral_eval::Mut0> = │
00:00:14 #821 [Verbose] > │ LrcPtr::new(Spiral_eval::Mut0{l0: MutCell::new(0_i32), │
00:00:14 #822 [Verbose] > │ l1: │
00:00:14 #823 [Verbose] > │ │
00:00:14 #824 [Verbose] > │ MutCell::new(string("")),}); │
00:00:14 #825 [Verbose] > │ while Spiral_eval::method5(v19, v21.clone()) { │
00:00:14 #826 [Verbose] > │ let v23: i32 = v21.l0.get().clone(); │
00:00:14 #827 [Verbose] > │ let v27: string = │
00:00:14 #828 [Verbose] > │ append(append(append(v21.l1.get().clone(), │
00:00:14 #829 [Verbose] > │ v18[v23].clone()), │
00:00:14 #830 [Verbose] > │ string("\n")), │
00:00:14 #831 [Verbose] > │ string("")); │
00:00:14 #832 [Verbose] > │ let v28: i32 = v23 + 1_i32; │
00:00:14 #833 [Verbose] > │ v21.l0.set(v28); │
00:00:14 #834 [Verbose] > │ v21.l1.set(v27); │
00:00:14 #835 [Verbose] > │ () │
00:00:14 #836 [Verbose] > │ } │
00:00:14 #837 [Verbose] > │ { │
00:00:14 #838 [Verbose] > │ let v29: string = v21.l1.get().clone(); │
00:00:14 #839 [Verbose] > │ let v31: f64 = v7.re; │
00:00:14 #840 [Verbose] > │ let v33: f64 = v7.im; │
00:00:14 #841 [Verbose] > │ let v36: pyo3::Python = Spiral_eval::method6(v3); │
00:00:14 #842 [Verbose] > │ let v37: string = Spiral_eval::method7(v29); │
00:00:14 #843 [Verbose] > │ let v39: &str = │
00:00:14 #844 [Verbose] > │ fable_library_rust::String_::LrcStr::as_str(&v37); │
00:00:14 #845 [Verbose] > │ let v42: │
00:00:14 #846 [Verbose] > │ Result<pyo3::Bound<pyo3::types::PyModule>, │
00:00:14 #847 [Verbose] > │ pyo3::PyErr> = │
00:00:14 #848 [Verbose] > │ │
00:00:14 #849 [Verbose] > │ Spiral_eval::method8(pyo3::types::PyModule::from_code_bound(v36, v39, "", │
00:00:14 #850 [Verbose] > │ "")); │
00:00:14 #851 [Verbose] > │ let v44: pyo3::Bound<pyo3::types::PyModule> = │
00:00:14 #852 [Verbose] > │ v42.unwrap(); │
00:00:14 #853 [Verbose] > │ let v45: string = Spiral_eval::method9(); │
00:00:14 #854 [Verbose] > │ let v47: &str = │
00:00:14 #855 [Verbose] > │ fable_library_rust::String_::LrcStr::as_str(&v45); │
00:00:14 #856 [Verbose] > │ let v48: pyo3::Bound<pyo3::types::PyModule> = │
00:00:14 #857 [Verbose] > │ Spiral_eval::method10(v44); │
00:00:14 #858 [Verbose] > │ let v51: Result<pyo3::Bound<pyo3::PyAny>, pyo3::PyErr> = │
00:00:14 #859 [Verbose] > │ Spiral_eval::method11(v48.getattr(v47)); │
00:00:14 #860 [Verbose] > │ let v53: pyo3::Bound<pyo3::PyAny> = v51.unwrap(); │
00:00:14 #861 [Verbose] > │ let v54: LrcPtr<(LrcPtr<(f64, f64)>, ())> = │
00:00:14 #862 [Verbose] > │ │
00:00:14 #863 [Verbose] > │ Spiral_eval::method12((LrcPtr::new((LrcPtr::new((v31, │
00:00:14 #864 [Verbose] > │ │
00:00:14 #865 [Verbose] > │ v33)), │
00:00:14 #866 [Verbose] > │ ()))).0.clone(), │
00:00:14 #867 [Verbose] > │ ()); │
00:00:14 #868 [Verbose] > │ let v55: pyo3::Bound<pyo3::PyAny> = │
00:00:14 #869 [Verbose] > │ Spiral_eval::method13(v53); │
00:00:14 #870 [Verbose] > │ let v58: Result<pyo3::Bound<pyo3::PyAny>, pyo3::PyErr> = │
00:00:14 #871 [Verbose] > │ │
00:00:14 #872 [Verbose] > │ Spiral_eval::method11(pyo3::prelude::PyAnyMethods::call(&v55, (*(*v54).0, │
00:00:14 #873 [Verbose] > │ ()), None)); │
00:00:14 #874 [Verbose] > │ let v61: pyo3::Bound<pyo3::PyAny> = │
00:00:14 #875 [Verbose] > │ Spiral_eval::method14(v58.unwrap()); │
00:00:14 #876 [Verbose] > │ let v64: Result<(f64, f64), pyo3::PyErr> = │
00:00:14 #877 [Verbose] > │ Spiral_eval::method15(v61.extract()); │
00:00:14 #878 [Verbose] > │ let patternInput: (f64, f64) = v64.unwrap(); │
00:00:14 #879 [Verbose] > │ let v68: f64 = │
00:00:14 #880 [Verbose] > │ Spiral_eval::method16(patternInput.0.clone()); │
00:00:14 #881 [Verbose] > │ let v69: f64 = │
00:00:14 #882 [Verbose] > │ Spiral_eval::method17(patternInput.1.clone()); │
00:00:14 #883 [Verbose] > │ let v73: Result<num_complex::Complex<f64>, pyo3::PyErr> │
00:00:14 #884 [Verbose] > │ = │
00:00:14 #885 [Verbose] > │ │
00:00:14 #886 [Verbose] > │ Spiral_eval::method18(Ok::<num_complex::Complex<f64>, │
00:00:14 #887 [Verbose] > │ │
00:00:14 #888 [Verbose] > │ pyo3::PyErr>(num_complex::Complex::new(v68, v69))); │
00:00:14 #889 [Verbose] > │ let v75: num_complex::Complex<f64> = v73.unwrap(); │
00:00:14 #890 [Verbose] > │ let v77: f64 = v75.im; │
00:00:14 #891 [Verbose] > │ let v78: bool = v77 == 0.0_f64; │
00:00:14 #892 [Verbose] > │ if (if v78 { true } else { Spiral_eval::method19(v78) }) │
00:00:14 #893 [Verbose] > │ == false { │
00:00:14 #894 [Verbose] > │ panic!("{}", │
00:00:14 #895 [Verbose] > │ sprintf!("__expect / actual: {:?} / expected: │
00:00:14 #896 [Verbose] > │ {:?}", v77, 0.0_f64)); │
00:00:14 #897 [Verbose] > │ } │
00:00:14 #898 [Verbose] > │ { │
00:00:14 #899 [Verbose] > │ let v85: f64 = v75.re - 1.6449340668482264_f64; │
00:00:14 #900 [Verbose] > │ let v86: f64 = -v85; │
00:00:14 #901 [Verbose] > │ let v88: f64 = if v85 >= v86 { v85 } else { v86 }; │
00:00:14 #902 [Verbose] > │ let v89: bool = v88 < 0.001_f64; │
00:00:14 #903 [Verbose] > │ if (if v89 { │
00:00:14 #904 [Verbose] > │ true │
00:00:14 #905 [Verbose] > │ } else { Spiral_eval::method19(v89) }) == false │
00:00:14 #906 [Verbose] > │ { │
00:00:14 #907 [Verbose] > │ panic!("{}", │
00:00:14 #908 [Verbose] > │ sprintf!("__expect / actual: {:?} / │
00:00:14 #909 [Verbose] > │ expected: {:?}", v88, 0.001_f64)); │
00:00:14 #910 [Verbose] > │ } │
00:00:14 #911 [Verbose] > │ { │
00:00:14 #912 [Verbose] > │ let v95: Result<(), pyo3::PyErr> = │
00:00:14 #913 [Verbose] > │ Spiral_eval::method20(Ok::<(), │
00:00:14 #914 [Verbose] > │ │
00:00:14 #915 [Verbose] > │ pyo3::PyErr>(())); │
00:00:14 #916 [Verbose] > │ v95 }}}}}); │
00:00:14 #917 [Verbose] > │ {{{{ //; │
00:00:14 #918 [Verbose] > │ { │
00:00:14 #919 [Verbose] > │ let v100: Result<(), pyo3::PyErr> = │
00:00:14 #920 [Verbose] > │ Spiral_eval::method21(__result); │
00:00:14 #921 [Verbose] > │ v100.unwrap(); │
00:00:14 #922 [Verbose] > │ () │
00:00:14 #923 [Verbose] > │ } │
00:00:14 #924 [Verbose] > │ } │
00:00:14 #925 [Verbose] > │ } │
00:00:14 #926 [Verbose] > │ } │
00:00:14 #927 [Verbose] > │ } │
00:00:14 #928 [Verbose] > │ } │
00:00:14 #929 [Verbose] > │ pub fn method0() { Spiral_eval::method1(); } │
00:00:14 #930 [Verbose] > │ on_startup!(Spiral_eval::method0()); │
00:00:14 #931 [Verbose] > │ } │
00:00:14 #932 [Verbose] > │ } │
00:00:14 #933 [Verbose] > │ pub use module_ccfa04bf::*; │
00:00:14 #934 [Verbose] > │ │
00:00:14 #935 [Verbose] > │ │
00:00:14 #936 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:14 #937 [Verbose] >
00:00:14 #938 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:14 #939 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:14 #940 [Verbose] > │ ## test_zeta_at_2_minus2 │
00:00:14 #941 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:14 #942 [Verbose] >
00:00:14 #943 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:14 #944 [Verbose] > // // test
00:00:14 #945 [Verbose] > // // rust=
00:00:14 #946 [Verbose] > // // print_code=false
00:00:14 #947 [Verbose] >
00:00:14 #948 [Verbose] > types ()
00:00:14 #949 [Verbose] >
00:00:14 #950 [Verbose] > run_test (5u8, 4u8) fun zeta, gamma =>
00:00:14 #951 [Verbose] > inl s = complex (2f64, -2f64)
00:00:14 #952 [Verbose] > inl result = zeta s
00:00:14 #953 [Verbose] >
00:00:14 #954 [Verbose] > ((result |> re) - 0.8673f64) |> abs
00:00:14 #955 [Verbose] > |> _assert_lt 0.001f64
00:00:14 #956 [Verbose] >
00:00:14 #957 [Verbose] > ((result |> im) - 0.2750f64) |> abs
00:00:14 #958 [Verbose] > |> _assert_lt 0.001f64
00:00:14 #959 [Verbose] > Building /tmp/!dotnet-repl/20240320-1230-2248-4849-487e7b96d9f5/main.spi
00:00:18 #960 [Verbose] >
00:00:18 #961 [Verbose] >
00:00:18 #962 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:18 #963 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:18 #964 [Verbose] > │ ## test_trivial_zero_at_negative_even___ │
00:00:18 #965 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:18 #966 [Verbose] >
00:00:18 #967 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:18 #968 [Verbose] > // // test
00:00:18 #969 [Verbose] > // // rust=
00:00:18 #970 [Verbose] > // // print_code=false
00:00:18 #971 [Verbose] >
00:00:18 #972 [Verbose] > types ()
00:00:18 #973 [Verbose] >
00:00:18 #974 [Verbose] > run_test (2u8, 1u8) fun zeta, gamma =>
00:00:18 #975 [Verbose] > (join listm'.init_series -2f64 -20 -2)
00:00:18 #976 [Verbose] > |> listm.iter fun n =>
00:00:18 #977 [Verbose] > inl s = complex (n, 0)
00:00:18 #978 [Verbose] > inl result = zeta s
00:00:18 #979 [Verbose] >
00:00:18 #980 [Verbose] > result
00:00:18 #981 [Verbose] > |> re
00:00:18 #982 [Verbose] > |> _assert_eq 0
00:00:18 #983 [Verbose] >
00:00:18 #984 [Verbose] > result
00:00:18 #985 [Verbose] > |> im
00:00:18 #986 [Verbose] > |> _assert_eq 0
00:00:18 #987 [Verbose] > Building /tmp/!dotnet-repl/20240320-1230-2612-1266-144d36645b17/main.spi
00:00:21 #988 [Verbose] >
00:00:21 #989 [Verbose] >
00:00:21 #990 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:21 #991 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:21 #992 [Verbose] > │ ## test_non_trivial_zero___ │
00:00:21 #993 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:21 #994 [Verbose] >
00:00:21 #995 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:21 #996 [Verbose] > // // test
00:00:21 #997 [Verbose] > // // rust=
00:00:21 #998 [Verbose] > // // print_code=false
00:00:21 #999 [Verbose] >
00:00:21 #1000 [Verbose] > types ()
00:00:21 #1001 [Verbose] >
00:00:21 #1002 [Verbose] > run_test (3u8, 2u8) fun zeta, gamma =>
00:00:21 #1003 [Verbose] > ;[[
00:00:21 #1004 [Verbose] > complex (0.5, 14.134725)
00:00:21 #1005 [Verbose] > complex (0.5, 21.022040)
00:00:21 #1006 [Verbose] > complex (0.5, 25.010857)
00:00:21 #1007 [Verbose] > ]]
00:00:21 #1008 [Verbose] > |> fun x => a x : _ i32 _
00:00:21 #1009 [Verbose] > |> am.iter fun x =>
00:00:21 #1010 [Verbose] > inl result = zeta x
00:00:21 #1011 [Verbose] > result |> re |> abs |> _assert_lt 0.001
00:00:21 #1012 [Verbose] > result |> im |> abs |> _assert_lt 0.001
00:00:21 #1013 [Verbose] > Building /tmp/!dotnet-repl/20240320-1230-2978-7804-79e8fea45d60/main.spi
00:00:25 #1014 [Verbose] >
00:00:25 #1015 [Verbose] >
00:00:25 #1016 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:25 #1017 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:25 #1018 [Verbose] > │ ## test_real_part_greater_than_one___ │
00:00:25 #1019 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:25 #1020 [Verbose] >
00:00:25 #1021 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:25 #1022 [Verbose] > // // test
00:00:25 #1023 [Verbose] > // // rust=
00:00:25 #1024 [Verbose] > // // print_code=false
00:00:25 #1025 [Verbose] >
00:00:25 #1026 [Verbose] > types ()
00:00:25 #1027 [Verbose] >
00:00:25 #1028 [Verbose] > run_test (3u8, 2u8) fun zeta, gamma =>
00:00:25 #1029 [Verbose] > inl points = ;[[2; 3; 4; 5; 10; 20; 50]]
00:00:25 #1030 [Verbose] > (a points : _ i32 _)
00:00:25 #1031 [Verbose] > |> am.iter fun point =>
00:00:25 #1032 [Verbose] > inl s = complex (point, 0)
00:00:25 #1033 [Verbose] > inl result = zeta s
00:00:25 #1034 [Verbose] > result |> re |> _assert_gt 0
00:00:25 #1035 [Verbose] > result |> im |> _assert_eq 0
00:00:25 #1036 [Verbose] > Building /tmp/!dotnet-repl/20240320-1230-3338-3849-353a3a6add84/main.spi
00:00:28 #1037 [Verbose] >
00:00:28 #1038 [Verbose] >
00:00:28 #1039 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:28 #1040 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:28 #1041 [Verbose] > │ ## test_zeta_at_1___ │
00:00:28 #1042 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:28 #1043 [Verbose] >
00:00:28 #1044 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:28 #1045 [Verbose] > // // test
00:00:28 #1046 [Verbose] > // // rust=
00:00:28 #1047 [Verbose] > // // print_code=false
00:00:28 #1048 [Verbose] >
00:00:28 #1049 [Verbose] > types ()
00:00:28 #1050 [Verbose] >
00:00:28 #1051 [Verbose] > run_test (5u8, 4u8) fun zeta, gamma =>
00:00:28 #1052 [Verbose] > inl s = complex (1, 0)
00:00:28 #1053 [Verbose] > inl result = zeta s
00:00:28 #1054 [Verbose] > result |> re |> _assert_eq limit.max
00:00:28 #1055 [Verbose] > result |> im |> _assert_eq 0
00:00:29 #1056 [Verbose] > Building /tmp/!dotnet-repl/20240320-1230-3695-9507-9d6de481acbb/main.spi
00:00:32 #1057 [Verbose] >
00:00:32 #1058 [Verbose] >
00:00:32 #1059 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:32 #1060 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:32 #1061 [Verbose] > │ ## test_symmetry_across_real_axis___ │
00:00:32 #1062 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:32 #1063 [Verbose] >
00:00:32 #1064 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:32 #1065 [Verbose] > // // test
00:00:32 #1066 [Verbose] > // // rust=
00:00:32 #1067 [Verbose] > // // print_code=false
00:00:32 #1068 [Verbose] >
00:00:32 #1069 [Verbose] > types ()
00:00:32 #1070 [Verbose] >
00:00:32 #1071 [Verbose] > run_test (6u8, 5u8) fun zeta, gamma =>
00:00:32 #1072 [Verbose] > inl s = complex (2, 10)
00:00:32 #1073 [Verbose] > inl result_positive_im = zeta s
00:00:32 #1074 [Verbose] > inl result_negative_im = complex (s |> re, s |> im |> (~-)) |> zeta
00:00:32 #1075 [Verbose] > inl conj = result_negative_im |> conj
00:00:32 #1076 [Verbose] > result_positive_im |> re |> _assert_eq (conj |> re)
00:00:32 #1077 [Verbose] > result_positive_im |> im |> _assert_eq (conj |> im)
00:00:32 #1078 [Verbose] > Building /tmp/!dotnet-repl/20240320-1230-4050-5042-50afb566e219/main.spi
00:00:36 #1079 [Verbose] >
00:00:36 #1080 [Verbose] >
00:00:36 #1081 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:36 #1082 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:36 #1083 [Verbose] > │ ## test_behavior_near_origin___ │
00:00:36 #1084 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:36 #1085 [Verbose] >
00:00:36 #1086 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:36 #1087 [Verbose] > // // test
00:00:36 #1088 [Verbose] > // // rust=
00:00:36 #1089 [Verbose] > // // print_code=false
00:00:36 #1090 [Verbose] >
00:00:36 #1091 [Verbose] > types ()
00:00:36 #1092 [Verbose] >
00:00:36 #1093 [Verbose] > run_test (5u8, 4u8) fun zeta, gamma =>
00:00:36 #1094 [Verbose] > inl s = complex (0.01, 0.01)
00:00:36 #1095 [Verbose] > inl result = zeta s
00:00:36 #1096 [Verbose] > result |> re |> _assert_lt limit.max
00:00:36 #1097 [Verbose] > result |> im |> _assert_lt limit.max
00:00:36 #1098 [Verbose] > Building /tmp/!dotnet-repl/20240320-1230-4411-1173-1726e35ac985/main.spi
00:00:39 #1099 [Verbose] >
00:00:39 #1100 [Verbose] >
00:00:39 #1101 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:39 #1102 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:39 #1103 [Verbose] > │ ## test_zeta_at_minus_1 │
00:00:39 #1104 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:39 #1105 [Verbose] >
00:00:39 #1106 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:39 #1107 [Verbose] > // // test
00:00:39 #1108 [Verbose] > // // rust=
00:00:39 #1109 [Verbose] > // // print_code=false
00:00:39 #1110 [Verbose] >
00:00:39 #1111 [Verbose] > types ()
00:00:39 #1112 [Verbose] >
00:00:39 #1113 [Verbose] > run_test (5u8, 4u8) fun zeta, gamma =>
00:00:39 #1114 [Verbose] > inl s = complex (-1, 0)
00:00:39 #1115 [Verbose] > inl result = zeta s
00:00:39 #1116 [Verbose] > (result |> re) + 1f64 / 12f64 |> abs |> _assert_lt 0.001
00:00:39 #1117 [Verbose] > result |> im |> _assert_eq 0
00:00:39 #1118 [Verbose] > Building /tmp/!dotnet-repl/20240320-1230-4761-6119-62dac859f303/main.spi
00:00:43 #1119 [Verbose] >
00:00:43 #1120 [Verbose] >
00:00:43 #1121 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:43 #1122 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:43 #1123 [Verbose] > │ ## test_imaginary_axis │
00:00:43 #1124 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:43 #1125 [Verbose] >
00:00:43 #1126 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:43 #1127 [Verbose] > // // test
00:00:43 #1128 [Verbose] > // // rust=
00:00:43 #1129 [Verbose] > // // print_code=false
00:00:43 #1130 [Verbose] >
00:00:43 #1131 [Verbose] > types ()
00:00:43 #1132 [Verbose] >
00:00:43 #1133 [Verbose] > run_test (3u8, 2u8) fun zeta, gamma =>
00:00:43 #1134 [Verbose] > (join a ;[[10; 20; 30; 40; 50; 60; 70; 80; 90; 100]] : _ i32 _)
00:00:43 #1135 [Verbose] > |> am.iter fun s =>
00:00:43 #1136 [Verbose] > inl s = complex (0, s)
00:00:43 #1137 [Verbose] > inl result = zeta s
00:00:43 #1138 [Verbose] > result |> re |> _assert_ne 0
00:00:43 #1139 [Verbose] > result |> im |> _assert_ne 0
00:00:43 #1140 [Verbose] > Building /tmp/!dotnet-repl/20240320-1230-5114-1482-1846a30b4bd7/main.spi
00:00:46 #1141 [Verbose] >
00:00:46 #1142 [Verbose] >
00:00:46 #1143 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:46 #1144 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:46 #1145 [Verbose] > │ ## test_critical_strip │
00:00:46 #1146 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:46 #1147 [Verbose] >
00:00:46 #1148 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:46 #1149 [Verbose] > // // test
00:00:46 #1150 [Verbose] > // // rust=
00:00:46 #1151 [Verbose] > // // print_code=false
00:00:46 #1152 [Verbose] >
00:00:46 #1153 [Verbose] > types ()
00:00:46 #1154 [Verbose] >
00:00:46 #1155 [Verbose] > run_test (3u8, 2u8) fun zeta, gamma =>
00:00:46 #1156 [Verbose] > ;[[
00:00:46 #1157 [Verbose] > complex (0.5, 14.134725)
00:00:46 #1158 [Verbose] > complex (0.75, 20.5)
00:00:46 #1159 [Verbose] > complex (1.25, 30.1)
00:00:46 #1160 [Verbose] > complex (0.25, 40.0)
00:00:46 #1161 [Verbose] > complex (1.0, 50.0)
00:00:46 #1162 [Verbose] > ]]
00:00:46 #1163 [Verbose] > |> fun x => a x : _ i32 _
00:00:46 #1164 [Verbose] > |> am.iter fun s =>
00:00:46 #1165 [Verbose] > inl result = zeta s
00:00:46 #1166 [Verbose] > result |> re |> _assert_ne 0
00:00:46 #1167 [Verbose] > result |> im |> _assert_ne 0
00:00:46 #1168 [Verbose] > Building /tmp/!dotnet-repl/20240320-1230-5478-7812-760432cb8984/main.spi
00:00:50 #1169 [Verbose] >
00:00:50 #1170 [Verbose] >
00:00:50 #1171 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:50 #1172 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:50 #1173 [Verbose] > │ ## test_reflection_formula_for_specific_value │
00:00:50 #1174 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:50 #1175 [Verbose] >
00:00:50 #1176 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:50 #1177 [Verbose] > // // test
00:00:50 #1178 [Verbose] > // // rust=
00:00:50 #1179 [Verbose] > // // print_code=false
00:00:50 #1180 [Verbose] >
00:00:50 #1181 [Verbose] > types ()
00:00:50 #1182 [Verbose] >
00:00:50 #1183 [Verbose] > run_test (3u8, 2u8) fun zeta, gamma =>
00:00:50 #1184 [Verbose] > ;[[
00:00:50 #1185 [Verbose] > complex (3, 4)
00:00:50 #1186 [Verbose] > complex (2.5, -3.5)
00:00:50 #1187 [Verbose] > complex (1.5, 2.5)
00:00:50 #1188 [Verbose] > complex (0.5, 14.134725)
00:00:50 #1189 [Verbose] > ]]
00:00:50 #1190 [Verbose] > |> fun x => a x : _ i32 _
00:00:50 #1191 [Verbose] > |> am.iter fun s =>
00:00:50 #1192 [Verbose] > inl lhs = zeta s
00:00:50 #1193 [Verbose] > inl reflection_coefficient =
00:00:50 #1194 [Verbose] > complex_mult
00:00:50 #1195 [Verbose] > (complex_mult
00:00:50 #1196 [Verbose] > (complex_mult
00:00:50 #1197 [Verbose] > (complex (2, 0) |> powc s)
00:00:50 #1198 [Verbose] > (complex (pi, 0) |> powc (complex_sub s (complex (1,
00:00:50 #1199 [Verbose] > 0))))
00:00:50 #1200 [Verbose] > )
00:00:50 #1201 [Verbose] > (
00:00:50 #1202 [Verbose] > (complex_div
00:00:50 #1203 [Verbose] > (complex_mult
00:00:50 #1204 [Verbose] > (complex (pi, 0))
00:00:50 #1205 [Verbose] > s
00:00:50 #1206 [Verbose] > )
00:00:50 #1207 [Verbose] > (complex (2, 0))
00:00:50 #1208 [Verbose] > )
00:00:50 #1209 [Verbose] > |> complex_sin
00:00:50 #1210 [Verbose] > )
00:00:50 #1211 [Verbose] > )
00:00:50 #1212 [Verbose] > (gamma (complex_sub (complex (1, 0)) s))
00:00:50 #1213 [Verbose] >
00:00:50 #1214 [Verbose] > inl one_minus_s = complex (1 - (s |> re), -(s |> im))
00:00:50 #1215 [Verbose] > inl rhs_calculated = complex_mult reflection_coefficient (zeta
00:00:50 #1216 [Verbose] > one_minus_s)
00:00:50 #1217 [Verbose] >
00:00:50 #1218 [Verbose] > ((lhs |> re) - (rhs_calculated |> re)) |> abs |> _assert_lt 0.01
00:00:50 #1219 [Verbose] > ((lhs |> im) - (rhs_calculated |> im)) |> abs |> _assert_lt 0.01
00:00:50 #1220 [Verbose] > Building /tmp/!dotnet-repl/20240320-1230-5830-3031-3912061fd24c/main.spi
00:00:54 #1221 [Verbose] >
00:00:54 #1222 [Verbose] >
00:00:54 #1223 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:54 #1224 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:54 #1225 [Verbose] > │ ## test_euler_product_formula │
00:00:54 #1226 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:54 #1227 [Verbose] >
00:00:54 #1228 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:54 #1229 [Verbose] > // // test
00:00:54 #1230 [Verbose] > // // rust=
00:00:54 #1231 [Verbose] > // // print_code=false
00:00:54 #1232 [Verbose] >
00:00:54 #1233 [Verbose] > types ()
00:00:54 #1234 [Verbose] >
00:00:54 #1235 [Verbose] > run_test (3u8, 2u8) fun zeta, gamma =>
00:00:54 #1236 [Verbose] > inl s_values = ;[[2; 3; 4; 5]]
00:00:54 #1237 [Verbose] > inl primes = ;[[2; 3; 5; 7; 11; 13; 17; 19; 23; 29; 31; 37; 41; 43; 47; 53;
00:00:54 #1238 [Verbose] > 59; 61; 67; 71]]
00:00:54 #1239 [Verbose] > (a s_values : _ i32 _)
00:00:54 #1240 [Verbose] > |> am.iter fun s_re =>
00:00:54 #1241 [Verbose] > inl s = complex (s_re, 0)
00:00:54 #1242 [Verbose] > inl product =
00:00:54 #1243 [Verbose] > (1, (a primes : _ i32 _))
00:00:54 #1244 [Verbose] > ||> am.fold fun acc x =>
00:00:54 #1245 [Verbose] > acc * 1 / (1 - x ** -s_re)
00:00:54 #1246 [Verbose] >
00:00:54 #1247 [Verbose] > inl result = zeta s
00:00:54 #1248 [Verbose] > ((result |> re) - product) |> abs |> _assert_lt 0.01f64
00:00:54 #1249 [Verbose] > result |> im |> _assert_lt 0.01f64
00:00:54 #1250 [Verbose] > result |> im |> _assert_eq 0f64
00:00:54 #1251 [Verbose] > Building /tmp/!dotnet-repl/20240320-1231-0216-1682-1737d4c39356/main.spi
00:00:57 #1252 [Verbose] >
00:00:58 #1253 [Verbose] > [NbConvertApp] Converting notebook math.dib.ipynb to html
00:00:58 #1254 [Verbose] > /opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:00:58 #1255 [Verbose] > validate(nb)
00:00:58 #1256 [Verbose] > /opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:00:58 #1257 [Verbose] > return _pygments_highlight(
00:00:59 #1258 [Verbose] > [NbConvertApp] Writing 382684 bytes to math.dib.html
00:00:59 #1259 [Debug] executeAsync / exitCode: 0 / output.Length: 91206
00:00:59 #1260 [Debug] main / executeCommand / exitCode: 0
00:00:00 #1 [Debug] writeDibCode / output: Spi / path: math.dib
00:00:00 #2 [Debug] parseDibCode / output: Spi / file: math.dib
Compiling target-lexicon v0.12.14
Compiling once_cell v1.19.0
Compiling bytemuck v1.15.0
Compiling syn v1.0.109
Compiling paste v1.0.14
Compiling safe_arch v0.7.1
Compiling num-rational v0.4.1
Compiling lock_api v0.4.11
Compiling matrixmultiply v0.3.8
Compiling parking_lot_core v0.9.9
Compiling typenum v1.17.0
Compiling wide v0.7.15
Compiling pyo3-build-config v0.21.0-beta.0
Compiling rand v0.8.5
Compiling syn v2.0.53
Compiling approx v0.5.1
Compiling num-complex v0.4.5
Compiling pyo3-ffi v0.21.0-beta.0
Compiling num-integer v0.1.46
Compiling memoffset v0.9.0
Compiling rawpointer v0.2.1
Compiling scopeguard v1.2.0
Compiling portable-atomic v1.6.0
Compiling heck v0.4.1
Compiling simba v0.6.0
Compiling pyo3 v0.21.0-beta.0
Compiling pyo3-macros-backend v0.21.0-beta.0
Compiling nalgebra-macros v0.1.0
Compiling rand_distr v0.4.3
Compiling parking_lot v0.12.1
Compiling unindent v0.2.3
Compiling indoc v2.0.4
Compiling float-cmp v0.9.0
Compiling pyo3-macros v0.21.0-beta.0
Compiling nalgebra v0.29.0
Compiling statrs v0.16.0
Compiling math v0.0.1 (/home/runner/work/polyglot/polyglot/lib/math)
Finished `release` profile [optimized] target(s) in 21.78s
Running unittests math.rs (/home/runner/work/polyglot/polyglot/target/release/deps/math-d0d438d3dede267f)
running 14 tests
test tests::test_behavior_near_origin___ ... ok
test tests::test_high_precision_at_known_value___ ... ok
test tests::test_euler_product_formula ... ok
test tests::test_critical_strip ... ok
test tests::test_real_part_greater_than_one___ ... ok
test tests::test_symmetry_across_real_axis___ ... ok
test tests::test_non_trivial_zero___ ... ok
test tests::test_trivial_zero_at_negative_even___ ... ok
test tests::test_zeta_at_2___ ... ok
test tests::test_zeta_at_2_minus2 ... ok
test tests::test_zeta_at_1___ ... ok
test tests::test_reflection_formula_for_specific_value ... ok
test tests::test_imaginary_axis ... ok
test tests::test_zeta_at_minus_1 ... ok
test result: ok. 14 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.12s
In [ ]:
{ . "$ScriptDir/../apps/chat/build.ps1" } | Invoke-Block
Compiling proc-macro2 v1.0.79 Compiling unicode-ident v1.0.12 Compiling version_check v0.9.4 Compiling equivalent v1.0.1 Compiling hashbrown v0.14.3 Compiling winnow v0.5.40 Compiling proc-macro-error-attr v1.0.4 Compiling proc-macro-error v1.0.4 Compiling quote v1.0.35 Compiling indexmap v2.2.5 Compiling syn v2.0.53 Compiling toml_datetime v0.6.5 Compiling serde v1.0.197 Compiling typenum v1.17.0 Compiling cfg_aliases v0.1.1 Compiling borsh v1.3.1 Compiling toml_edit v0.21.1 Compiling generic-array v0.14.7 Compiling serde_json v1.0.114 Compiling once_cell v1.19.0 Compiling syn v1.0.109 Compiling rustversion v1.0.14 Compiling ident_case v1.0.1 Compiling fnv v1.0.7 Compiling proc-macro-crate v3.1.0 Compiling darling_core v0.20.8 Compiling near-sdk-macros v5.0.0 Compiling data-encoding v2.5.0 Compiling ryu v1.0.17 Compiling wee_alloc v0.4.5 Compiling heck v0.4.1 Compiling itoa v1.0.10 Compiling block-buffer v0.10.4 Compiling crypto-common v0.1.6 Compiling data-encoding-macro-internal v0.1.12 Compiling Inflector v0.11.4 Compiling serde_derive v1.0.197 Compiling syn_derive v0.1.8 Compiling darling_macro v0.20.8 Compiling strum_macros v0.26.2 Compiling borsh-derive v1.3.1 Compiling darling v0.20.8 Compiling cfg-if v0.1.10 Compiling memory_units v0.4.0 Compiling strum v0.26.2 Compiling data-encoding-macro v0.1.14 Compiling digest v0.10.7 Compiling near-sys v0.2.1 Compiling base64 v0.21.7 Compiling bs58 v0.5.0 Compiling cfg-if v1.0.0 Compiling base-x v0.2.11 Compiling multibase v0.9.1 Compiling sha2 v0.10.8 Compiling unsigned-varint v0.8.0 Compiling near-account-id v1.0.0 Compiling near-gas v0.2.5 Compiling near-token v0.2.0 Compiling near-sdk v5.0.0 Compiling chat_contract v0.0.1 (/home/runner/work/polyglot/polyglot/apps/chat/contract) Finished `release` profile [optimized] target(s) in 15.82s Compiling libc v0.2.153 Compiling version_check v0.9.4 Compiling syn v2.0.53 Compiling serde v1.0.197 Compiling syn v1.0.109 Compiling generic-array v0.14.7 Compiling pkg-config v0.3.30 Compiling jobserver v0.1.28 Compiling cc v1.0.90 Compiling typenum v1.17.0 Compiling scopeguard v1.2.0 Compiling lock_api v0.4.11 Compiling parking_lot_core v0.9.9 Compiling parking_lot v0.12.1 Compiling memchr v2.7.1 Compiling cfg-if v1.0.0 Compiling anyhow v1.0.81 Compiling bytes v1.5.0 Compiling subtle v2.5.0 Compiling socket2 v0.5.6 Compiling signal-hook-registry v1.4.1 Compiling mio v0.8.11 Compiling num_cpus v1.16.0 Compiling futures-core v0.3.30 Compiling crypto-common v0.1.6 Compiling block-buffer v0.10.4 Compiling futures-sink v0.3.30 Compiling equivalent v1.0.1 Compiling hashbrown v0.14.3 Compiling digest v0.10.7 Compiling slab v0.4.9 Compiling rustix v0.38.31 Compiling proc-macro-error-attr v1.0.4 Compiling indexmap v2.2.5 Compiling bitflags v2.4.2 Compiling linux-raw-sys v0.4.13 Compiling serde_derive v1.0.197 Compiling tokio-macros v2.2.0 Compiling tracing-attributes v0.1.27 Compiling thiserror-impl v1.0.58 Compiling tokio v1.36.0 Compiling thiserror v1.0.58 Compiling tracing v0.1.40 Compiling futures-channel v0.3.30 Compiling proc-macro-error v1.0.4 Compiling futures-io v0.3.30 Compiling pin-utils v0.1.0 Compiling cpufeatures v0.2.12 Compiling futures-task v0.3.30 Compiling futures-util v0.3.30 Compiling zstd-sys v2.0.9+zstd.1.5.5 Compiling crc32fast v1.4.0 Compiling serde_json v1.0.114 Compiling spin v0.5.2 Compiling either v1.10.0 Compiling lazy_static v1.4.0 Compiling ring v0.17.8 Compiling rand_chacha v0.3.1 Compiling percent-encoding v2.3.1 Compiling rand v0.8.5 Compiling sha2 v0.10.8 Compiling num-traits v0.2.18 Compiling winnow v0.5.40 Compiling log v0.4.21 Compiling toml_datetime v0.6.5 Compiling home v0.5.9 Compiling byteorder v1.5.0 Compiling itertools v0.10.5 Compiling cfg_aliases v0.1.1 Compiling zstd-safe v5.0.2+zstd.1.5.2 Compiling base64 v0.21.7 Compiling borsh v1.3.1 Compiling syn_derive v0.1.8 Compiling toml_edit v0.21.1 Compiling prost-derive v0.9.0 Compiling tokio-util v0.7.10 Compiling pin-project-internal v1.1.5 Compiling bzip2-sys v0.1.11+1.0.8 Compiling proc-macro-crate v3.1.0 Compiling semver v1.0.22 Compiling crossbeam-utils v0.8.19 Compiling ident_case v1.0.1 Compiling fnv v1.0.7 Compiling strsim v0.10.0 Compiling pin-project v1.1.5 Compiling http v0.2.12 Compiling darling_core v0.20.8 Compiling aho-corasick v1.1.2 Compiling borsh-derive v1.3.1 Compiling rustversion v1.0.14 Compiling httparse v1.8.0 Compiling darling_macro v0.20.8 Compiling regex-automata v0.4.6 Compiling which v4.4.2 Compiling indexmap v1.9.3 Compiling num-bigint v0.3.3 Compiling async-trait v0.1.78 Compiling crunchy v0.2.2 Compiling regex-syntax v0.8.2 Compiling try-lock v0.2.5 Compiling rustls v0.22.2 Compiling getrandom v0.1.16 Compiling tower-service v0.3.2 Compiling want v0.3.1 Compiling regex v1.10.3 Compiling prost-build v0.9.0 Compiling rustc_version v0.4.0 Compiling crossbeam-channel v0.5.12 Compiling darling v0.20.8 Compiling http-body v0.4.6 Compiling h2 v0.3.25 Compiling prost v0.9.0 Compiling num-integer v0.1.46 Compiling hex v0.4.3 Compiling num-rational v0.3.2 Compiling vcpkg v0.2.15 Compiling hashbrown v0.12.3 Compiling unicode-segmentation v1.11.0 Compiling platforms v3.3.0 Compiling powerfmt v0.2.0 Compiling convert_case v0.4.0 Compiling httpdate v1.0.3 Compiling fixedbitset v0.4.2 Compiling bs58 v0.4.0 Compiling fastrand v2.0.1 Compiling petgraph v0.6.4 Compiling tempfile v3.10.1 Compiling derive_more v0.99.17 Compiling curve25519-dalek v4.1.2 Compiling deranged v0.3.11 Compiling heck v0.3.3 Compiling hyper v0.14.28 Compiling openssl-sys v0.9.101 Compiling prost-types v0.9.0 Compiling strum_macros v0.24.3 Compiling serde_with_macros v3.7.0 Compiling near-account-id v1.0.0 Compiling tokio-stream v0.1.15 Compiling derive_arbitrary v1.3.2 Compiling enum-map-derive v0.17.0 Compiling secp256k1-sys v0.8.1 Compiling time-core v0.1.2 Compiling regex-syntax v0.6.29 Compiling num-conv v0.1.0 Compiling static_assertions v1.1.0 Compiling multimap v0.8.3 Compiling time v0.3.34 Compiling arbitrary v1.3.2 Compiling enum-map v2.7.3 Compiling rand_core v0.5.1 Compiling regex-automata v0.1.10 Compiling serde_with v3.7.0 Compiling strum v0.24.1 Compiling futures-executor v0.3.30 Compiling curve25519-dalek-derive v0.1.1 Compiling serde_repr v0.1.18 Compiling fs2 v0.4.3 Compiling tinyvec_macros v0.1.1 Compiling utf8parse v0.2.1 Compiling adler v1.0.2 Compiling signature v2.2.0 Compiling ed25519 v2.2.3 Compiling tinyvec v1.6.0 Compiling miniz_oxide v0.7.2 Compiling anstyle-parse v0.2.3 Compiling near-primitives-core v0.20.1 Compiling opentelemetry v0.17.0 Compiling matchers v0.1.0 Compiling rand_chacha v0.2.2 Compiling tonic-build v0.6.2 Compiling fixed-hash v0.7.0 Compiling uint v0.9.5 Compiling sharded-slab v0.1.7 Compiling tokio-io-timeout v1.2.0 Compiling async-stream-impl v0.3.5 Compiling crypto-mac v0.8.0 Compiling getrandom v0.2.12 Compiling cipher v0.2.5 Compiling digest v0.9.0 Compiling json_comments v0.2.2 Compiling colorchoice v1.0.0 Compiling protobuf v2.28.0 Compiling rustls-pki-types v1.3.1 Compiling anstyle-query v1.0.2 Compiling anstyle v1.0.6 Compiling opaque-debug v0.3.1 Compiling tower-layer v0.3.2 Compiling untrusted v0.9.0 Compiling spin v0.9.8 Compiling tower v0.4.13 Compiling async-stream v0.3.5 Compiling anstream v0.6.13 Compiling blake2 v0.9.2 Compiling near-config-utils v0.20.1 Compiling tracing-subscriber v0.3.18 Compiling c2-chacha v0.3.3 Compiling hyper-timeout v0.4.1 Compiling secp256k1 v0.27.0 Compiling primitive-types v0.10.1 Compiling opentelemetry-otlp v0.10.0 Compiling rand v0.7.3 Compiling flate2 v1.0.28 Compiling ed25519-dalek v2.1.1 Compiling unicode-normalization v0.1.23 Compiling tracing-futures v0.2.5 Compiling inout v0.1.3 Compiling form_urlencoded v1.2.1 Compiling tokio-util v0.6.10 Compiling memoffset v0.8.0 Compiling unicode-bidi v0.3.15 Compiling strsim v0.11.0 Compiling unsafe-libyaml v0.2.11 Compiling siphasher v0.3.11 Compiling rand_core v0.6.4 Compiling clap_lex v0.7.0 Compiling near-stdx v0.20.1 Compiling prometheus v0.13.3 Compiling heck v0.5.0 Compiling base64 v0.13.1 Compiling openssl v0.10.64 Compiling foreign-types-shared v0.1.1 Compiling base64ct v1.6.0 Compiling idna v0.5.0 Compiling password-hash v0.4.2 Compiling foreign-types v0.3.2 Compiling tonic v0.6.2 Compiling clap_derive v4.5.3 Compiling near-crypto v0.20.1 Compiling serde_yaml v0.9.33 Compiling clap_builder v4.5.2 Compiling cipher v0.4.4 Compiling rustls-webpki v0.102.2 Compiling hmac v0.12.1 Compiling futures v0.3.30 Compiling actix-rt v2.9.0 Compiling actix_derive v0.6.1 Compiling actix-macros v0.2.4 Compiling openssl-macros v0.1.1 Compiling tracing-log v0.1.4 Compiling ahash v0.7.8 Compiling reed-solomon-erasure v4.0.2 Compiling rustc-hex v2.1.0 Compiling zeroize v1.7.0 Compiling native-tls v0.2.11 Compiling keccak v0.1.5 Compiling assert_matches v1.5.0 Compiling near-sandbox-utils v0.7.0 Compiling near-parameters v0.20.1 Compiling sha3 v0.10.8 Compiling zeropool-bn v0.5.11 Compiling chrono v0.4.35 Compiling tracing-opentelemetry v0.17.4 Compiling actix v0.13.3 Compiling pbkdf2 v0.11.0 Compiling zstd v0.11.2+zstd.1.5.2 Compiling aes v0.8.4 Compiling url v2.5.0 Compiling clap v4.5.3 Compiling bzip2 v0.4.4 Compiling tracing-appender v0.2.3 Compiling webpki-roots v0.26.1 Compiling opentelemetry-semantic-conventions v0.9.0 Compiling near-fmt v0.20.1 Compiling sha1 v0.10.6 Compiling near-rpc-error-core v0.20.1 Compiling toml v0.5.11 Compiling xattr v1.3.1 Compiling ripemd v0.1.3 Compiling serde_derive_internals v0.26.0 Compiling filetime v0.2.23 Compiling dirs-sys-next v0.1.2 Compiling camino v1.1.6 Compiling uuid v0.8.2 Compiling openssl-probe v0.1.5 Compiling schemars v0.8.16 Compiling prefix-sum-vec v0.1.2 Compiling radium v0.7.0 Compiling constant_time_eq v0.1.5 Compiling zip v0.6.6 Compiling ureq v2.9.6 Compiling near-vm-runner v0.20.1 Compiling dirs-next v2.0.0 Compiling tar v0.4.40 Compiling schemars_derive v0.8.16 Compiling proc-macro-crate v0.1.5 Compiling near-rpc-error-macro v0.20.1 Compiling near-o11y v0.20.1 Compiling phf_shared v0.10.0 Compiling bytesize v1.3.0 Compiling smart-default v0.6.0 Compiling scroll_derive v0.11.1 Compiling borsh-schema-derive-internal v0.9.3 Compiling borsh-derive-internal v0.9.3 Compiling new_debug_unreachable v1.0.6 Compiling precomputed-hash v0.1.1 Compiling is_executable v0.1.2 Compiling easy-ext v0.2.9 Compiling tap v1.0.1 Compiling iana-time-zone v0.1.60 Compiling stable_deref_trait v1.2.0 Compiling pin-project-lite v0.2.13 Compiling dyn-clone v1.0.17 Compiling fallible-iterator v0.2.0 Compiling binary-install v0.2.0 Compiling near-primitives v0.20.1 Compiling brownstone v1.1.0 Compiling wyz v0.5.1 Compiling string_cache v0.8.7 Compiling nom v7.1.3 Compiling scroll v0.11.0 Compiling borsh-derive v0.9.3 Compiling hashbrown v0.11.2 Compiling tokio-native-tls v0.3.1 Compiling debugid v0.7.3 Compiling cargo-platform v0.1.7 Compiling atty v0.2.14 Compiling memmap2 v0.5.10 Compiling xml-rs v0.8.19 Compiling indent_write v2.2.0 Compiling plain v0.2.3 Compiling os_str_bytes v6.6.1 Compiling joinery v2.1.0 Compiling funty v2.0.0 Compiling scroll v0.10.2 Compiling termcolor v1.4.1 Compiling bitvec v1.0.1 Compiling pdb v0.7.0 Compiling elementtree v0.7.0 Compiling nom-supreme v0.6.0 Compiling clap_lex v0.2.4 Compiling goblin v0.5.4 Compiling symbolic-common v8.8.0 Compiling near-chain-configs v0.20.1 Compiling hyper-tls v0.5.0 Compiling borsh v0.9.3 Compiling gimli v0.26.2 Compiling serde_urlencoded v0.7.1 Compiling zip v0.5.13 Compiling clap_derive v3.2.25 Compiling rustls-pemfile v1.0.4 Compiling encoding_rs v0.8.33 Compiling mime v0.3.17 Compiling sync_wrapper v0.1.2 Compiling wasmparser v0.83.0 Compiling humantime v2.1.0 Compiling ipnet v2.9.0 Compiling dmsort v1.0.2 Compiling bitflags v1.3.2 Compiling textwrap v0.16.1 Compiling lazycell v1.3.0 Compiling symbolic-debuginfo v8.8.0 Compiling clap v3.2.25 Compiling reqwest v0.11.26 Compiling env_logger v0.9.3 Compiling near-abi v0.3.0 Compiling near-workspaces v0.10.0 Compiling near-jsonrpc-primitives v0.20.1 Compiling cargo_metadata v0.14.2 Compiling treediff v4.0.3 Compiling colored v2.1.0 Compiling libloading v0.7.4 Compiling cargo-near v0.3.1 Compiling json-patch v1.2.0 Compiling near-jsonrpc-client v0.8.0 Compiling cargo_metadata v0.18.1 Compiling near-gas v0.2.5 Compiling tokio-retry v0.3.0 Compiling near-token v0.2.0 Compiling bs58 v0.5.0 Compiling chat_contract_tests v0.0.1 (/home/runner/work/polyglot/polyglot/apps/chat/contract/tests) Finished `release` profile [optimized] target(s) in 2m 35s Running `/home/runner/work/polyglot/polyglot/target/release/chat_contract_tests` Installed near-sandbox into /home/runner/work/polyglot/polyglot/target/release/build/near-sandbox-utils-845978b5c9afa1dc/out/near-sandbox Updated the logging layer according to `log_config.json` new: ExecutionFinalResult { total_gas_burnt: NearGas { inner: 5283288195090, }, transaction: ExecutionOutcome { transaction_hash: 4T5Zpn744L7jghgqYRQzfxw1qrdUY7PRPXd2Ny9axAx9, block_hash: E9XzH7cfkZyjFw1FpCFQt3h4DKJ3tpKaK9oCkg8duNYz, logs: [], receipt_ids: [ HMjuZhPHJWwC9eVRvPskBCGyoWGk1WmvVwaZMC5tovo1, ], gas_burnt: NearGas { inner: 2427927707802, }, tokens_burnt: NearToken { inner: 242792770780200000000, }, executor_id: AccountId( "dev-20240320123424-40193006979669", ), status: SuccessReceiptId(HMjuZhPHJWwC9eVRvPskBCGyoWGk1WmvVwaZMC5tovo1), }, receipts: [ ExecutionOutcome { transaction_hash: HMjuZhPHJWwC9eVRvPskBCGyoWGk1WmvVwaZMC5tovo1, block_hash: E9XzH7cfkZyjFw1FpCFQt3h4DKJ3tpKaK9oCkg8duNYz, logs: [], receipt_ids: [ 2vQXYeAQ2WQwBdfMQrPYoo32tWCr7bvpJuzqR338UBWd, ], gas_burnt: NearGas { inner: 2632177924788, }, tokens_burnt: NearToken { inner: 263217792478800000000, }, executor_id: AccountId( "dev-20240320123424-40193006979669", ), status: SuccessValue(''), }, ExecutionOutcome { transaction_hash: 2vQXYeAQ2WQwBdfMQrPYoo32tWCr7bvpJuzqR338UBWd, block_hash: 2KCZ66wxZZmnSpbHZsKyQzvigb3mDLSq9KU5XtPsKnye, logs: [], receipt_ids: [], gas_burnt: NearGas { inner: 223182562500, }, tokens_burnt: NearToken { inner: 0, }, executor_id: AccountId( "dev-20240320123424-40193006979669", ), status: SuccessValue(''), }, ], status: SuccessValue(''), } total_gas_burnt_usd: 0.00352923651432012 outcome (success: true): outcome_gas_burnt_usd: 0.001621855708811736 outcome_tokens_burnt_usd: 0.0 outcome (success: true): outcome_gas_burnt_usd: 0.0017582948537583837 outcome_tokens_burnt_usd: 0.0 outcome (success: true): outcome_gas_burnt_usd: 0.00014908595175 outcome_tokens_burnt_usd: 0.0 claim_alias(contract, ''): ExecutionFinalResult { total_gas_burnt: NearGas { inner: 5288027146888, }, transaction: ExecutionOutcome { transaction_hash: DNmLsKgVkFJJ84SD969YFchdkhq9MiLTYjHjHi1TAw5z, block_hash: 5hDBcpkkzYkf8vnozgtQNorgxV4qq9HgAshFEUKRuX7N, logs: [], receipt_ids: [ Fn9vguo8Ho1f7RmLjGxxAwSjqrxmJ8N69ksZyxCZW4aN, ], gas_burnt: NearGas { inner: 2427972426482, }, tokens_burnt: NearToken { inner: 242797242648200000000, }, executor_id: AccountId( "dev-20240320123424-40193006979669", ), status: SuccessReceiptId(Fn9vguo8Ho1f7RmLjGxxAwSjqrxmJ8N69ksZyxCZW4aN), }, receipts: [ ExecutionOutcome { transaction_hash: Fn9vguo8Ho1f7RmLjGxxAwSjqrxmJ8N69ksZyxCZW4aN, block_hash: 5hDBcpkkzYkf8vnozgtQNorgxV4qq9HgAshFEUKRuX7N, logs: [ "claim_alias / alias: \"\" / account_id: AccountId(\n \"dev-20240320123424-40193006979669\",\n) / timestamp: 1710938067308789729", ], receipt_ids: [ 2GicSkEDuCShUnLmvhhQE5mteNsX7TnNxtv4Qnj2RCCQ, ], gas_burnt: NearGas { inner: 2636872157906, }, tokens_burnt: NearToken { inner: 263687215790600000000, }, executor_id: AccountId( "dev-20240320123424-40193006979669", ), status: Failure(ActionError(ActionError { index: Some(0), kind: FunctionCallError(ExecutionError("Smart contract panicked: Invalid alias")) })), }, ExecutionOutcome { transaction_hash: 2GicSkEDuCShUnLmvhhQE5mteNsX7TnNxtv4Qnj2RCCQ, block_hash: 66LDZbHZ2fa7SgajcHMyME9sQryGuXQtrSfbR6VZpri5, logs: [], receipt_ids: [], gas_burnt: NearGas { inner: 223182562500, }, tokens_burnt: NearToken { inner: 0, }, executor_id: AccountId( "dev-20240320123424-40193006979669", ), status: SuccessValue(''), }, ], status: Failure(ActionError(ActionError { index: Some(0), kind: FunctionCallError(ExecutionError("Smart contract panicked: Invalid alias")) })), } total_gas_burnt_usd: 0.003532402134121184 outcome (success: true): outcome_gas_burnt_usd: 0.001621885580889976 outcome_tokens_burnt_usd: 0.0 outcome (success: false): outcome_gas_burnt_usd: 0.0017614306014812077 outcome_tokens_burnt_usd: 0.0 outcome (success: true): outcome_gas_burnt_usd: 0.00014908595175 outcome_tokens_burnt_usd: 0.0 dev_create_account(account1): Account { id: AccountId( "dev-20240320123427-71924890141856", ), } generate_cid_borsh(account1): ViewResultDetails { result: [ 59, 0, 0, 0, 98, 97, 102, 107, 114, 101, 105, 104, 100, 119, 100, 99, 101, 102, 103, 104, 52, 100, 113, 107, 106, 118, 54, 55, 117, 122, 99, 109, 119, 55, 111, 106, 101, 101, 54, 120, 101, 100, 122, 100, 101, 116, 111, 106, 117, 122, 106, 101, 118, 116, 101, 110, 120, 113, 117, 118, 121, 107, 117, ], logs: [], } claim_alias(account1, alias1): ExecutionFinalResult { total_gas_burnt: NearGas { inner: 5710091120701, }, transaction: ExecutionOutcome { transaction_hash: HZCdSe3fEn7PAmDo4fVAbBZo7zRSkJRVbyLgdgqmXWW3, block_hash: CZnUShGjcWCbXi277pzr36TY4rzeqbppaKHfz2SBRqKL, logs: [], receipt_ids: [ DureRY3784Cvtnb5LWdhQTtqcupHp1RQQeVBNHoBPWHM, ], gas_burnt: NearGas { inner: 2427985842086, }, tokens_burnt: NearToken { inner: 242798584208600000000, }, executor_id: AccountId( "dev-20240320123427-71924890141856", ), status: SuccessReceiptId(DureRY3784Cvtnb5LWdhQTtqcupHp1RQQeVBNHoBPWHM), }, receipts: [ ExecutionOutcome { transaction_hash: DureRY3784Cvtnb5LWdhQTtqcupHp1RQQeVBNHoBPWHM, block_hash: J2T2muDpdR7F9wrv4kmTigQmKjUeFJmTKwBEuqGqdR9A, logs: [ "claim_alias / alias: \"alias1\" / account_id: AccountId(\n \"dev-20240320123427-71924890141856\",\n) / timestamp: 1710938069531809381", ], receipt_ids: [ 3xV6m2z8ZPEnKmzZqPZNfUS8fWDMWtnfdGDWMUPFJQBo, ], gas_burnt: NearGas { inner: 3058922716115, }, tokens_burnt: NearToken { inner: 305892271611500000000, }, executor_id: AccountId( "dev-20240320123424-40193006979669", ), status: SuccessValue(''), }, ExecutionOutcome { transaction_hash: 3xV6m2z8ZPEnKmzZqPZNfUS8fWDMWtnfdGDWMUPFJQBo, block_hash: 5xuoVUwFmnMpQHbpH5BN5BWPWTV5RZ1oVeSsuBLZPPd2, logs: [], receipt_ids: [], gas_burnt: NearGas { inner: 223182562500, }, tokens_burnt: NearToken { inner: 0, }, executor_id: AccountId( "dev-20240320123427-71924890141856", ), status: SuccessValue(''), }, ], status: SuccessValue(''), } total_gas_burnt_usd: 0.0038143408686282677 outcome (success: true): outcome_gas_burnt_usd: 0.0016218945425134478 outcome_tokens_burnt_usd: 0.0 outcome (success: true): outcome_gas_burnt_usd: 0.0020433603743648197 outcome_tokens_burnt_usd: 0.0 outcome (success: true): outcome_gas_burnt_usd: 0.00014908595175 outcome_tokens_burnt_usd: 0.0 claim_alias(account1, alias1): ExecutionFinalResult { total_gas_burnt: NearGas { inner: 5534318630290, }, transaction: ExecutionOutcome { transaction_hash: 4eKYWqiLYH2jvykZEkfaEHNVkSYxXgj1AjWjdedzuQBc, block_hash: 4D2xyomgPEWkrnpAY3dEhct9ngHgzwQPEaEgWytR8QfP, logs: [], receipt_ids: [ F7arkRH4vfnxRzhkKPnYpSd9FpCx5RMgsnj9XgigtwGk, ], gas_burnt: NearGas { inner: 2427985842086, }, tokens_burnt: NearToken { inner: 242798584208600000000, }, executor_id: AccountId( "dev-20240320123427-71924890141856", ), status: SuccessReceiptId(F7arkRH4vfnxRzhkKPnYpSd9FpCx5RMgsnj9XgigtwGk), }, receipts: [ ExecutionOutcome { transaction_hash: F7arkRH4vfnxRzhkKPnYpSd9FpCx5RMgsnj9XgigtwGk, block_hash: GsvA6RwHjyW7RxYyCJXq4S57nYATQv9NAPGGRD8yA8dm, logs: [ "claim_alias / alias: \"alias1\" / account_id: AccountId(\n \"dev-20240320123427-71924890141856\",\n) / timestamp: 1710938070541914498", "Alias already claimed", ], receipt_ids: [ 6gVUEshtw6HMNzD6pco6GCWRWm7d8EppUL95JqHgeQrH, ], gas_burnt: NearGas { inner: 2883150225704, }, tokens_burnt: NearToken { inner: 288315022570400000000, }, executor_id: AccountId( "dev-20240320123424-40193006979669", ), status: SuccessValue(''), }, ExecutionOutcome { transaction_hash: 6gVUEshtw6HMNzD6pco6GCWRWm7d8EppUL95JqHgeQrH, block_hash: XbseKqxgebwMTW5N4vAnsFT8RDYQYGAn97mdG6GTzoR, logs: [], receipt_ids: [], gas_burnt: NearGas { inner: 223182562500, }, tokens_burnt: NearToken { inner: 0, }, executor_id: AccountId( "dev-20240320123427-71924890141856", ), status: SuccessValue(''), }, ], status: SuccessValue(''), } total_gas_burnt_usd: 0.00369692484503372 outcome (success: true): outcome_gas_burnt_usd: 0.0016218945425134478 outcome_tokens_burnt_usd: 0.0 outcome (success: true): outcome_gas_burnt_usd: 0.001925944350770272 outcome_tokens_burnt_usd: 0.0 outcome (success: true): outcome_gas_burnt_usd: 0.00014908595175 outcome_tokens_burnt_usd: 0.0 get_account_info(account1): Some( ( "alias1", ( 1710938069531809381, 0, ), ), ) get_alias_map(account1, alias1): Some( { AccountId( "dev-20240320123427-71924890141856", ): ( 1710938069531809381, 0, ), }, ) dev_create_account(account2): Account { id: AccountId( "dev-20240320123430-41130212192848", ), } claim_alias(alias2): ExecutionFinalResult { total_gas_burnt: NearGas { inner: 5797440900331, }, transaction: ExecutionOutcome { transaction_hash: AqcXZmppoqrkUM11vPGK5c3UtSvyM3CYHE67bPxbMAsW, block_hash: 6A5S27SnR24a6AsdGdhMhBmErFyAZx7KJd7FXRqA2pEm, logs: [], receipt_ids: [ 6BPfLjKKvUG5ygkf3Y5bb1HzAYjU8dXKSN5VpGqxBk4s, ], gas_burnt: NearGas { inner: 2427985842086, }, tokens_burnt: NearToken { inner: 242798584208600000000, }, executor_id: AccountId( "dev-20240320123430-41130212192848", ), status: SuccessReceiptId(6BPfLjKKvUG5ygkf3Y5bb1HzAYjU8dXKSN5VpGqxBk4s), }, receipts: [ ExecutionOutcome { transaction_hash: 6BPfLjKKvUG5ygkf3Y5bb1HzAYjU8dXKSN5VpGqxBk4s, block_hash: Ge2NxMipnLjoYarAUzY1ikiHzahZ8KT6WNXNhmkFU6iH, logs: [ "claim_alias / alias: \"alias2\" / account_id: AccountId(\n \"dev-20240320123430-41130212192848\",\n) / timestamp: 1710938072562972884", ], receipt_ids: [ 4JjcMrzQw7uyxPj733Cg2MeX7hzsGhmULSTWHAcsAQhc, ], gas_burnt: NearGas { inner: 3146272495745, }, tokens_burnt: NearToken { inner: 314627249574500000000, }, executor_id: AccountId( "dev-20240320123424-40193006979669", ), status: SuccessValue(''), }, ExecutionOutcome { transaction_hash: 4JjcMrzQw7uyxPj733Cg2MeX7hzsGhmULSTWHAcsAQhc, block_hash: Gbmoy6q7GvW7wM8BAVfhxkWgyJqtKM7z2QEMfUfdjogb, logs: [], receipt_ids: [], gas_burnt: NearGas { inner: 223182562500, }, tokens_burnt: NearToken { inner: 0, }, executor_id: AccountId( "dev-20240320123430-41130212192848", ), status: SuccessValue(''), }, ], status: SuccessValue(''), } total_gas_burnt_usd: 0.003872690521421108 outcome (success: true): outcome_gas_burnt_usd: 0.0016218945425134478 outcome_tokens_burnt_usd: 0.0 outcome (success: true): outcome_gas_burnt_usd: 0.00210171002715766 outcome_tokens_burnt_usd: 0.0 outcome (success: true): outcome_gas_burnt_usd: 0.00014908595175 outcome_tokens_burnt_usd: 0.0 get_account_info(account2): Some( ( "alias2", ( 1710938072562972884, 0, ), ), ) get_alias_map_borsh(alias2): Some( { AccountId( "dev-20240320123430-41130212192848", ): ( 1710938072562972884, 0, ), }, ) claim_alias(account2, alias1): ExecutionFinalResult { total_gas_burnt: NearGas { inner: 6101680502854, }, transaction: ExecutionOutcome { transaction_hash: HWPZTk4JQUKt7HARDheSHTMj24ph23A6qsDZ4axmxgMV, block_hash: Ff67R1ikaNFo7EgZwWaEz4Q4KaioDaY5QWbhpi8pSXk3, logs: [], receipt_ids: [ 5sxMMBjUiVZj2jgx72kWkk7ahVu1i74wUmrb2fVMbFig, ], gas_burnt: NearGas { inner: 2427985842086, }, tokens_burnt: NearToken { inner: 242798584208600000000, }, executor_id: AccountId( "dev-20240320123430-41130212192848", ), status: SuccessReceiptId(5sxMMBjUiVZj2jgx72kWkk7ahVu1i74wUmrb2fVMbFig), }, receipts: [ ExecutionOutcome { transaction_hash: 5sxMMBjUiVZj2jgx72kWkk7ahVu1i74wUmrb2fVMbFig, block_hash: FyT1URpLr2JLEYA7A67xgnvikPG1v5D8PVdDV5jgcHqM, logs: [ "claim_alias / alias: \"alias1\" / account_id: AccountId(\n \"dev-20240320123430-41130212192848\",\n) / timestamp: 1710938073573268543", ], receipt_ids: [ FwPwCaYvGGBSY8XFqCCbcnaE9gAhk9Kywbs5eTeZytMZ, ], gas_burnt: NearGas { inner: 3450512098268, }, tokens_burnt: NearToken { inner: 345051209826800000000, }, executor_id: AccountId( "dev-20240320123424-40193006979669", ), status: SuccessValue(''), }, ExecutionOutcome { transaction_hash: FwPwCaYvGGBSY8XFqCCbcnaE9gAhk9Kywbs5eTeZytMZ, block_hash: 2rmr2NYCbPujSshSESB3qpLkUPdLxhLQi8BDaz26yc8J, logs: [], receipt_ids: [], gas_burnt: NearGas { inner: 223182562500, }, tokens_burnt: NearToken { inner: 0, }, executor_id: AccountId( "dev-20240320123430-41130212192848", ), status: SuccessValue(''), }, ], status: SuccessValue(''), } total_gas_burnt_usd: 0.004075922575906472 outcome (success: true): outcome_gas_burnt_usd: 0.0016218945425134478 outcome_tokens_burnt_usd: 0.0 outcome (success: true): outcome_gas_burnt_usd: 0.002304942081643024 outcome_tokens_burnt_usd: 0.0 outcome (success: true): outcome_gas_burnt_usd: 0.00014908595175 outcome_tokens_burnt_usd: 0.0 get_account_info(account2): Some( ( "alias1", ( 1710938073573268543, 1, ), ), ) get_alias_map(account2, alias1): Some( { AccountId( "dev-20240320123427-71924890141856", ): ( 1710938069531809381, 0, ), AccountId( "dev-20240320123430-41130212192848", ): ( 1710938073573268543, 1, ), }, ) get_alias_map(account2, alias2): Some( {}, ) claim_alias(account1, alias2): ExecutionFinalResult { total_gas_burnt: NearGas { inner: 6096351512242, }, transaction: ExecutionOutcome { transaction_hash: 33P8r8qVuCLCmuAqzpEZaHa5uE2kkLqgP5v5fZcySvef, block_hash: 34nXy55uG9N8PhbnPTf2MaQL4ns7vXcKzYv7XmKkbyt9, logs: [], receipt_ids: [ 8EsZMTy8gwkKBxB4HapdWv8TANXdgeGpuwX4GfKucTgs, ], gas_burnt: NearGas { inner: 2427985842086, }, tokens_burnt: NearToken { inner: 242798584208600000000, }, executor_id: AccountId( "dev-20240320123427-71924890141856", ), status: SuccessReceiptId(8EsZMTy8gwkKBxB4HapdWv8TANXdgeGpuwX4GfKucTgs), }, receipts: [ ExecutionOutcome { transaction_hash: 8EsZMTy8gwkKBxB4HapdWv8TANXdgeGpuwX4GfKucTgs, block_hash: 75XqNDxzaFZ3kA1b2yVM2dMWDVQZhS5WJ5nw1E73NEgn, logs: [ "claim_alias / alias: \"alias2\" / account_id: AccountId(\n \"dev-20240320123427-71924890141856\",\n) / timestamp: 1710938074583509046", ], receipt_ids: [ 57gkvqYANTxnWXzc9Mdwf2akYKoPESEz1WaTsqDLZ9KU, ], gas_burnt: NearGas { inner: 3445183107656, }, tokens_burnt: NearToken { inner: 344518310765600000000, }, executor_id: AccountId( "dev-20240320123424-40193006979669", ), status: SuccessValue(''), }, ExecutionOutcome { transaction_hash: 57gkvqYANTxnWXzc9Mdwf2akYKoPESEz1WaTsqDLZ9KU, block_hash: Cy1tovZF1sejQs4UgRdwrMCHcjgcZqqT9n4PiRm8AywZ, logs: [], receipt_ids: [], gas_burnt: NearGas { inner: 223182562500, }, tokens_burnt: NearToken { inner: 0, }, executor_id: AccountId( "dev-20240320123427-71924890141856", ), status: SuccessValue(''), }, ], status: SuccessValue(''), } total_gas_burnt_usd: 0.004072362810177656 outcome (success: true): outcome_gas_burnt_usd: 0.0016218945425134478 outcome_tokens_burnt_usd: 0.0 outcome (success: true): outcome_gas_burnt_usd: 0.002301382315914208 outcome_tokens_burnt_usd: 0.0 outcome (success: true): outcome_gas_burnt_usd: 0.00014908595175 outcome_tokens_burnt_usd: 0.0 get_account_info(account1): Some( ( "alias2", ( 1710938074583509046, 0, ), ), ) get_alias_map(account1, alias2): Some( { AccountId( "dev-20240320123427-71924890141856", ): ( 1710938074583509046, 0, ), }, ) get_alias_map(account1, alias1): Some( { AccountId( "dev-20240320123430-41130212192848", ): ( 1710938073573268543, 1, ), }, ) claim_alias(account1, alias1): ExecutionFinalResult { total_gas_burnt: NearGas { inner: 6101680502854, }, transaction: ExecutionOutcome { transaction_hash: FUwEL5P7NYudUBcNV9GFYifsFH7wcWXtNbN2rtvq9hjt, block_hash: B6PCLZWZ8Wh8zCvETZ2HTz8BPG5fLfq7bHZ6jyChoyPZ, logs: [], receipt_ids: [ 9aC2hk99pH1gJTR8aRCxfsFfbQ69zhWRa3iPWXhefvug, ], gas_burnt: NearGas { inner: 2427985842086, }, tokens_burnt: NearToken { inner: 242798584208600000000, }, executor_id: AccountId( "dev-20240320123427-71924890141856", ), status: SuccessReceiptId(9aC2hk99pH1gJTR8aRCxfsFfbQ69zhWRa3iPWXhefvug), }, receipts: [ ExecutionOutcome { transaction_hash: 9aC2hk99pH1gJTR8aRCxfsFfbQ69zhWRa3iPWXhefvug, block_hash: EJAv9PHgDvG6GPSM19UoTEeLoL1QuJF4hsxVy3mef9np, logs: [ "claim_alias / alias: \"alias1\" / account_id: AccountId(\n \"dev-20240320123427-71924890141856\",\n) / timestamp: 1710938075594122240", ], receipt_ids: [ FikhNHJJ1J6k7dSnyQZnDnZgczfSjngM9npKqiLHHAt, ], gas_burnt: NearGas { inner: 3450512098268, }, tokens_burnt: NearToken { inner: 345051209826800000000, }, executor_id: AccountId( "dev-20240320123424-40193006979669", ), status: SuccessValue(''), }, ExecutionOutcome { transaction_hash: FikhNHJJ1J6k7dSnyQZnDnZgczfSjngM9npKqiLHHAt, block_hash: GSGMqEiYSB3MyL2GJspz9BjbbtspMNxpMd4Q4HN8w2k8, logs: [], receipt_ids: [], gas_burnt: NearGas { inner: 223182562500, }, tokens_burnt: NearToken { inner: 0, }, executor_id: AccountId( "dev-20240320123427-71924890141856", ), status: SuccessValue(''), }, ], status: SuccessValue(''), } total_gas_burnt_usd: 0.004075922575906472 outcome (success: true): outcome_gas_burnt_usd: 0.0016218945425134478 outcome_tokens_burnt_usd: 0.0 outcome (success: true): outcome_gas_burnt_usd: 0.002304942081643024 outcome_tokens_burnt_usd: 0.0 outcome (success: true): outcome_gas_burnt_usd: 0.00014908595175 outcome_tokens_burnt_usd: 0.0 get_account_info(account1): Some( ( "alias1", ( 1710938075594122240, 1, ), ), ) get_alias_map(account1, alias1): Some( { AccountId( "dev-20240320123427-71924890141856", ): ( 1710938075594122240, 1, ), AccountId( "dev-20240320123430-41130212192848", ): ( 1710938073573268543, 0, ), }, ) get_alias_map(account1, alias2): Some( {}, )
In [ ]:
{ . "$ScriptDir/../apps/spiral/temp/extension/build.ps1" } | Invoke-Block
Lockfile is up to date, resolution step is skipped Progress: resolved 1, reused 0, downloaded 0, added 0 Packages: +309 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Progress: resolved 309, reused 299, downloaded 10, added 309, done dependencies: + buffer 6.0.3 devDependencies: + @playwright/test 1.42.1 + @types/chrome 0.0.263 + npm-check-updates 16.14.11 Done in 1.1s [INFO]: 🎯 Checking for the Wasm target... [INFO]: 🌀 Compiling to Wasm... Compiling proc-macro2 v1.0.79 Compiling unicode-ident v1.0.12 Compiling autocfg v1.1.0 Compiling serde v1.0.197 Compiling once_cell v1.19.0 Compiling cfg-if v1.0.0 Compiling wasm-bindgen-shared v0.2.92 Compiling log v0.4.21 Compiling bumpalo v3.15.4 Compiling wasm-bindgen v0.2.92 Compiling version_check v0.9.4 Compiling thiserror v1.0.58 Compiling quote v1.0.35 Compiling syn v2.0.53 Compiling memchr v2.7.1 Compiling futures-core v0.3.30 Compiling itoa v1.0.10 Compiling pin-project-lite v0.2.13 Compiling futures-sink v0.3.30 Compiling futures-channel v0.3.30 Compiling lock_api v0.4.11 Compiling slab v0.4.9 Compiling serde_json v1.0.114 Compiling parking_lot_core v0.9.9 Compiling ryu v1.0.17 Compiling smallvec v1.13.1 Compiling hashbrown v0.14.3 Compiling pin-utils v0.1.0 Compiling unicode-xid v0.2.4 Compiling futures-task v0.3.30 Compiling libc v0.2.153 Compiling futures-io v0.3.30 Compiling const_format_proc_macros v0.2.32 Compiling proc-macro-error-attr v1.0.4 Compiling equivalent v1.0.1 Compiling percent-encoding v2.3.1 Compiling tinyvec_macros v0.1.1 Compiling tinyvec v1.6.0 Compiling indexmap v2.2.5 Compiling proc-macro-error v1.0.4 Compiling fnv v1.0.7 Compiling bytes v1.5.0 Compiling unicode-segmentation v1.11.0 Compiling const_format v0.2.32 Compiling wasm-bindgen-backend v0.2.92 Compiling convert_case v0.6.0 Compiling unicode-normalization v0.1.23 Compiling form_urlencoded v1.2.1 Compiling proc-macro-utils v0.8.0 Compiling wasm-bindgen-macro-support v0.2.92 Compiling proc-macro2-diagnostics v0.10.1 Compiling unicode-bidi v0.3.15 Compiling xxhash-rust v0.8.10 Compiling server_fn_macro v0.6.9 Compiling idna v0.5.0 Compiling manyhow-macros v0.8.1 Compiling http v0.2.12 Compiling slotmap v1.0.7 Compiling half v2.4.0 Compiling anyhow v1.0.81 Compiling ciborium-io v0.2.2 Compiling yansi v1.0.1 Compiling camino v1.1.6 Compiling serde_derive v1.0.197 Compiling wasm-bindgen-macro v0.2.92 Compiling thiserror-impl v1.0.58 Compiling futures-macro v0.3.30 Compiling js-sys v0.3.69 Compiling futures-util v0.3.30 Compiling pin-project-internal v1.1.5 Compiling futures-executor v0.3.30 Compiling web-sys v0.3.69 Compiling wasm-bindgen-futures v0.4.42 Compiling pin-project v1.1.5 Compiling tracing-attributes v0.1.27 Compiling derive-where v1.2.7 Compiling futures v0.3.30 Compiling scopeguard v1.2.0 Compiling paste v1.0.14 Compiling quote-use-macros v0.7.2 Compiling serde_spanned v0.6.5 Compiling toml_datetime v0.6.5 Compiling syn_derive v0.1.8 Compiling ciborium-ll v0.2.2 Compiling quote-use v0.7.2 Compiling manyhow v0.8.1 Compiling url v2.5.0 Compiling tracing-core v0.1.32 Compiling winnow v0.6.5 Compiling interpolator v0.5.0 Compiling prettyplease v0.2.16 Compiling collection_literals v1.0.1 Compiling same-file v1.0.6 Compiling walkdir v2.5.0 Compiling attribute-derive-macro v0.8.1 Compiling toml_edit v0.22.7 Compiling rstml v0.11.2 Compiling tracing v0.1.40 Compiling parking_lot v0.12.1 Compiling dashmap v5.5.3 Compiling ciborium v0.2.2 Compiling serde-wasm-bindgen v0.6.5 Compiling serde_qs v0.12.0 Compiling server_fn_macro_default v0.6.9 Compiling http v1.1.0 Compiling getrandom v0.2.12 Compiling aho-corasick v1.1.2 Compiling send_wrapper v0.6.0 Compiling lazy_static v1.4.0 Compiling regex-syntax v0.8.2 Compiling gloo-utils v0.2.0 Compiling gloo-net v0.5.0 Compiling either v1.10.0 Compiling self_cell v1.0.3 Compiling base64 v0.21.7 Compiling rustc-hash v1.1.0 Compiling minimal-lexical v0.2.1 Compiling utf8-width v0.1.7 Compiling nom v7.1.3 Compiling regex-automata v0.4.6 Compiling html-escape v0.2.13 Compiling leptos_reactive v0.6.9 Compiling itertools v0.12.1 Compiling wasm-streams v0.4.0 Compiling server_fn v0.6.9 Compiling uuid v1.7.0 Compiling leptos_hot_reload v0.6.9 Compiling attribute-derive v0.8.1 Compiling toml v0.8.11 Compiling typed-builder-macro v0.18.1 Compiling pathdiff v0.2.1 Compiling config v0.14.0 Compiling leptos_macro v0.6.9 Compiling regex v1.10.3 Compiling async-recursion v1.1.0 Compiling inventory v0.3.15 Compiling pad-adapter v0.1.1 Compiling drain_filter_polyfill v0.1.3 Compiling num-traits v0.2.18 Compiling cfg_aliases v0.1.1 Compiling borsh v1.3.1 Compiling typed-builder v0.18.1 Compiling leptos_config v0.6.9 Compiling gloo-utils v0.1.7 Compiling serde_test v1.0.176 Compiling leptos_dom v0.6.9 Compiling gloo-net v0.2.6 Compiling linear-map v1.2.0 Compiling serde_urlencoded v0.7.1 Compiling tokio v1.36.0 Compiling base64 v0.13.1 Compiling tower-service v0.3.2 Compiling reqwest-wasm v0.11.16 Compiling rexie v0.5.0 Compiling console_log v1.0.0 Compiling leptos_server v0.6.9 Compiling console_error_panic_hook v0.1.7 Compiling leptos v0.6.9 Compiling leptos_meta v0.6.9 Compiling leptos_router v0.6.9 Compiling spiral_temp_extension v0.0.1 (/home/runner/work/polyglot/polyglot/apps/spiral/temp/extension) Finished `dev` profile [unoptimized + debuginfo] target(s) in 46.17s [INFO]: ⬇️ Installing wasm-bindgen... [INFO]: origin crate has no LICENSE [INFO]: ✨ Done in 47.42s [INFO]: 📦 Your wasm pkg is ready to publish at /home/runner/work/polyglot/polyglot/apps/spiral/temp/extension/pkg. ▲ [WARNING] "import.meta" is not available with the "iife" output format and will be empty [empty-import-meta] pkg/spiral_temp_extension.js:1495:57: 1495 │ ...put = new URL('spiral_temp_extension_bg.wasm', import.meta.url); ╵ ~~~~~~~~~~~ You need to set the output format to "esm" for "import.meta" to work correctly. 1 warning dist/spiral_temp_extension_bg-NJWMBW5L.wasm 4.6mb ⚠️ dist/devtools.js 29.0kb dist/content_script.js 27.2kb dist/service_worker.js 2.2kb ⚡ Done in 35ms > polyglot@ test:e2e /home/runner/work/polyglot/polyglot/apps/spiral/temp/extension > playwright test [WebServer] npm WARN exec The following package was not found and will be installed: serve@14.2.1 [WebServer] (node:186835) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead. (Use `node --trace-deprecation ...` to show where the warning was created) Running 3 tests using 2 workers ··· 3 passed (11.7s)
In [ ]:
{ . "$ScriptDir/../apps/perf/build.ps1" } | Invoke-Block
00:00:00 #1 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #2 [Debug] executeAsync / options: { Command =
"dotnet "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 --default-int i32 --default-float f64"
WorkingDirectory = None
CancellationToken = Some System.Threading.CancellationToken
OnLine = Some <fun:main@464-1020> }
00:00:00 #3 [Verbose] > pwd: /home/runner/work/polyglot/polyglot/apps/perf
00:00:00 #4 [Verbose] > dll_path: /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release
00:00:00 #5 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #6 [Verbose] waitForPortAccess / port: 13805 / retry: 0
00:00:00 #7 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #8 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #9 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #10 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #11 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #12 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #13 [Verbose] > Starting the Spiral Server. It is bound to: http://localhost:13805
00:00:00 #14 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #15 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #16 [Debug] sendJson / port: 13805 / json: {"Ping":true} / result.Length:
00:00:00 #17 [Verbose] awaitCompiler / Ping / result: Some(null) / port: 13805 / retry: 0
00:00:00 #18 [Verbose] > Server bound to: http://localhost:13805
00:00:00 #19 [Debug] executeAsync / options: { Command = "pwsh -c "../../scripts/invoke-dib.ps1 Perf.dib""
WorkingDirectory = None
CancellationToken = Some System.Threading.CancellationToken
OnLine = None }
00:00:02 #20 [Verbose] >
00:00:02 #21 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:02 #22 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:02 #23 [Verbose] > │ ## Perf (Polyglot) │
00:00:02 #24 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:02 #25 [Verbose] >
00:00:02 #26 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:02 #27 [Verbose] > // // test
00:00:02 #28 [Verbose] >
00:00:02 #29 [Verbose] > open testing
00:00:02 #30 [Verbose] > open benchmark
00:00:04 #31 [Verbose] > Building /tmp/!dotnet-repl/20240320-1235-4328-2825-2fc5566d336f/main.spi
00:00:06 #32 [Verbose] >
00:00:06 #33 [Verbose] > ╭─[ 3.70s - stdout ]───────────────────────────────────────────────────────────╮
00:00:06 #34 [Verbose] > │ () │
00:00:06 #35 [Verbose] > │ │
00:00:06 #36 [Verbose] > │ │
00:00:06 #37 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #38 [Verbose] >
00:00:06 #39 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 #40 [Verbose] > inl (/@) x = listm'.(/@) x
00:00:06 #41 [Verbose] > Building /tmp/!dotnet-repl/20240320-1235-4563-6336-6d55dc5c727e/main.spi
00:00:06 #42 [Verbose] >
00:00:06 #43 [Verbose] > ╭─[ 157.37ms - stdout ]────────────────────────────────────────────────────────╮
00:00:06 #44 [Verbose] > │ () │
00:00:06 #45 [Verbose] > │ │
00:00:06 #46 [Verbose] > │ │
00:00:06 #47 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #48 [Verbose] >
00:00:06 #49 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:06 #50 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:06 #51 [Verbose] > │ ## TestCaseResult │
00:00:06 #52 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #53 [Verbose] >
00:00:06 #54 [Verbose] > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:06 #55 [Verbose] > type TestCaseResult =
00:00:06 #56 [Verbose] > {
00:00:06 #57 [Verbose] > Input: string
00:00:06 #58 [Verbose] > Expected: string
00:00:06 #59 [Verbose] > Result: string
00:00:06 #60 [Verbose] > TimeList: int64 list
00:00:06 #61 [Verbose] > }
00:00:06 #62 [Verbose] >
00:00:06 #63 [Verbose] > ── fsharp - import ─────────────────────────────────────────────────────────────
00:00:06 #64 [Verbose] > #r
00:00:06 #65 [Verbose] > "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Asp
00:00:06 #66 [Verbose] > NetCore.Html.Abstractions.dll"
00:00:06 #67 [Verbose] > #r
00:00:06 #68 [Verbose] > "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot
00:00:06 #69 [Verbose] > Net.Interactive.dll"
00:00:06 #70 [Verbose] > #r
00:00:06 #71 [Verbose] > "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot
00:00:06 #72 [Verbose] > Net.Interactive.FSharp.dll"
00:00:06 #73 [Verbose] > #r
00:00:06 #74 [Verbose] > "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot
00:00:06 #75 [Verbose] > Net.Interactive.Formatting.dll"
00:00:06 #76 [Verbose] > open System
00:00:06 #77 [Verbose] > open System.IO
00:00:06 #78 [Verbose] > open System.Text
00:00:06 #79 [Verbose] > open Microsoft.DotNet.Interactive.Formatting
00:00:07 #80 [Verbose] >
00:00:07 #81 [Verbose] > ── fsharp - import ─────────────────────────────────────────────────────────────
00:00:07 #82 [Verbose] > #r
00:00:07 #83 [Verbose] > "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot
00:00:07 #84 [Verbose] > Net.Interactive.FSharp.dll"
00:00:07 #85 [Verbose] > open Microsoft.DotNet.Interactive.FSharp.FSharpKernelHelpers
00:00:07 #86 [Verbose] > #r
00:00:07 #87 [Verbose] > "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot
00:00:07 #88 [Verbose] > Net.Interactive.dll"
00:00:07 #89 [Verbose] > open type Microsoft.DotNet.Interactive.Kernel
00:00:07 #90 [Verbose] >
00:00:07 #91 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:07 #92 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:07 #93 [Verbose] > │ ## run │
00:00:07 #94 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #95 [Verbose] >
00:00:07 #96 [Verbose] > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:07 #97 [Verbose] > let run count (solutions: (string * ('TInput -> 'TExpected)) list) (input,
00:00:07 #98 [Verbose] > expected) =
00:00:07 #99 [Verbose] > let inputStr =
00:00:07 #100 [Verbose] > match box input with
00:00:07 #101 [Verbose] > | :? System.Collections.ICollection as input ->
00:00:07 #102 [Verbose] > System.Linq.Enumerable.Cast<obj> input
00:00:07 #103 [Verbose] > |> Seq.map string
00:00:07 #104 [Verbose] > |> String.concat ","
00:00:07 #105 [Verbose] > | _ -> input.ToString ()
00:00:07 #106 [Verbose] >
00:00:07 #107 [Verbose] > printfn ""
00:00:07 #108 [Verbose] > printfn $"Solution: {inputStr} "
00:00:07 #109 [Verbose] >
00:00:07 #110 [Verbose] > let performanceInvoke (fn: unit -> 'T) =
00:00:07 #111 [Verbose] > GC.Collect ()
00:00:07 #112 [Verbose] > let stopwatch = System.Diagnostics.Stopwatch ()
00:00:07 #113 [Verbose] > stopwatch.Start ()
00:00:07 #114 [Verbose] > let time1 = stopwatch.ElapsedMilliseconds
00:00:07 #115 [Verbose] >
00:00:07 #116 [Verbose] > let result =
00:00:07 #117 [Verbose] > [[| 0 .. count |]]
00:00:07 #118 [Verbose] > |> Array.Parallel.map (fun _ ->
00:00:07 #119 [Verbose] > fn ()
00:00:07 #120 [Verbose] > )
00:00:07 #121 [Verbose] > |> Array.last
00:00:07 #122 [Verbose] >
00:00:07 #123 [Verbose] > let time2 = stopwatch.ElapsedMilliseconds - time1
00:00:07 #124 [Verbose] >
00:00:07 #125 [Verbose] > result, time2
00:00:07 #126 [Verbose] >
00:00:07 #127 [Verbose] > let resultsWithTime =
00:00:07 #128 [Verbose] > solutions
00:00:07 #129 [Verbose] > |> List.mapi (fun i (testName, solution) ->
00:00:07 #130 [Verbose] > let result, time = performanceInvoke (fun () -> solution input)
00:00:07 #131 [Verbose] > printfn $"Test case %d{i + 1}. %s{testName}. Time: %A{time} "
00:00:07 #132 [Verbose] > result, time
00:00:07 #133 [Verbose] > )
00:00:07 #134 [Verbose] >
00:00:07 #135 [Verbose] >
00:00:07 #136 [Verbose] > match resultsWithTime |> List.map fst with
00:00:07 #137 [Verbose] > | ([[]] | [[ _ ]]) -> ()
00:00:07 #138 [Verbose] > | (head :: tail) when tail |> List.forall ((=) head) -> ()
00:00:07 #139 [Verbose] > | results -> failwithf $"Challenge error: %A{results}"
00:00:07 #140 [Verbose] >
00:00:07 #141 [Verbose] > {
00:00:07 #142 [Verbose] > Input = inputStr
00:00:07 #143 [Verbose] > Expected = expected.ToString ()
00:00:07 #144 [Verbose] > Result = resultsWithTime |> Seq.map fst |> Seq.head |> _.ToString()
00:00:07 #145 [Verbose] > TimeList = resultsWithTime |> List.map snd
00:00:07 #146 [Verbose] > }
00:00:08 #147 [Verbose] >
00:00:08 #148 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:08 #149 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:08 #150 [Verbose] > │ ## runAll │
00:00:08 #151 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #152 [Verbose] >
00:00:08 #153 [Verbose] > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:08 #154 [Verbose] > let runAll testName count (solutions: (string * ('TInput -> 'TExpected)) list)
00:00:08 #155 [Verbose] > testCases =
00:00:08 #156 [Verbose] > printfn ""
00:00:08 #157 [Verbose] > printfn ""
00:00:08 #158 [Verbose] > printfn $"Test: {testName}"
00:00:08 #159 [Verbose] > testCases
00:00:08 #160 [Verbose] > |> Seq.map (run count solutions)
00:00:08 #161 [Verbose] > |> Seq.toList
00:00:08 #162 [Verbose] >
00:00:08 #163 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:08 #164 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:08 #165 [Verbose] > │ ## sortResultList │
00:00:08 #166 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #167 [Verbose] >
00:00:08 #168 [Verbose] > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:08 #169 [Verbose] > let sortResultList resultList =
00:00:08 #170 [Verbose] > let table =
00:00:08 #171 [Verbose] > let rows =
00:00:08 #172 [Verbose] > resultList
00:00:08 #173 [Verbose] > |> List.map (fun result ->
00:00:08 #174 [Verbose] > let best =
00:00:08 #175 [Verbose] > result.TimeList
00:00:08 #176 [Verbose] > |> List.mapi (fun i time ->
00:00:08 #177 [Verbose] > i + 1, time
00:00:08 #178 [Verbose] > )
00:00:08 #179 [Verbose] > |> List.sortBy snd
00:00:08 #180 [Verbose] > |> List.head
00:00:08 #181 [Verbose] > |> _.ToString()
00:00:08 #182 [Verbose] > let row =
00:00:08 #183 [Verbose] > [[
00:00:08 #184 [Verbose] > result.Input
00:00:08 #185 [Verbose] > result.Expected
00:00:08 #186 [Verbose] > result.Result
00:00:08 #187 [Verbose] > best
00:00:08 #188 [Verbose] > ]]
00:00:08 #189 [Verbose] > let color =
00:00:08 #190 [Verbose] > match result.Expected = result.Result with
00:00:08 #191 [Verbose] > | true -> Some ConsoleColor.DarkGreen
00:00:08 #192 [Verbose] > | false -> Some ConsoleColor.DarkRed
00:00:08 #193 [Verbose] > row, color
00:00:08 #194 [Verbose] > )
00:00:08 #195 [Verbose] > let header =
00:00:08 #196 [Verbose] > [[
00:00:08 #197 [Verbose] > [[
00:00:08 #198 [Verbose] > "Input"
00:00:08 #199 [Verbose] > "Expected"
00:00:08 #200 [Verbose] > "Result"
00:00:08 #201 [Verbose] > "Best"
00:00:08 #202 [Verbose] > ]]
00:00:08 #203 [Verbose] > [[
00:00:08 #204 [Verbose] > "---"
00:00:08 #205 [Verbose] > "---"
00:00:08 #206 [Verbose] > "---"
00:00:08 #207 [Verbose] > "---"
00:00:08 #208 [Verbose] > ]]
00:00:08 #209 [Verbose] > ]]
00:00:08 #210 [Verbose] > |> List.map (fun row -> row, None)
00:00:08 #211 [Verbose] > header @ rows
00:00:08 #212 [Verbose] >
00:00:08 #213 [Verbose] > let formattedTable =
00:00:08 #214 [Verbose] > let lengthMap =
00:00:08 #215 [Verbose] > table
00:00:08 #216 [Verbose] > |> List.map fst
00:00:08 #217 [Verbose] > |> List.transpose
00:00:08 #218 [Verbose] > |> List.map (fun column ->
00:00:08 #219 [Verbose] > column
00:00:08 #220 [Verbose] > |> List.map String.length
00:00:08 #221 [Verbose] > |> List.sortDescending
00:00:08 #222 [Verbose] > |> List.tryHead
00:00:08 #223 [Verbose] > |> Option.defaultValue 0
00:00:08 #224 [Verbose] > )
00:00:08 #225 [Verbose] > |> List.indexed
00:00:08 #226 [Verbose] > |> Map.ofList
00:00:08 #227 [Verbose] > table
00:00:08 #228 [Verbose] > |> List.map (fun (row, color) ->
00:00:08 #229 [Verbose] > let newRow =
00:00:08 #230 [Verbose] > row
00:00:08 #231 [Verbose] > |> List.mapi (fun i cell ->
00:00:08 #232 [Verbose] > cell.PadRight lengthMap.[[i]]
00:00:08 #233 [Verbose] > )
00:00:08 #234 [Verbose] > newRow, color
00:00:08 #235 [Verbose] > )
00:00:08 #236 [Verbose] >
00:00:08 #237 [Verbose] > printfn ""
00:00:08 #238 [Verbose] > formattedTable
00:00:08 #239 [Verbose] > |> List.iter (fun (row, color) ->
00:00:08 #240 [Verbose] > match color with
00:00:08 #241 [Verbose] > | Some color -> Console.ForegroundColor <- color
00:00:08 #242 [Verbose] > | None -> Console.ResetColor ()
00:00:08 #243 [Verbose] >
00:00:08 #244 [Verbose] > printfn "%s" (String.Join ("\t| ", row))
00:00:08 #245 [Verbose] >
00:00:08 #246 [Verbose] > Console.ResetColor ()
00:00:08 #247 [Verbose] > )
00:00:08 #248 [Verbose] >
00:00:08 #249 [Verbose] > let averages =
00:00:08 #250 [Verbose] > resultList
00:00:08 #251 [Verbose] > |> List.map (fun result -> result.TimeList |> List.map float)
00:00:08 #252 [Verbose] > |> List.transpose
00:00:08 #253 [Verbose] > |> List.map List.average
00:00:08 #254 [Verbose] > |> List.map int64
00:00:08 #255 [Verbose] > |> List.indexed
00:00:08 #256 [Verbose] >
00:00:08 #257 [Verbose] > printfn ""
00:00:08 #258 [Verbose] > printfn "Average Ranking "
00:00:08 #259 [Verbose] > averages
00:00:08 #260 [Verbose] > |> List.sortBy snd
00:00:08 #261 [Verbose] > |> List.iter (fun (i, avg) ->
00:00:08 #262 [Verbose] > printfn $"Test case %d{i + 1}. Average Time: %A{avg} "
00:00:08 #263 [Verbose] > )
00:00:08 #264 [Verbose] >
00:00:08 #265 [Verbose] > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:08 #266 [Verbose] > let mutable _count =
00:00:08 #267 [Verbose] > if ("CI" |> System.Environment.GetEnvironmentVariable |> fun x -> $"%A{x}")
00:00:08 #268 [Verbose] > <> "<null>"
00:00:08 #269 [Verbose] > then 2000000
00:00:08 #270 [Verbose] > else 2000
00:00:08 #271 [Verbose] >
00:00:08 #272 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:08 #273 [Verbose] > inl is_fast () =
00:00:08 #274 [Verbose] > false
00:00:08 #275 [Verbose] > Building /tmp/!dotnet-repl/20240320-1235-4776-7654-74ffeee94ddc/main.spi
00:00:08 #276 [Verbose] >
00:00:08 #277 [Verbose] > ╭─[ 141.56ms - stdout ]────────────────────────────────────────────────────────╮
00:00:08 #278 [Verbose] > │ () │
00:00:08 #279 [Verbose] > │ │
00:00:08 #280 [Verbose] > │ │
00:00:08 #281 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #282 [Verbose] >
00:00:08 #283 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:08 #284 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:08 #285 [Verbose] > │ ## empty3Tests │
00:00:08 #286 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #287 [Verbose] >
00:00:08 #288 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:08 #289 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:08 #290 [Verbose] > │ Test: Empty3 │
00:00:08 #291 [Verbose] > │ │
00:00:08 #292 [Verbose] > │ Solution: (a, a) │
00:00:08 #293 [Verbose] > │ Test case 1. A. Time: 91L │
00:00:08 #294 [Verbose] > │ │
00:00:08 #295 [Verbose] > │ Solution: (a, a) │
00:00:08 #296 [Verbose] > │ Test case 1. A. Time: 56L │
00:00:08 #297 [Verbose] > │ │
00:00:08 #298 [Verbose] > │ Input | Expected | Result | Best │
00:00:08 #299 [Verbose] > │ --- | --- | --- | --- │
00:00:08 #300 [Verbose] > │ (a, a) | a | a | (1, 91) │
00:00:08 #301 [Verbose] > │ (a, a) | a | a | (1, 56) │
00:00:08 #302 [Verbose] > │ │
00:00:08 #303 [Verbose] > │ Averages │
00:00:08 #304 [Verbose] > │ Test case 1. Average Time: 73L │
00:00:08 #305 [Verbose] > │ │
00:00:08 #306 [Verbose] > │ Ranking │
00:00:08 #307 [Verbose] > │ Test case 1. Average Time: 73L │
00:00:08 #308 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #309 [Verbose] >
00:00:08 #310 [Verbose] > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:08 #311 [Verbose] > //// test
00:00:08 #312 [Verbose] >
00:00:08 #313 [Verbose] > let solutions = [[
00:00:08 #314 [Verbose] > "A",
00:00:08 #315 [Verbose] > fun (a, _b) ->
00:00:08 #316 [Verbose] > a
00:00:08 #317 [Verbose] > ]]
00:00:08 #318 [Verbose] > let testCases = seq {
00:00:08 #319 [Verbose] > ("a", "a"), "a"
00:00:08 #320 [Verbose] > ("a", "a"), "a"
00:00:08 #321 [Verbose] > }
00:00:08 #322 [Verbose] > let rec empty3Tests = runAll (nameof empty3Tests) _count solutions testCases
00:00:08 #323 [Verbose] > empty3Tests
00:00:08 #324 [Verbose] > |> sortResultList
00:00:08 #325 [Verbose] >
00:00:08 #326 [Verbose] > ╭─[ 454.77ms - stdout ]────────────────────────────────────────────────────────╮
00:00:08 #327 [Verbose] > │ │
00:00:08 #328 [Verbose] > │ │
00:00:08 #329 [Verbose] > │ Test: empty3Tests │
00:00:08 #330 [Verbose] > │ │
00:00:08 #331 [Verbose] > │ Solution: (a, a) │
00:00:08 #332 [Verbose] > │ Test case 1. A. Time: 33L │
00:00:08 #333 [Verbose] > │ │
00:00:08 #334 [Verbose] > │ Solution: (a, a) │
00:00:08 #335 [Verbose] > │ Test case 1. A. Time: 27L │
00:00:08 #336 [Verbose] > │ │
00:00:08 #337 [Verbose] > │ Input | Expected | Result | Best │
00:00:08 #338 [Verbose] > │ --- | --- | --- | --- │
00:00:08 #339 [Verbose] > │ (a, a) | a | a | (1, 33) │
00:00:08 #340 [Verbose] > │ (a, a) | a | a | (1, 27) │
00:00:08 #341 [Verbose] > │ │
00:00:08 #342 [Verbose] > │ Average Ranking │
00:00:08 #343 [Verbose] > │ Test case 1. Average Time: 30L │
00:00:08 #344 [Verbose] > │ │
00:00:08 #345 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #346 [Verbose] >
00:00:08 #347 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:08 #348 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:08 #349 [Verbose] > │ ## empty2Tests │
00:00:08 #350 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #351 [Verbose] >
00:00:08 #352 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:08 #353 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:08 #354 [Verbose] > │ Test: Empty2 │
00:00:08 #355 [Verbose] > │ │
00:00:08 #356 [Verbose] > │ Solution: (a, a) │
00:00:08 #357 [Verbose] > │ Test case 1. A. Time: 59L │
00:00:08 #358 [Verbose] > │ │
00:00:08 #359 [Verbose] > │ Solution: (a, a) │
00:00:08 #360 [Verbose] > │ Test case 1. A. Time: 53L │
00:00:08 #361 [Verbose] > │ │
00:00:08 #362 [Verbose] > │ Input | Expected | Result | Best │
00:00:08 #363 [Verbose] > │ --- | --- | --- | --- │
00:00:08 #364 [Verbose] > │ (a, a) | a | a | (1, 59) │
00:00:08 #365 [Verbose] > │ (a, a) | a | a | (1, 53) │
00:00:08 #366 [Verbose] > │ │
00:00:08 #367 [Verbose] > │ Averages │
00:00:08 #368 [Verbose] > │ Test case 1. Average Time: 56L │
00:00:08 #369 [Verbose] > │ │
00:00:08 #370 [Verbose] > │ Ranking │
00:00:08 #371 [Verbose] > │ Test case 1. Average Time: 56L │
00:00:08 #372 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #373 [Verbose] >
00:00:08 #374 [Verbose] > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:08 #375 [Verbose] > //// test
00:00:08 #376 [Verbose] >
00:00:08 #377 [Verbose] > let solutions = [[
00:00:08 #378 [Verbose] > "A",
00:00:08 #379 [Verbose] > fun (a, _b) ->
00:00:08 #380 [Verbose] > a
00:00:08 #381 [Verbose] > ]]
00:00:08 #382 [Verbose] > let testCases = seq {
00:00:08 #383 [Verbose] > ("a", "a"), "a"
00:00:08 #384 [Verbose] > ("a", "a"), "a"
00:00:08 #385 [Verbose] > }
00:00:08 #386 [Verbose] > let rec empty2Tests = runAll (nameof empty2Tests) _count solutions testCases
00:00:08 #387 [Verbose] > empty2Tests
00:00:08 #388 [Verbose] > |> sortResultList
00:00:09 #389 [Verbose] >
00:00:09 #390 [Verbose] > ╭─[ 232.77ms - stdout ]────────────────────────────────────────────────────────╮
00:00:09 #391 [Verbose] > │ │
00:00:09 #392 [Verbose] > │ │
00:00:09 #393 [Verbose] > │ Test: empty2Tests │
00:00:09 #394 [Verbose] > │ │
00:00:09 #395 [Verbose] > │ Solution: (a, a) │
00:00:09 #396 [Verbose] > │ Test case 1. A. Time: 29L │
00:00:09 #397 [Verbose] > │ │
00:00:09 #398 [Verbose] > │ Solution: (a, a) │
00:00:09 #399 [Verbose] > │ Test case 1. A. Time: 28L │
00:00:09 #400 [Verbose] > │ │
00:00:09 #401 [Verbose] > │ Input | Expected | Result | Best │
00:00:09 #402 [Verbose] > │ --- | --- | --- | --- │
00:00:09 #403 [Verbose] > │ (a, a) | a | a | (1, 29) │
00:00:09 #404 [Verbose] > │ (a, a) | a | a | (1, 28) │
00:00:09 #405 [Verbose] > │ │
00:00:09 #406 [Verbose] > │ Average Ranking │
00:00:09 #407 [Verbose] > │ Test case 1. Average Time: 28L │
00:00:09 #408 [Verbose] > │ │
00:00:09 #409 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #410 [Verbose] >
00:00:09 #411 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:09 #412 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:09 #413 [Verbose] > │ ## emptyTests │
00:00:09 #414 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #415 [Verbose] >
00:00:09 #416 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:09 #417 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:09 #418 [Verbose] > │ Test: Empty │
00:00:09 #419 [Verbose] > │ │
00:00:09 #420 [Verbose] > │ Solution: 0 │
00:00:09 #421 [Verbose] > │ Test case 1. A. Time: 61L │
00:00:09 #422 [Verbose] > │ │
00:00:09 #423 [Verbose] > │ Solution: 2 │
00:00:09 #424 [Verbose] > │ Test case 1. A. Time: 62L │
00:00:09 #425 [Verbose] > │ │
00:00:09 #426 [Verbose] > │ Solution: 5 │
00:00:09 #427 [Verbose] > │ Test case 1. A. Time: 70L │
00:00:09 #428 [Verbose] > │ │
00:00:09 #429 [Verbose] > │ Input | Expected | Result | Best │
00:00:09 #430 [Verbose] > │ --- | --- | --- | --- │
00:00:09 #431 [Verbose] > │ 0 | 0 | 0 | (1, 61) │
00:00:09 #432 [Verbose] > │ 2 | 2 | 2 | (1, 62) │
00:00:09 #433 [Verbose] > │ 5 | 5 | 5 | (1, 70) │
00:00:09 #434 [Verbose] > │ │
00:00:09 #435 [Verbose] > │ Averages │
00:00:09 #436 [Verbose] > │ Test case 1. Average Time: 64L │
00:00:09 #437 [Verbose] > │ │
00:00:09 #438 [Verbose] > │ Ranking │
00:00:09 #439 [Verbose] > │ Test case 1. Average Time: 64L │
00:00:09 #440 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #441 [Verbose] >
00:00:09 #442 [Verbose] > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:09 #443 [Verbose] > //// test
00:00:09 #444 [Verbose] >
00:00:09 #445 [Verbose] > let solutions = [[
00:00:09 #446 [Verbose] > "A",
00:00:09 #447 [Verbose] > fun n ->
00:00:09 #448 [Verbose] > n + 0
00:00:09 #449 [Verbose] > ]]
00:00:09 #450 [Verbose] > let testCases = seq {
00:00:09 #451 [Verbose] > 0, 0
00:00:09 #452 [Verbose] > 2, 2
00:00:09 #453 [Verbose] > 5, 5
00:00:09 #454 [Verbose] > }
00:00:09 #455 [Verbose] > let rec emptyTests = runAll (nameof emptyTests) _count solutions testCases
00:00:09 #456 [Verbose] > emptyTests
00:00:09 #457 [Verbose] > |> sortResultList
00:00:09 #458 [Verbose] >
00:00:09 #459 [Verbose] > ╭─[ 331.70ms - stdout ]────────────────────────────────────────────────────────╮
00:00:09 #460 [Verbose] > │ │
00:00:09 #461 [Verbose] > │ │
00:00:09 #462 [Verbose] > │ Test: emptyTests │
00:00:09 #463 [Verbose] > │ │
00:00:09 #464 [Verbose] > │ Solution: 0 │
00:00:09 #465 [Verbose] > │ Test case 1. A. Time: 25L │
00:00:09 #466 [Verbose] > │ │
00:00:09 #467 [Verbose] > │ Solution: 2 │
00:00:09 #468 [Verbose] > │ Test case 1. A. Time: 22L │
00:00:09 #469 [Verbose] > │ │
00:00:09 #470 [Verbose] > │ Solution: 5 │
00:00:09 #471 [Verbose] > │ Test case 1. A. Time: 24L │
00:00:09 #472 [Verbose] > │ │
00:00:09 #473 [Verbose] > │ Input | Expected | Result | Best │
00:00:09 #474 [Verbose] > │ --- | --- | --- | --- │
00:00:09 #475 [Verbose] > │ 0 | 0 | 0 | (1, 25) │
00:00:09 #476 [Verbose] > │ 2 | 2 | 2 | (1, 22) │
00:00:09 #477 [Verbose] > │ 5 | 5 | 5 | (1, 24) │
00:00:09 #478 [Verbose] > │ │
00:00:09 #479 [Verbose] > │ Average Ranking │
00:00:09 #480 [Verbose] > │ Test case 1. Average Time: 23L │
00:00:09 #481 [Verbose] > │ │
00:00:09 #482 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #483 [Verbose] >
00:00:09 #484 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:09 #485 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:09 #486 [Verbose] > │ ## uniqueLettersTests │
00:00:09 #487 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #488 [Verbose] >
00:00:09 #489 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:09 #490 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:09 #491 [Verbose] > │ Test: UniqueLetters │
00:00:09 #492 [Verbose] > │ │
00:00:09 #493 [Verbose] > │ Solution: abc │
00:00:09 #494 [Verbose] > │ Test case 1. A. Time: 1512L │
00:00:09 #495 [Verbose] > │ Test case 2. B. Time: 1947L │
00:00:09 #496 [Verbose] > │ Test case 3. C. Time: 2023L │
00:00:09 #497 [Verbose] > │ Test case 4. D. Time: 1358L │
00:00:09 #498 [Verbose] > │ Test case 5. E. Time: 1321L │
00:00:09 #499 [Verbose] > │ Test case 6. F. Time: 1346L │
00:00:09 #500 [Verbose] > │ Test case 7. G. Time: 1304L │
00:00:09 #501 [Verbose] > │ Test case 8. H. Time: 1383L │
00:00:09 #502 [Verbose] > │ Test case 9. I. Time: 1495L │
00:00:09 #503 [Verbose] > │ Test case 10. J. Time: 1245L │
00:00:09 #504 [Verbose] > │ Test case 11. K. Time: 1219L │
00:00:09 #505 [Verbose] > │ │
00:00:09 #506 [Verbose] > │ Solution: accabb │
00:00:09 #507 [Verbose] > │ Test case 1. A. Time: 1648L │
00:00:09 #508 [Verbose] > │ Test case 2. B. Time: 2061L │
00:00:09 #509 [Verbose] > │ Test case 3. C. Time: 2413L │
00:00:09 #510 [Verbose] > │ Test case 4. D. Time: 1561L │
00:00:09 #511 [Verbose] > │ Test case 5. E. Time: 1593L │
00:00:09 #512 [Verbose] > │ Test case 6. F. Time: 1518L │
00:00:09 #513 [Verbose] > │ Test case 7. G. Time: 1415L │
00:00:09 #514 [Verbose] > │ Test case 8. H. Time: 1510L │
00:00:09 #515 [Verbose] > │ Test case 9. I. Time: 1445L │
00:00:09 #516 [Verbose] > │ Test case 10. J. Time: 1636L │
00:00:09 #517 [Verbose] > │ Test case 11. K. Time: 1317L │
00:00:09 #518 [Verbose] > │ │
00:00:09 #519 [Verbose] > │ Solution: pprrqqpp │
00:00:09 #520 [Verbose] > │ Test case 1. A. Time: 2255L │
00:00:09 #521 [Verbose] > │ Test case 2. B. Time: 2408L │
00:00:09 #522 [Verbose] > │ Test case 3. C. Time: 2393L │
00:00:09 #523 [Verbose] > │ Test case 4. D. Time: 1675L │
00:00:09 #524 [Verbose] > │ Test case 5. E. Time: 1911L │
00:00:09 #525 [Verbose] > │ Test case 6. F. Time: 2126L │
00:00:09 #526 [Verbose] > │ Test case 7. G. Time: 1504L │
00:00:09 #527 [Verbose] > │ Test case 8. H. Time: 1715L │
00:00:09 #528 [Verbose] > │ Test case 9. I. Time: 1537L │
00:00:09 #529 [Verbose] > │ Test case 10. J. Time: 1522L │
00:00:09 #530 [Verbose] > │ Test case 11. K. Time: 1322L │
00:00:09 #531 [Verbose] > │ │
00:00:09 #532 [Verbose] > │ Solution: │
00:00:09 #533 [Verbose] > │ aaaaaaaaaaaaaaccccccabbbbbbbaaacccbbbaaccccccccccacbbbbbbbbbbbbbcccccccbbbbb │
00:00:09 #534 [Verbose] > │ bbb │
00:00:09 #535 [Verbose] > │ Test case 1. A. Time: 13073L │
00:00:09 #536 [Verbose] > │ Test case 2. B. Time: 11519L │
00:00:09 #537 [Verbose] > │ Test case 3. C. Time: 8373L │
00:00:09 #538 [Verbose] > │ Test case 4. D. Time: 5860L │
00:00:09 #539 [Verbose] > │ Test case 5. E. Time: 6490L │
00:00:09 #540 [Verbose] > │ Test case 6. F. Time: 6325L │
00:00:09 #541 [Verbose] > │ Test case 7. G. Time: 5799L │
00:00:09 #542 [Verbose] > │ Test case 8. H. Time: 7099L │
00:00:09 #543 [Verbose] > │ Test case 9. I. Time: 6133L │
00:00:09 #544 [Verbose] > │ Test case 10. J. Time: 5993L │
00:00:09 #545 [Verbose] > │ Test case 11. K. Time: 2040L │
00:00:09 #546 [Verbose] > │ │
00:00:09 #547 [Verbose] > │ Input │
00:00:09 #548 [Verbose] > │ | Expected | Result | Best │
00:00:09 #549 [Verbose] > │ --- │
00:00:09 #550 [Verbose] > │ │
00:00:09 #551 [Verbose] > │ | --- | --- | --- │
00:00:09 #552 [Verbose] > │ abc │
00:00:09 #553 [Verbose] > │ │
00:00:09 #554 [Verbose] > │ | abc | abc | (11, 1219) │
00:00:09 #555 [Verbose] > │ accabb │
00:00:09 #556 [Verbose] > │ | acb | acb | (11, 1317) │
00:00:09 #557 [Verbose] > │ pprrqqpp │
00:00:09 #558 [Verbose] > │ | prq | prq | (11, 1322) │
00:00:09 #559 [Verbose] > │ aaaaaaaaaaaaaaccccccabbbbbbbaaacccbbbaaccccccccccacbbbbbbbbbbbbbcccccccbbbbb │
00:00:09 #560 [Verbose] > │ bbb | acb | acb | (11, 2040) │
00:00:09 #561 [Verbose] > │ │
00:00:09 #562 [Verbose] > │ Averages │
00:00:09 #563 [Verbose] > │ Test case 1. Average Time: 4622L │
00:00:09 #564 [Verbose] > │ Test case 2. Average Time: 4483L │
00:00:09 #565 [Verbose] > │ Test case 3. Average Time: 3800L │
00:00:09 #566 [Verbose] > │ Test case 4. Average Time: 2613L │
00:00:09 #567 [Verbose] > │ Test case 5. Average Time: 2828L │
00:00:09 #568 [Verbose] > │ Test case 6. Average Time: 2828L │
00:00:09 #569 [Verbose] > │ Test case 7. Average Time: 2505L │
00:00:09 #570 [Verbose] > │ Test case 8. Average Time: 2926L │
00:00:09 #571 [Verbose] > │ Test case 9. Average Time: 2652L │
00:00:09 #572 [Verbose] > │ Test case 10. Average Time: 2599L │
00:00:09 #573 [Verbose] > │ Test case 11. Average Time: 1474L │
00:00:09 #574 [Verbose] > │ │
00:00:09 #575 [Verbose] > │ Ranking │
00:00:09 #576 [Verbose] > │ Test case 1. Average Time: 4622L │
00:00:09 #577 [Verbose] > │ Test case 2. Average Time: 4483L │
00:00:09 #578 [Verbose] > │ Test case 3. Average Time: 3800L │
00:00:09 #579 [Verbose] > │ Test case 8. Average Time: 2926L │
00:00:09 #580 [Verbose] > │ Test case 5. Average Time: 2828L │
00:00:09 #581 [Verbose] > │ Test case 6. Average Time: 2828L │
00:00:09 #582 [Verbose] > │ Test case 9. Average Time: 2652L │
00:00:09 #583 [Verbose] > │ Test case 4. Average Time: 2613L │
00:00:09 #584 [Verbose] > │ Test case 10. Average Time: 2599L │
00:00:09 #585 [Verbose] > │ Test case 7. Average Time: 2505L │
00:00:09 #586 [Verbose] > │ Test case 11. Average Time: 1474L │
00:00:09 #587 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #588 [Verbose] >
00:00:09 #589 [Verbose] > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:09 #590 [Verbose] > //// test
00:00:09 #591 [Verbose] >
00:00:09 #592 [Verbose] > let solutions = [[
00:00:09 #593 [Verbose] > "A",
00:00:09 #594 [Verbose] > fun input ->
00:00:09 #595 [Verbose] > input
00:00:09 #596 [Verbose] > |> Seq.toList
00:00:09 #597 [Verbose] > |> List.fold (fun acc x -> if List.contains x acc then acc else acc @ [[
00:00:09 #598 [Verbose] > x ]]) [[]]
00:00:09 #599 [Verbose] > |> Seq.toArray
00:00:09 #600 [Verbose] > |> String
00:00:09 #601 [Verbose] >
00:00:09 #602 [Verbose] > "B",
00:00:09 #603 [Verbose] > fun input ->
00:00:09 #604 [Verbose] > input
00:00:09 #605 [Verbose] > |> Seq.rev
00:00:09 #606 [Verbose] > |> fun list -> Seq.foldBack (fun x acc -> if List.contains x acc then
00:00:09 #607 [Verbose] > acc else x :: acc) list [[]]
00:00:09 #608 [Verbose] > |> Seq.rev
00:00:09 #609 [Verbose] > |> Seq.toArray
00:00:09 #610 [Verbose] > |> String
00:00:09 #611 [Verbose] >
00:00:09 #612 [Verbose] > "C",
00:00:09 #613 [Verbose] > fun input ->
00:00:09 #614 [Verbose] > input
00:00:09 #615 [Verbose] > |> Seq.rev
00:00:09 #616 [Verbose] > |> fun list -> Seq.foldBack (fun x (set, acc) -> if Set.contains x set
00:00:09 #617 [Verbose] > then set, acc else set.Add x, x :: acc) list (Set.empty, [[]])
00:00:09 #618 [Verbose] > |> snd
00:00:09 #619 [Verbose] > |> Seq.rev
00:00:09 #620 [Verbose] > |> Seq.toArray
00:00:09 #621 [Verbose] > |> String
00:00:09 #622 [Verbose] >
00:00:09 #623 [Verbose] > "D",
00:00:09 #624 [Verbose] > fun input ->
00:00:09 #625 [Verbose] > input
00:00:09 #626 [Verbose] > |> Seq.fold (fun (set, acc) x -> if Set.contains x set then set, acc
00:00:09 #627 [Verbose] > else set.Add x, Array.append acc [[| x |]]) (Set.empty, [[||]])
00:00:09 #628 [Verbose] > |> snd
00:00:09 #629 [Verbose] > |> String
00:00:09 #630 [Verbose] >
00:00:09 #631 [Verbose] > "E",
00:00:09 #632 [Verbose] > fun input ->
00:00:09 #633 [Verbose] > input
00:00:09 #634 [Verbose] > |> Seq.fold (fun (set, acc) x -> if Set.contains x set then set, acc
00:00:09 #635 [Verbose] > else set.Add x, x :: acc) (Set.empty, [[]])
00:00:09 #636 [Verbose] > |> snd
00:00:09 #637 [Verbose] > |> List.rev
00:00:09 #638 [Verbose] > |> List.toArray
00:00:09 #639 [Verbose] > |> String
00:00:09 #640 [Verbose] >
00:00:09 #641 [Verbose] > "F",
00:00:09 #642 [Verbose] > fun input ->
00:00:09 #643 [Verbose] > input
00:00:09 #644 [Verbose] > |> Seq.fold (fun (set, acc) x -> if Set.contains x set then set, acc
00:00:09 #645 [Verbose] > else set.Add x, acc @ [[ x ]]) (Set.empty, [[]])
00:00:09 #646 [Verbose] > |> snd
00:00:09 #647 [Verbose] > |> List.toArray
00:00:09 #648 [Verbose] > |> String
00:00:09 #649 [Verbose] >
00:00:09 #650 [Verbose] > "G",
00:00:09 #651 [Verbose] > fun input ->
00:00:09 #652 [Verbose] > input
00:00:09 #653 [Verbose] > |> Seq.fold (fun (set, acc) x -> if Set.contains x set then set, acc
00:00:09 #654 [Verbose] > else set.Add x, x :: acc) (Set.empty, [[]])
00:00:09 #655 [Verbose] > |> snd
00:00:09 #656 [Verbose] > |> List.toArray
00:00:09 #657 [Verbose] > |> Array.rev
00:00:09 #658 [Verbose] > |> String
00:00:09 #659 [Verbose] >
00:00:09 #660 [Verbose] > "H",
00:00:09 #661 [Verbose] > fun input ->
00:00:09 #662 [Verbose] > input
00:00:09 #663 [Verbose] > |> Seq.toList
00:00:09 #664 [Verbose] > |> fun list ->
00:00:09 #665 [Verbose] > let rec loop set = function
00:00:09 #666 [Verbose] > | head :: tail when Set.contains head set -> loop set tail
00:00:09 #667 [Verbose] > | head :: tail -> (loop (set.Add head) tail) @ [[ head ]]
00:00:09 #668 [Verbose] > | [[]] -> [[]]
00:00:09 #669 [Verbose] > loop Set.empty list
00:00:09 #670 [Verbose] > |> List.rev
00:00:09 #671 [Verbose] > |> List.toArray
00:00:09 #672 [Verbose] > |> String
00:00:09 #673 [Verbose] >
00:00:09 #674 [Verbose] > "I",
00:00:09 #675 [Verbose] > fun input ->
00:00:09 #676 [Verbose] > input
00:00:09 #677 [Verbose] > |> Seq.toList
00:00:09 #678 [Verbose] > |> fun list ->
00:00:09 #679 [Verbose] > let rec loop set = function
00:00:09 #680 [Verbose] > | head :: tail when Set.contains head set -> loop set tail
00:00:09 #681 [Verbose] > | head :: tail -> loop (set.Add head) tail |> Array.append [[|
00:00:09 #682 [Verbose] > head |]]
00:00:09 #683 [Verbose] > | [[]] -> [[||]]
00:00:09 #684 [Verbose] > loop Set.empty list
00:00:09 #685 [Verbose] > |> String
00:00:09 #686 [Verbose] >
00:00:09 #687 [Verbose] > "J",
00:00:09 #688 [Verbose] > fun input ->
00:00:09 #689 [Verbose] > input
00:00:09 #690 [Verbose] > |> Seq.toList
00:00:09 #691 [Verbose] > |> fun list ->
00:00:09 #692 [Verbose] > let rec loop set = function
00:00:09 #693 [Verbose] > | head :: tail when Set.contains head set -> loop set tail
00:00:09 #694 [Verbose] > | head :: tail -> head :: loop (set.Add head) tail
00:00:09 #695 [Verbose] > | [[]] -> [[]]
00:00:09 #696 [Verbose] > loop Set.empty list
00:00:09 #697 [Verbose] > |> List.toArray
00:00:09 #698 [Verbose] > |> String
00:00:09 #699 [Verbose] >
00:00:09 #700 [Verbose] > "K",
00:00:09 #701 [Verbose] > fun input ->
00:00:09 #702 [Verbose] > input
00:00:09 #703 [Verbose] > |> Seq.distinct
00:00:09 #704 [Verbose] > |> Seq.toArray
00:00:09 #705 [Verbose] > |> String
00:00:09 #706 [Verbose] > ]]
00:00:09 #707 [Verbose] > let testCases = seq {
00:00:09 #708 [Verbose] > "abc", "abc"
00:00:09 #709 [Verbose] > "accabb", "acb"
00:00:09 #710 [Verbose] > "pprrqqpp", "prq"
00:00:09 #711 [Verbose] >
00:00:09 #712 [Verbose] > "aaaaaaaaaaaaaaccccccabbbbbbbaaacccbbbaaccccccccccacbbbbbbbbbbbbbcccccccbbbbbbbb
00:00:09 #713 [Verbose] > ", "acb"
00:00:09 #714 [Verbose] > }
00:00:09 #715 [Verbose] > let rec uniqueLettersTests = runAll (nameof uniqueLettersTests) _count solutions
00:00:09 #716 [Verbose] > testCases
00:00:09 #717 [Verbose] > uniqueLettersTests
00:00:09 #718 [Verbose] > |> sortResultList
00:01:17 #719 [Verbose] >
00:01:17 #720 [Verbose] > ╭─[ 1.13m - stdout ]───────────────────────────────────────────────────────────╮
00:01:17 #721 [Verbose] > │ │
00:01:17 #722 [Verbose] > │ │
00:01:17 #723 [Verbose] > │ Test: uniqueLettersTests │
00:01:17 #724 [Verbose] > │ │
00:01:17 #725 [Verbose] > │ Solution: abc │
00:01:17 #726 [Verbose] > │ Test case 1. A. Time: 1198L │
00:01:17 #727 [Verbose] > │ Test case 2. B. Time: 1854L │
00:01:17 #728 [Verbose] > │ Test case 3. C. Time: 2147L │
00:01:17 #729 [Verbose] > │ Test case 4. D. Time: 1097L │
00:01:17 #730 [Verbose] > │ Test case 5. E. Time: 848L │
00:01:17 #731 [Verbose] > │ Test case 6. F. Time: 839L │
00:01:17 #732 [Verbose] > │ Test case 7. G. Time: 824L │
00:01:17 #733 [Verbose] > │ Test case 8. H. Time: 910L │
00:01:17 #734 [Verbose] > │ Test case 9. I. Time: 851L │
00:01:17 #735 [Verbose] > │ Test case 10. J. Time: 783L │
00:01:17 #736 [Verbose] > │ Test case 11. K. Time: 817L │
00:01:17 #737 [Verbose] > │ │
00:01:17 #738 [Verbose] > │ Solution: accabb │
00:01:17 #739 [Verbose] > │ Test case 1. A. Time: 832L │
00:01:17 #740 [Verbose] > │ Test case 2. B. Time: 1131L │
00:01:17 #741 [Verbose] > │ Test case 3. C. Time: 1456L │
00:01:17 #742 [Verbose] > │ Test case 4. D. Time: 917L │
00:01:17 #743 [Verbose] > │ Test case 5. E. Time: 919L │
00:01:17 #744 [Verbose] > │ Test case 6. F. Time: 921L │
00:01:17 #745 [Verbose] > │ Test case 7. G. Time: 927L │
00:01:17 #746 [Verbose] > │ Test case 8. H. Time: 1004L │
00:01:17 #747 [Verbose] > │ Test case 9. I. Time: 955L │
00:01:17 #748 [Verbose] > │ Test case 10. J. Time: 823L │
00:01:17 #749 [Verbose] > │ Test case 11. K. Time: 710L │
00:01:17 #750 [Verbose] > │ │
00:01:17 #751 [Verbose] > │ Solution: pprrqqpp │
00:01:17 #752 [Verbose] > │ Test case 1. A. Time: 852L │
00:01:17 #753 [Verbose] > │ Test case 2. B. Time: 1075L │
00:01:17 #754 [Verbose] > │ Test case 3. C. Time: 1482L │
00:01:17 #755 [Verbose] > │ Test case 4. D. Time: 971L │
00:01:17 #756 [Verbose] > │ Test case 5. E. Time: 982L │
00:01:17 #757 [Verbose] > │ Test case 6. F. Time: 973L │
00:01:17 #758 [Verbose] > │ Test case 7. G. Time: 915L │
00:01:17 #759 [Verbose] > │ Test case 8. H. Time: 1030L │
00:01:17 #760 [Verbose] > │ Test case 9. I. Time: 956L │
00:01:17 #761 [Verbose] > │ Test case 10. J. Time: 921L │
00:01:17 #762 [Verbose] > │ Test case 11. K. Time: 730L │
00:01:17 #763 [Verbose] > │ │
00:01:17 #764 [Verbose] > │ Solution: │
00:01:17 #765 [Verbose] > │ aaaaaaaaaaaaaaccccccabbbbbbbaaacccbbbaaccccccccccacbbbbbbbbbbbbbcccccccbbbbb │
00:01:17 #766 [Verbose] > │ bbb │
00:01:17 #767 [Verbose] > │ Test case 1. A. Time: 2265L │
00:01:17 #768 [Verbose] > │ Test case 2. B. Time: 2740L │
00:01:17 #769 [Verbose] > │ Test case 3. C. Time: 4250L │
00:01:17 #770 [Verbose] > │ Test case 4. D. Time: 2540L │
00:01:17 #771 [Verbose] > │ Test case 5. E. Time: 2633L │
00:01:17 #772 [Verbose] > │ Test case 6. F. Time: 2648L │
00:01:17 #773 [Verbose] > │ Test case 7. G. Time: 2615L │
00:01:17 #774 [Verbose] > │ Test case 8. H. Time: 2558L │
00:01:17 #775 [Verbose] > │ Test case 9. I. Time: 2567L │
00:01:17 #776 [Verbose] > │ Test case 10. J. Time: 2450L │
00:01:17 #777 [Verbose] > │ Test case 11. K. Time: 1337L │
00:01:17 #778 [Verbose] > │ │
00:01:17 #779 [Verbose] > │ Input │
00:01:17 #780 [Verbose] > │ | Expected | Result | Best │
00:01:17 #781 [Verbose] > │ --- │
00:01:17 #782 [Verbose] > │ | --- | --- | --- │
00:01:17 #783 [Verbose] > │ abc │
00:01:17 #784 [Verbose] > │ | abc | abc | (10, 783) │
00:01:17 #785 [Verbose] > │ accabb │
00:01:17 #786 [Verbose] > │ | acb | acb | (11, 710) │
00:01:17 #787 [Verbose] > │ pprrqqpp │
00:01:17 #788 [Verbose] > │ | prq | prq | (11, 730) │
00:01:17 #789 [Verbose] > │ aaaaaaaaaaaaaaccccccabbbbbbbaaacccbbbaaccccccccccacbbbbbbbbbbbbbcccccccbbbbb │
00:01:17 #790 [Verbose] > │ bbb | acb | acb | (11, 1337) │
00:01:17 #791 [Verbose] > │ │
00:01:17 #792 [Verbose] > │ Average Ranking │
00:01:17 #793 [Verbose] > │ Test case 11. Average Time: 898L │
00:01:17 #794 [Verbose] > │ Test case 10. Average Time: 1244L │
00:01:17 #795 [Verbose] > │ Test case 1. Average Time: 1286L │
00:01:17 #796 [Verbose] > │ Test case 7. Average Time: 1320L │
00:01:17 #797 [Verbose] > │ Test case 9. Average Time: 1332L │
00:01:17 #798 [Verbose] > │ Test case 5. Average Time: 1345L │
00:01:17 #799 [Verbose] > │ Test case 6. Average Time: 1345L │
00:01:17 #800 [Verbose] > │ Test case 8. Average Time: 1375L │
00:01:17 #801 [Verbose] > │ Test case 4. Average Time: 1381L │
00:01:17 #802 [Verbose] > │ Test case 2. Average Time: 1700L │
00:01:17 #803 [Verbose] > │ Test case 3. Average Time: 2333L │
00:01:17 #804 [Verbose] > │ │
00:01:17 #805 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:17 #806 [Verbose] >
00:01:17 #807 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:01:17 #808 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:17 #809 [Verbose] > │ ## rotateStringsTests │
00:01:17 #810 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:17 #811 [Verbose] >
00:01:17 #812 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:01:17 #813 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:17 #814 [Verbose] > │ https://www.hackerrank.com/challenges/rotate-string/forum │
00:01:17 #815 [Verbose] > │ │
00:01:17 #816 [Verbose] > │ Test: RotateStrings │
00:01:17 #817 [Verbose] > │ │
00:01:17 #818 [Verbose] > │ Solution: abc │
00:01:17 #819 [Verbose] > │ Test case 1. A. Time: 1842L │
00:01:17 #820 [Verbose] > │ Test case 2. B. Time: 1846L │
00:01:17 #821 [Verbose] > │ Test case 3. C. Time: 1936L │
00:01:17 #822 [Verbose] > │ Test case 4. CA. Time: 2224L │
00:01:17 #823 [Verbose] > │ Test case 5. CB. Time: 2329L │
00:01:17 #824 [Verbose] > │ Test case 6. D. Time: 2474L │
00:01:17 #825 [Verbose] > │ Test case 7. E. Time: 1664L │
00:01:17 #826 [Verbose] > │ Test case 8. F. Time: 1517L │
00:01:17 #827 [Verbose] > │ Test case 9. FA. Time: 1651L │
00:01:17 #828 [Verbose] > │ Test case 10. FB. Time: 3764L │
00:01:17 #829 [Verbose] > │ Test case 11. FC. Time: 5415L │
00:01:17 #830 [Verbose] > │ │
00:01:17 #831 [Verbose] > │ Solution: abcde │
00:01:17 #832 [Verbose] > │ Test case 1. A. Time: 3356L │
00:01:17 #833 [Verbose] > │ Test case 2. B. Time: 2592L │
00:01:17 #834 [Verbose] > │ Test case 3. C. Time: 2346L │
00:01:17 #835 [Verbose] > │ Test case 4. CA. Time: 2997L │
00:01:17 #836 [Verbose] > │ Test case 5. CB. Time: 3061L │
00:01:17 #837 [Verbose] > │ Test case 6. D. Time: 4051L │
00:01:17 #838 [Verbose] > │ Test case 7. E. Time: 1905L │
00:01:17 #839 [Verbose] > │ Test case 8. F. Time: 1771L │
00:01:17 #840 [Verbose] > │ Test case 9. FA. Time: 2175L │
00:01:17 #841 [Verbose] > │ Test case 10. FB. Time: 3275L │
00:01:17 #842 [Verbose] > │ Test case 11. FC. Time: 5266L │
00:01:17 #843 [Verbose] > │ │
00:01:17 #844 [Verbose] > │ Solution: abcdefghi │
00:01:17 #845 [Verbose] > │ Test case 1. A. Time: 4492L │
00:01:17 #846 [Verbose] > │ Test case 2. B. Time: 3526L │
00:01:17 #847 [Verbose] > │ Test case 3. C. Time: 3583L │
00:01:17 #848 [Verbose] > │ Test case 4. CA. Time: 3711L │
00:01:17 #849 [Verbose] > │ Test case 5. CB. Time: 4783L │
00:01:17 #850 [Verbose] > │ Test case 6. D. Time: 7557L │
00:01:17 #851 [Verbose] > │ Test case 7. E. Time: 3452L │
00:01:17 #852 [Verbose] > │ Test case 8. F. Time: 3050L │
00:01:17 #853 [Verbose] > │ Test case 9. FA. Time: 3275L │
00:01:17 #854 [Verbose] > │ Test case 10. FB. Time: 4635L │
00:01:17 #855 [Verbose] > │ Test case 11. FC. Time: 5616L │
00:01:17 #856 [Verbose] > │ │
00:01:17 #857 [Verbose] > │ Solution: abab │
00:01:17 #858 [Verbose] > │ Test case 1. A. Time: 2093L │
00:01:17 #859 [Verbose] > │ Test case 2. B. Time: 1843L │
00:01:17 #860 [Verbose] > │ Test case 3. C. Time: 1746L │
00:01:17 #861 [Verbose] > │ Test case 4. CA. Time: 2085L │
00:01:17 #862 [Verbose] > │ Test case 5. CB. Time: 2139L │
00:01:17 #863 [Verbose] > │ Test case 6. D. Time: 2095L │
00:01:17 #864 [Verbose] > │ Test case 7. E. Time: 1723L │
00:01:17 #865 [Verbose] > │ Test case 8. F. Time: 1558L │
00:01:17 #866 [Verbose] > │ Test case 9. FA. Time: 1620L │
00:01:17 #867 [Verbose] > │ Test case 10. FB. Time: 2319L │
00:01:17 #868 [Verbose] > │ Test case 11. FC. Time: 3918L │
00:01:17 #869 [Verbose] > │ │
00:01:17 #870 [Verbose] > │ Solution: aa │
00:01:17 #871 [Verbose] > │ Test case 1. A. Time: 1107L │
00:01:17 #872 [Verbose] > │ Test case 2. B. Time: 1241L │
00:01:17 #873 [Verbose] > │ Test case 3. C. Time: 1183L │
00:01:17 #874 [Verbose] > │ Test case 4. CA. Time: 1563L │
00:01:17 #875 [Verbose] > │ Test case 5. CB. Time: 1525L │
00:01:17 #876 [Verbose] > │ Test case 6. D. Time: 1591L │
00:01:17 #877 [Verbose] > │ Test case 7. E. Time: 1327L │
00:01:17 #878 [Verbose] > │ Test case 8. F. Time: 1151L │
00:01:17 #879 [Verbose] > │ Test case 9. FA. Time: 1180L │
00:01:17 #880 [Verbose] > │ Test case 10. FB. Time: 1733L │
00:01:17 #881 [Verbose] > │ Test case 11. FC. Time: 2817L │
00:01:17 #882 [Verbose] > │ │
00:01:17 #883 [Verbose] > │ Solution: z │
00:01:17 #884 [Verbose] > │ Test case 1. A. Time: 816L │
00:01:17 #885 [Verbose] > │ Test case 2. B. Time: 745L │
00:01:17 #886 [Verbose] > │ Test case 3. C. Time: 928L │
00:01:17 #887 [Verbose] > │ Test case 4. CA. Time: 1375L │
00:01:17 #888 [Verbose] > │ Test case 5. CB. Time: 1029L │
00:01:17 #889 [Verbose] > │ Test case 6. D. Time: 852L │
00:01:17 #890 [Verbose] > │ Test case 7. E. Time: 712L │
00:01:17 #891 [Verbose] > │ Test case 8. F. Time: 263L │
00:01:17 #892 [Verbose] > │ Test case 9. FA. Time: 232L │
00:01:17 #893 [Verbose] > │ Test case 10. FB. Time: 773L │
00:01:17 #894 [Verbose] > │ Test case 11. FC. Time: 1789L │
00:01:17 #895 [Verbose] > │ │
00:01:17 #896 [Verbose] > │ Input | Expected │
00:01:17 #897 [Verbose] > │ │
00:01:17 #898 [Verbose] > │ | Result │
00:01:17 #899 [Verbose] > │ │
00:01:17 #900 [Verbose] > │ | Best │
00:01:17 #901 [Verbose] > │ --- | --- │
00:01:17 #902 [Verbose] > │ │
00:01:17 #903 [Verbose] > │ | --- │
00:01:17 #904 [Verbose] > │ │
00:01:17 #905 [Verbose] > │ | --- │
00:01:17 #906 [Verbose] > │ abc | bca cab abc │
00:01:17 #907 [Verbose] > │ │
00:01:17 #908 [Verbose] > │ | bca cab abc │
00:01:17 #909 [Verbose] > │ │
00:01:17 #910 [Verbose] > │ | (8, 1517) │
00:01:17 #911 [Verbose] > │ abcde | bcdea cdeab deabc eabcd abcde │
00:01:17 #912 [Verbose] > │ | bcdea cdeab deabc eabcd abcde │
00:01:17 #913 [Verbose] > │ | (8, 1771) │
00:01:17 #914 [Verbose] > │ abcdefghi | bcdefghia cdefghiab defghiabc efghiabcd fghiabcde │
00:01:17 #915 [Verbose] > │ ghiabcdef hiabcdefg iabcdefgh abcdefghi | bcdefghia cdefghiab │
00:01:17 #916 [Verbose] > │ defghiabc efghiabcd fghiabcde ghiabcdef hiabcdefg iabcdefgh abcdefghi │
00:01:17 #917 [Verbose] > │ | (8, 3050) │
00:01:17 #918 [Verbose] > │ abab | baba abab baba abab │
00:01:17 #919 [Verbose] > │ │
00:01:17 #920 [Verbose] > │ | baba abab baba abab │
00:01:17 #921 [Verbose] > │ │
00:01:17 #922 [Verbose] > │ | (8, 1558) │
00:01:17 #923 [Verbose] > │ aa | aa aa │
00:01:17 #924 [Verbose] > │ │
00:01:17 #925 [Verbose] > │ | aa aa │
00:01:17 #926 [Verbose] > │ │
00:01:17 #927 [Verbose] > │ | (1, 1107) │
00:01:17 #928 [Verbose] > │ z | z │
00:01:17 #929 [Verbose] > │ │
00:01:17 #930 [Verbose] > │ | z │
00:01:17 #931 [Verbose] > │ │
00:01:17 #932 [Verbose] > │ | (9, 232) │
00:01:17 #933 [Verbose] > │ │
00:01:17 #934 [Verbose] > │ Averages │
00:01:17 #935 [Verbose] > │ Test case 1. Average Time: 2284L │
00:01:17 #936 [Verbose] > │ Test case 2. Average Time: 1965L │
00:01:17 #937 [Verbose] > │ Test case 3. Average Time: 1953L │
00:01:17 #938 [Verbose] > │ Test case 4. Average Time: 2325L │
00:01:17 #939 [Verbose] > │ Test case 5. Average Time: 2477L │
00:01:17 #940 [Verbose] > │ Test case 6. Average Time: 3103L │
00:01:17 #941 [Verbose] > │ Test case 7. Average Time: 1797L │
00:01:17 #942 [Verbose] > │ Test case 8. Average Time: 1551L │
00:01:17 #943 [Verbose] > │ Test case 9. Average Time: 1688L │
00:01:17 #944 [Verbose] > │ Test case 10. Average Time: 2749L │
00:01:17 #945 [Verbose] > │ Test case 11. Average Time: 4136L │
00:01:17 #946 [Verbose] > │ │
00:01:17 #947 [Verbose] > │ Ranking │
00:01:17 #948 [Verbose] > │ Test case 11. Average Time: 4136L │
00:01:17 #949 [Verbose] > │ Test case 6. Average Time: 3103L │
00:01:17 #950 [Verbose] > │ Test case 10. Average Time: 2749L │
00:01:17 #951 [Verbose] > │ Test case 5. Average Time: 2477L │
00:01:17 #952 [Verbose] > │ Test case 4. Average Time: 2325L │
00:01:17 #953 [Verbose] > │ Test case 1. Average Time: 2284L │
00:01:17 #954 [Verbose] > │ Test case 2. Average Time: 1965L │
00:01:17 #955 [Verbose] > │ Test case 3. Average Time: 1953L │
00:01:17 #956 [Verbose] > │ Test case 7. Average Time: 1797L │
00:01:17 #957 [Verbose] > │ Test case 9. Average Time: 1688L │
00:01:17 #958 [Verbose] > │ Test case 8. Average Time: 1551L │
00:01:17 #959 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:17 #960 [Verbose] >
00:01:17 #961 [Verbose] > ── fsharp ──────────────────────────────────────────────────────────────────────
00:01:17 #962 [Verbose] > //// test
00:01:17 #963 [Verbose] >
00:01:17 #964 [Verbose] > let solutions = [[
00:01:17 #965 [Verbose] > "A",
00:01:17 #966 [Verbose] > fun (input: string) ->
00:01:17 #967 [Verbose] > let resultList =
00:01:17 #968 [Verbose] > List.fold (fun acc x ->
00:01:17 #969 [Verbose] > let rotate (text: string) (letter: string) = text.Substring (1,
00:01:17 #970 [Verbose] > input.Length - 1) + letter
00:01:17 #971 [Verbose] > [[ rotate (if acc.IsEmpty then input else acc.Head) (string x)
00:01:17 #972 [Verbose] > ]] @ acc
00:01:17 #973 [Verbose] > ) [[]] (Seq.toList input)
00:01:17 #974 [Verbose] >
00:01:17 #975 [Verbose] > (resultList, "")
00:01:17 #976 [Verbose] > ||> List.foldBack (fun acc x -> x + acc + " ")
00:01:17 #977 [Verbose] > |> _.TrimEnd()
00:01:17 #978 [Verbose] >
00:01:17 #979 [Verbose] > "B",
00:01:17 #980 [Verbose] > fun input ->
00:01:17 #981 [Verbose] > input
00:01:17 #982 [Verbose] > |> Seq.toList
00:01:17 #983 [Verbose] > |> List.fold (fun (acc: string list) letter ->
00:01:17 #984 [Verbose] > let last =
00:01:17 #985 [Verbose] > if acc.IsEmpty
00:01:17 #986 [Verbose] > then input
00:01:17 #987 [Verbose] > else acc.Head
00:01:17 #988 [Verbose] >
00:01:17 #989 [Verbose] > let item = last.[[1 .. input.Length - 1]] + string letter
00:01:17 #990 [Verbose] >
00:01:17 #991 [Verbose] > item :: acc
00:01:17 #992 [Verbose] > ) [[]]
00:01:17 #993 [Verbose] > |> List.rev
00:01:17 #994 [Verbose] > |> String.concat " "
00:01:17 #995 [Verbose] >
00:01:17 #996 [Verbose] > "C",
00:01:17 #997 [Verbose] > fun input ->
00:01:17 #998 [Verbose] > input
00:01:17 #999 [Verbose] > |> Seq.toList
00:01:17 #1000 [Verbose] > |> List.fold (fun (acc: string list) letter -> acc.Head.[[ 1 ..
00:01:17 #1001 [Verbose] > input.Length - 1 ]] + string letter :: acc) [[ input ]]
00:01:17 #1002 [Verbose] > |> List.rev
00:01:17 #1003 [Verbose] > |> List.skip 1
00:01:17 #1004 [Verbose] > |> String.concat " "
00:01:17 #1005 [Verbose] >
00:01:17 #1006 [Verbose] > "CA",
00:01:17 #1007 [Verbose] > fun input ->
00:01:17 #1008 [Verbose] > input
00:01:17 #1009 [Verbose] > |> Seq.fold (fun (acc: string list) letter -> acc.Head.[[ 1 ..
00:01:17 #1010 [Verbose] > input.Length - 1 ]] + string letter :: acc) [[ input ]]
00:01:17 #1011 [Verbose] > |> Seq.rev
00:01:17 #1012 [Verbose] > |> Seq.skip 1
00:01:17 #1013 [Verbose] > |> String.concat " "
00:01:17 #1014 [Verbose] >
00:01:17 #1015 [Verbose] > "CB",
00:01:17 #1016 [Verbose] > fun input ->
00:01:17 #1017 [Verbose] > input
00:01:17 #1018 [Verbose] > |> Seq.toArray
00:01:17 #1019 [Verbose] > |> Array.fold (fun (acc: string[[]]) letter -> acc |> Array.append [[|
00:01:17 #1020 [Verbose] > acc.[[0]].[[ 1 .. input.Length - 1 ]] + string letter |]]) [[| input |]]
00:01:17 #1021 [Verbose] > |> Array.rev
00:01:17 #1022 [Verbose] > |> Array.skip 1
00:01:17 #1023 [Verbose] > |> String.concat " "
00:01:17 #1024 [Verbose] >
00:01:17 #1025 [Verbose] > "D",
00:01:17 #1026 [Verbose] > fun input ->
00:01:17 #1027 [Verbose] > input
00:01:17 #1028 [Verbose] > |> Seq.toList
00:01:17 #1029 [Verbose] > |> fun list ->
00:01:17 #1030 [Verbose] > let rec loop (acc: char list list) = function
00:01:17 #1031 [Verbose] > | _ when acc.Length = list.Length -> acc
00:01:17 #1032 [Verbose] > | head :: tail ->
00:01:17 #1033 [Verbose] > let item = tail @ [[ head ]]
00:01:17 #1034 [Verbose] > loop (item :: acc) item
00:01:17 #1035 [Verbose] > | [[]] -> [[]]
00:01:17 #1036 [Verbose] > loop [[]] list
00:01:17 #1037 [Verbose] > |> List.rev
00:01:17 #1038 [Verbose] > |> List.map (List.toArray >> String)
00:01:17 #1039 [Verbose] > |> String.concat " "
00:01:17 #1040 [Verbose] >
00:01:17 #1041 [Verbose] > "E",
00:01:17 #1042 [Verbose] > fun input ->
00:01:17 #1043 [Verbose] > input
00:01:17 #1044 [Verbose] > |> Seq.toList
00:01:17 #1045 [Verbose] > |> fun list ->
00:01:17 #1046 [Verbose] > let rec loop (last: string) = function
00:01:17 #1047 [Verbose] > | head :: tail ->
00:01:17 #1048 [Verbose] > let item = last.[[1 .. input.Length - 1]] + string head
00:01:17 #1049 [Verbose] > item :: loop item tail
00:01:17 #1050 [Verbose] > | [[]] -> [[]]
00:01:17 #1051 [Verbose] > loop input list
00:01:17 #1052 [Verbose] > |> String.concat " "
00:01:17 #1053 [Verbose] >
00:01:17 #1054 [Verbose] > "F",
00:01:17 #1055 [Verbose] > fun input ->
00:01:17 #1056 [Verbose] > Array.singleton 0
00:01:17 #1057 [Verbose] > |> Array.append [[| 1 .. input.Length - 1 |]]
00:01:17 #1058 [Verbose] > |> Array.map (fun i -> input.[[ i .. ]] + input.[[ .. i - 1 ]])
00:01:17 #1059 [Verbose] > |> String.concat " "
00:01:17 #1060 [Verbose] >
00:01:17 #1061 [Verbose] > "FA",
00:01:17 #1062 [Verbose] > fun input ->
00:01:17 #1063 [Verbose] > List.singleton 0
00:01:17 #1064 [Verbose] > |> List.append [[ 1 .. input.Length - 1 ]]
00:01:17 #1065 [Verbose] > |> List.map (fun i -> input.[[ i .. ]] + input.[[ .. i - 1 ]])
00:01:17 #1066 [Verbose] > |> String.concat " "
00:01:17 #1067 [Verbose] >
00:01:17 #1068 [Verbose] > "FB",
00:01:17 #1069 [Verbose] > fun input ->
00:01:17 #1070 [Verbose] > Seq.singleton 0
00:01:17 #1071 [Verbose] > |> Seq.append (seq { 1 .. input.Length - 1 })
00:01:17 #1072 [Verbose] > |> Seq.map (fun i -> input.[[ i .. ]] + input.[[ .. i - 1 ]])
00:01:17 #1073 [Verbose] > |> String.concat " "
00:01:17 #1074 [Verbose] >
00:01:17 #1075 [Verbose] > "FC",
00:01:17 #1076 [Verbose] > fun input ->
00:01:17 #1077 [Verbose] > Array.singleton 0
00:01:17 #1078 [Verbose] > |> Array.append [[| 1 .. input.Length - 1 |]]
00:01:17 #1079 [Verbose] > |> Array.Parallel.map (fun i -> input.[[ i .. ]] + input.[[ .. i - 1 ]])
00:01:17 #1080 [Verbose] > |> String.concat " "
00:01:17 #1081 [Verbose] > ]]
00:01:17 #1082 [Verbose] > let testCases = seq {
00:01:17 #1083 [Verbose] > "abc", "bca cab abc"
00:01:17 #1084 [Verbose] > "abcde", "bcdea cdeab deabc eabcd abcde"
00:01:17 #1085 [Verbose] > "abcdefghi", "bcdefghia cdefghiab defghiabc efghiabcd fghiabcde ghiabcdef
00:01:17 #1086 [Verbose] > hiabcdefg iabcdefgh abcdefghi"
00:01:17 #1087 [Verbose] > "abab", "baba abab baba abab"
00:01:17 #1088 [Verbose] > "aa", "aa aa"
00:01:17 #1089 [Verbose] > "z", "z"
00:01:17 #1090 [Verbose] > }
00:01:17 #1091 [Verbose] > let rec rotateStringsTests = runAll (nameof rotateStringsTests) _count solutions
00:01:17 #1092 [Verbose] > testCases
00:01:17 #1093 [Verbose] > rotateStringsTests
00:01:17 #1094 [Verbose] > |> sortResultList
00:02:58 #1095 [Verbose] >
00:02:58 #1096 [Verbose] > ╭─[ 1.68m - stdout ]───────────────────────────────────────────────────────────╮
00:02:58 #1097 [Verbose] > │ │
00:02:58 #1098 [Verbose] > │ │
00:02:58 #1099 [Verbose] > │ Test: rotateStringsTests │
00:02:58 #1100 [Verbose] > │ │
00:02:58 #1101 [Verbose] > │ Solution: abc │
00:02:58 #1102 [Verbose] > │ Test case 1. A. Time: 1059L │
00:02:58 #1103 [Verbose] > │ Test case 2. B. Time: 1183L │
00:02:58 #1104 [Verbose] > │ Test case 3. C. Time: 1195L │
00:02:58 #1105 [Verbose] > │ Test case 4. CA. Time: 1540L │
00:02:58 #1106 [Verbose] > │ Test case 5. CB. Time: 1349L │
00:02:58 #1107 [Verbose] > │ Test case 6. D. Time: 1372L │
00:02:58 #1108 [Verbose] > │ Test case 7. E. Time: 1088L │
00:02:58 #1109 [Verbose] > │ Test case 8. F. Time: 1049L │
00:02:58 #1110 [Verbose] > │ Test case 9. FA. Time: 1148L │
00:02:58 #1111 [Verbose] > │ Test case 10. FB. Time: 1928L │
00:02:58 #1112 [Verbose] > │ Test case 11. FC. Time: 2410L │
00:02:58 #1113 [Verbose] > │ │
00:02:58 #1114 [Verbose] > │ Solution: abcde │
00:02:58 #1115 [Verbose] > │ Test case 1. A. Time: 1573L │
00:02:58 #1116 [Verbose] > │ Test case 2. B. Time: 1421L │
00:02:58 #1117 [Verbose] > │ Test case 3. C. Time: 1330L │
00:02:58 #1118 [Verbose] > │ Test case 4. CA. Time: 1536L │
00:02:58 #1119 [Verbose] > │ Test case 5. CB. Time: 1702L │
00:02:58 #1120 [Verbose] > │ Test case 6. D. Time: 1856L │
00:02:58 #1121 [Verbose] > │ Test case 7. E. Time: 1282L │
00:02:58 #1122 [Verbose] > │ Test case 8. F. Time: 1098L │
00:02:58 #1123 [Verbose] > │ Test case 9. FA. Time: 1342L │
00:02:58 #1124 [Verbose] > │ Test case 10. FB. Time: 1893L │
00:02:58 #1125 [Verbose] > │ Test case 11. FC. Time: 2590L │
00:02:58 #1126 [Verbose] > │ │
00:02:58 #1127 [Verbose] > │ Solution: abcdefghi │
00:02:58 #1128 [Verbose] > │ Test case 1. A. Time: 2374L │
00:02:58 #1129 [Verbose] > │ Test case 2. B. Time: 2249L │
00:02:58 #1130 [Verbose] > │ Test case 3. C. Time: 2168L │
00:02:58 #1131 [Verbose] > │ Test case 4. CA. Time: 2166L │
00:02:58 #1132 [Verbose] > │ Test case 5. CB. Time: 2572L │
00:02:58 #1133 [Verbose] > │ Test case 6. D. Time: 3799L │
00:02:58 #1134 [Verbose] > │ Test case 7. E. Time: 2109L │
00:02:58 #1135 [Verbose] > │ Test case 8. F. Time: 1687L │
00:02:58 #1136 [Verbose] > │ Test case 9. FA. Time: 2107L │
00:02:58 #1137 [Verbose] > │ Test case 10. FB. Time: 2801L │
00:02:58 #1138 [Verbose] > │ Test case 11. FC. Time: 3193L │
00:02:58 #1139 [Verbose] > │ │
00:02:58 #1140 [Verbose] > │ Solution: abab │
00:02:58 #1141 [Verbose] > │ Test case 1. A. Time: 1256L │
00:02:58 #1142 [Verbose] > │ Test case 2. B. Time: 1126L │
00:02:58 #1143 [Verbose] > │ Test case 3. C. Time: 1264L │
00:02:58 #1144 [Verbose] > │ Test case 4. CA. Time: 1371L │
00:02:58 #1145 [Verbose] > │ Test case 5. CB. Time: 1347L │
00:02:58 #1146 [Verbose] > │ Test case 6. D. Time: 1464L │
00:02:58 #1147 [Verbose] > │ Test case 7. E. Time: 1077L │
00:02:58 #1148 [Verbose] > │ Test case 8. F. Time: 915L │
00:02:58 #1149 [Verbose] > │ Test case 9. FA. Time: 1100L │
00:02:58 #1150 [Verbose] > │ Test case 10. FB. Time: 1720L │
00:02:58 #1151 [Verbose] > │ Test case 11. FC. Time: 2260L │
00:02:58 #1152 [Verbose] > │ │
00:02:58 #1153 [Verbose] > │ Solution: aa │
00:02:58 #1154 [Verbose] > │ Test case 1. A. Time: 756L │
00:02:58 #1155 [Verbose] > │ Test case 2. B. Time: 840L │
00:02:58 #1156 [Verbose] > │ Test case 3. C. Time: 849L │
00:02:58 #1157 [Verbose] > │ Test case 4. CA. Time: 1000L │
00:02:58 #1158 [Verbose] > │ Test case 5. CB. Time: 936L │
00:02:58 #1159 [Verbose] > │ Test case 6. D. Time: 868L │
00:02:58 #1160 [Verbose] > │ Test case 7. E. Time: 748L │
00:02:58 #1161 [Verbose] > │ Test case 8. F. Time: 592L │
00:02:58 #1162 [Verbose] > │ Test case 9. FA. Time: 739L │
00:02:58 #1163 [Verbose] > │ Test case 10. FB. Time: 1293L │
00:02:58 #1164 [Verbose] > │ Test case 11. FC. Time: 1967L │
00:02:58 #1165 [Verbose] > │ │
00:02:58 #1166 [Verbose] > │ Solution: z │
00:02:58 #1167 [Verbose] > │ Test case 1. A. Time: 413L │
00:02:58 #1168 [Verbose] > │ Test case 2. B. Time: 409L │
00:02:58 #1169 [Verbose] > │ Test case 3. C. Time: 575L │
00:02:58 #1170 [Verbose] > │ Test case 4. CA. Time: 921L │
00:02:58 #1171 [Verbose] > │ Test case 5. CB. Time: 602L │
00:02:58 #1172 [Verbose] > │ Test case 6. D. Time: 491L │
00:02:58 #1173 [Verbose] > │ Test case 7. E. Time: 401L │
00:02:58 #1174 [Verbose] > │ Test case 8. F. Time: 117L │
00:02:58 #1175 [Verbose] > │ Test case 9. FA. Time: 122L │
00:02:58 #1176 [Verbose] > │ Test case 10. FB. Time: 374L │
00:02:58 #1177 [Verbose] > │ Test case 11. FC. Time: 807L │
00:02:58 #1178 [Verbose] > │ │
00:02:58 #1179 [Verbose] > │ Input | Expected │
00:02:58 #1180 [Verbose] > │ │
00:02:58 #1181 [Verbose] > │ | Result │
00:02:58 #1182 [Verbose] > │ │
00:02:58 #1183 [Verbose] > │ | Best │
00:02:58 #1184 [Verbose] > │ --- | --- │
00:02:58 #1185 [Verbose] > │ │
00:02:58 #1186 [Verbose] > │ | --- │
00:02:58 #1187 [Verbose] > │ │
00:02:58 #1188 [Verbose] > │ | --- │
00:02:58 #1189 [Verbose] > │ abc | bca cab abc │
00:02:58 #1190 [Verbose] > │ │
00:02:58 #1191 [Verbose] > │ | bca cab abc │
00:02:58 #1192 [Verbose] > │ │
00:02:58 #1193 [Verbose] > │ | (8, 1049) │
00:02:58 #1194 [Verbose] > │ abcde | bcdea cdeab deabc eabcd abcde │
00:02:58 #1195 [Verbose] > │ | bcdea cdeab deabc eabcd abcde │
00:02:58 #1196 [Verbose] > │ | (8, 1098) │
00:02:58 #1197 [Verbose] > │ abcdefghi | bcdefghia cdefghiab defghiabc efghiabcd fghiabcde ghiabcdef │
00:02:58 #1198 [Verbose] > │ hiabcdefg iabcdefgh abcdefghi | bcdefghia cdefghiab defghiabc efghiabcd │
00:02:58 #1199 [Verbose] > │ fghiabcde ghiabcdef hiabcdefg iabcdefgh abcdefghi | (8, 1687) │
00:02:58 #1200 [Verbose] > │ abab | baba abab baba abab │
00:02:58 #1201 [Verbose] > │ | baba abab baba abab │
00:02:58 #1202 [Verbose] > │ | (8, 915) │
00:02:58 #1203 [Verbose] > │ aa | aa aa │
00:02:58 #1204 [Verbose] > │ │
00:02:58 #1205 [Verbose] > │ | aa aa │
00:02:58 #1206 [Verbose] > │ │
00:02:58 #1207 [Verbose] > │ | (8, 592) │
00:02:58 #1208 [Verbose] > │ z | z │
00:02:58 #1209 [Verbose] > │ │
00:02:58 #1210 [Verbose] > │ | z │
00:02:58 #1211 [Verbose] > │ │
00:02:58 #1212 [Verbose] > │ | (8, 117) │
00:02:58 #1213 [Verbose] > │ │
00:02:58 #1214 [Verbose] > │ Average Ranking │
00:02:58 #1215 [Verbose] > │ Test case 8. Average Time: 909L │
00:02:58 #1216 [Verbose] > │ Test case 9. Average Time: 1093L │
00:02:58 #1217 [Verbose] > │ Test case 7. Average Time: 1117L │
00:02:58 #1218 [Verbose] > │ Test case 2. Average Time: 1204L │
00:02:58 #1219 [Verbose] > │ Test case 3. Average Time: 1230L │
00:02:58 #1220 [Verbose] > │ Test case 1. Average Time: 1238L │
00:02:58 #1221 [Verbose] > │ Test case 5. Average Time: 1418L │
00:02:58 #1222 [Verbose] > │ Test case 4. Average Time: 1422L │
00:02:58 #1223 [Verbose] > │ Test case 6. Average Time: 1641L │
00:02:58 #1224 [Verbose] > │ Test case 10. Average Time: 1668L │
00:02:58 #1225 [Verbose] > │ Test case 11. Average Time: 2204L │
00:02:58 #1226 [Verbose] > │ │
00:02:58 #1227 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:58 #1228 [Verbose] >
00:02:58 #1229 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:02:58 #1230 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:58 #1231 [Verbose] > │ ## rotate_strings_tests │
00:02:58 #1232 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:58 #1233 [Verbose] >
00:02:58 #1234 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:58 #1235 [Verbose] > // // test
00:02:58 #1236 [Verbose] > // // timeout=60000
00:02:58 #1237 [Verbose] > // // print_code=true
00:02:58 #1238 [Verbose] >
00:02:58 #1239 [Verbose] > inl get_solutions () =
00:02:58 #1240 [Verbose] > [[
00:02:58 #1241 [Verbose] > // "A",
00:02:58 #1242 [Verbose] > // fun (input : string) =>
00:02:58 #1243 [Verbose] > // let resultList =
00:02:58 #1244 [Verbose] > // List.fold (fun acc x =>
00:02:58 #1245 [Verbose] > // let rotate (text : string) (letter : string) =
00:02:58 #1246 [Verbose] > text.Substring (1, input.Length - 1) + letter
00:02:58 #1247 [Verbose] > // [[ rotate (if acc.IsEmpty then input else acc.Head)
00:02:58 #1248 [Verbose] > (string x) ]] /@ acc
00:02:58 #1249 [Verbose] > // ) [[]] (Seq.toList input)
00:02:58 #1250 [Verbose] >
00:02:58 #1251 [Verbose] > // List.foldBack (fun acc x => x + acc + " ") resultList ""
00:02:58 #1252 [Verbose] > // |> fun x => x.TrimEnd ()
00:02:58 #1253 [Verbose] >
00:02:58 #1254 [Verbose] > // "B",
00:02:58 #1255 [Verbose] > // fun input =>
00:02:58 #1256 [Verbose] > // input
00:02:58 #1257 [Verbose] > // |> Seq.toList
00:02:58 #1258 [Verbose] > // |> List.fold (fun (acc : string list) letter =>
00:02:58 #1259 [Verbose] > // let last =
00:02:58 #1260 [Verbose] > // if acc.IsEmpty
00:02:58 #1261 [Verbose] > // then input
00:02:58 #1262 [Verbose] > // else acc.Head
00:02:58 #1263 [Verbose] >
00:02:58 #1264 [Verbose] > // let item = last.[[1 .. input.Length - 1]] + string letter
00:02:58 #1265 [Verbose] >
00:02:58 #1266 [Verbose] > // item :: acc
00:02:58 #1267 [Verbose] > // ) [[]]
00:02:58 #1268 [Verbose] > // |> List.rev
00:02:58 #1269 [Verbose] > // |> String.concat " "
00:02:58 #1270 [Verbose] >
00:02:58 #1271 [Verbose] > // "C",
00:02:58 #1272 [Verbose] > // fun input =>
00:02:58 #1273 [Verbose] > // input
00:02:58 #1274 [Verbose] > // |> Seq.toList
00:02:58 #1275 [Verbose] > // |> List.fold (fun (acc : list string) letter => acc.Head.[[ 1 ..
00:02:58 #1276 [Verbose] > input.Length - 1 ]] + string letter :: acc) [[ input ]]
00:02:58 #1277 [Verbose] > // |> List.rev
00:02:58 #1278 [Verbose] > // |> List.skip 1
00:02:58 #1279 [Verbose] > // |> String.concat " "
00:02:58 #1280 [Verbose] >
00:02:58 #1281 [Verbose] > // "CA",
00:02:58 #1282 [Verbose] > // fun input =>
00:02:58 #1283 [Verbose] > // input
00:02:58 #1284 [Verbose] > // |> Seq.fold (fun (acc : list string) letter => acc.Head.[[ 1 ..
00:02:58 #1285 [Verbose] > input.Length - 1 ]] + string letter :: acc) [[ input ]]
00:02:58 #1286 [Verbose] > // |> Seq.rev
00:02:58 #1287 [Verbose] > // |> Seq.skip 1
00:02:58 #1288 [Verbose] > // |> String.concat " "
00:02:58 #1289 [Verbose] >
00:02:58 #1290 [Verbose] > // "CB",
00:02:58 #1291 [Verbose] > // fun input =>
00:02:58 #1292 [Verbose] > // input
00:02:58 #1293 [Verbose] > // |> Seq.toArray
00:02:58 #1294 [Verbose] > // |> Array.fold (fun (acc : a _ string) letter => acc |>
00:02:58 #1295 [Verbose] > Array.append (a ;[[ acc.[[0]].[[ 1 .. input.Length - 1 ]] + string letter ]]))
00:02:58 #1296 [Verbose] > (a ;[[ input ]])
00:02:58 #1297 [Verbose] > // |> Array.rev
00:02:58 #1298 [Verbose] > // |> Array.skip 1
00:02:58 #1299 [Verbose] > // |> String.concat " "
00:02:58 #1300 [Verbose] >
00:02:58 #1301 [Verbose] > // "D",
00:02:58 #1302 [Verbose] > // fun input =>
00:02:58 #1303 [Verbose] > // input
00:02:58 #1304 [Verbose] > // |> Seq.toList
00:02:58 #1305 [Verbose] > // |> fun list =>
00:02:58 #1306 [Verbose] > // let rec loop (acc : list (list char)) = function
00:02:58 #1307 [Verbose] > // | _ when acc.Length = list.Length => acc
00:02:58 #1308 [Verbose] > // | head :: tail =>
00:02:58 #1309 [Verbose] > // let item = tail /@ [[ head ]]
00:02:58 #1310 [Verbose] > // loop (item :: acc) item
00:02:58 #1311 [Verbose] > // | [[]] => [[]]
00:02:58 #1312 [Verbose] > // loop [[]] list
00:02:58 #1313 [Verbose] > // |> List.rev
00:02:58 #1314 [Verbose] > // |> List.map (List.toArray >> String)
00:02:58 #1315 [Verbose] > // |> String.concat " "
00:02:58 #1316 [Verbose] >
00:02:58 #1317 [Verbose] > // "E",
00:02:58 #1318 [Verbose] > // fun input =>
00:02:58 #1319 [Verbose] > // input
00:02:58 #1320 [Verbose] > // |> Seq.toList
00:02:58 #1321 [Verbose] > // |> fun list =>
00:02:58 #1322 [Verbose] > // let rec loop (last : string) = function
00:02:58 #1323 [Verbose] > // | head :: tail =>
00:02:58 #1324 [Verbose] > // let item = last.[[1 .. input.Length - 1]] + string
00:02:58 #1325 [Verbose] > head
00:02:58 #1326 [Verbose] > // item :: loop item tail
00:02:58 #1327 [Verbose] > // | [[]] => [[]]
00:02:58 #1328 [Verbose] > // loop input list
00:02:58 #1329 [Verbose] > // |> String.concat " "
00:02:58 #1330 [Verbose] >
00:02:58 #1331 [Verbose] > "F",
00:02:58 #1332 [Verbose] > fun input =>
00:02:58 #1333 [Verbose] > // Array.singleton 0
00:02:58 #1334 [Verbose] > // |> Array.append [[| 1 .. input.Length - 1 |]]
00:02:58 #1335 [Verbose] > // |> Array.map (fun i -> input.[[ i .. ]] + input.[[ .. i - 1 ]])
00:02:58 #1336 [Verbose] > // |> String.concat " "
00:02:58 #1337 [Verbose] > inl input_length = input |> sm.length
00:02:58 #1338 [Verbose] > am.singleton 0i32
00:02:58 #1339 [Verbose] > |> am.append (am'.init_series 1 (input_length - 1) 1)
00:02:58 #1340 [Verbose] > |> am.map (fun i =>
00:02:58 #1341 [Verbose] > inl a = sm.slice input { from = i; to = input_length - 1 } :
00:02:58 #1342 [Verbose] > string
00:02:58 #1343 [Verbose] > inl b = sm.slice input { from = 0; to = i - 1 } : string
00:02:58 #1344 [Verbose] > $"!a + !b" : string
00:02:58 #1345 [Verbose] > )
00:02:58 #1346 [Verbose] > |> sm'.concat " "
00:02:58 #1347 [Verbose] >
00:02:58 #1348 [Verbose] > "FA",
00:02:58 #1349 [Verbose] > fun input =>
00:02:58 #1350 [Verbose] > // List.singleton 0
00:02:58 #1351 [Verbose] > // |> List.append [[ 1 .. input.Length - 1 ]]
00:02:58 #1352 [Verbose] > // // |> List.map (fun i => input.[[ i .. ]] + input.[[ .. i - 1 ]])
00:02:58 #1353 [Verbose] > // |> String.concat " "
00:02:58 #1354 [Verbose] > inl input_length = input |> sm.length
00:02:58 #1355 [Verbose] > listm.singleton 0i32
00:02:58 #1356 [Verbose] > |> listm.append (listm'.init_series 1 (input_length - 1) 1)
00:02:58 #1357 [Verbose] > |> listm.map (fun i =>
00:02:58 #1358 [Verbose] > inl a = sm.slice input { from = i; to = input_length - 1 } :
00:02:58 #1359 [Verbose] > string
00:02:58 #1360 [Verbose] > inl b = if i = 0 then "" else sm.slice input { from = 0; to = i
00:02:58 #1361 [Verbose] > - 1 } : string
00:02:58 #1362 [Verbose] > $"!a + !b" : string
00:02:58 #1363 [Verbose] > )
00:02:58 #1364 [Verbose] > |> listm.toArray
00:02:58 #1365 [Verbose] > |> fun x => x : a i32 _
00:02:58 #1366 [Verbose] > |> sm'.concat " "
00:02:58 #1367 [Verbose] >
00:02:58 #1368 [Verbose] > // "FB",
00:02:58 #1369 [Verbose] > // fun input =>
00:02:58 #1370 [Verbose] > // Seq.singleton 0
00:02:58 #1371 [Verbose] > // // |> Seq.append (seq { 1 .. input.Length - 1 })
00:02:58 #1372 [Verbose] > // // |> Seq.map (fun i => input.[[ i .. ]] + input.[[ .. i - 1 ]])
00:02:58 #1373 [Verbose] > // |> String.concat " "
00:02:58 #1374 [Verbose] >
00:02:58 #1375 [Verbose] > // "FC",
00:02:58 #1376 [Verbose] > // fun input =>
00:02:58 #1377 [Verbose] > // Array.singleton 0
00:02:58 #1378 [Verbose] > // |> Array.append (a ;[[ 1 .. input.Length - 1 ]])
00:02:58 #1379 [Verbose] > // // |> Array.Parallel.map (fun i => input.[[ i .. ]] + input.[[ ..
00:02:58 #1380 [Verbose] > i - 1 ]])
00:02:58 #1381 [Verbose] > // |> String.concat " "
00:02:58 #1382 [Verbose] > ]]
00:02:58 #1383 [Verbose] >
00:02:58 #1384 [Verbose] > inl rec rotate_strings_tests () =
00:02:58 #1385 [Verbose] > inl test_cases = [[
00:02:58 #1386 [Verbose] > "abc", "bca cab abc"
00:02:58 #1387 [Verbose] > "abcde", "bcdea cdeab deabc eabcd abcde"
00:02:58 #1388 [Verbose] > "abcdefghi", "bcdefghia cdefghiab defghiabc efghiabcd fghiabcde
00:02:58 #1389 [Verbose] > ghiabcdef hiabcdefg iabcdefgh abcdefghi"
00:02:58 #1390 [Verbose] > "abab", "baba abab baba abab"
00:02:58 #1391 [Verbose] > "aa", "aa aa"
00:02:58 #1392 [Verbose] > "z", "z"
00:02:58 #1393 [Verbose] > ]]
00:02:58 #1394 [Verbose] >
00:02:58 #1395 [Verbose] > inl solutions = get_solutions ()
00:02:58 #1396 [Verbose] >
00:02:58 #1397 [Verbose] > // inl is_fast () = true
00:02:58 #1398 [Verbose] >
00:02:58 #1399 [Verbose] > inl count =
00:02:58 #1400 [Verbose] > if is_fast ()
00:02:58 #1401 [Verbose] > then 1000i32
00:02:58 #1402 [Verbose] > else 2000000i32
00:02:58 #1403 [Verbose] >
00:02:58 #1404 [Verbose] > run_all (nameof rotate_strings_tests) count solutions test_cases
00:02:58 #1405 [Verbose] > |> sort_result_list
00:02:58 #1406 [Verbose] >
00:02:58 #1407 [Verbose] > rotate_strings_tests ()
00:02:58 #1408 [Verbose] > Building /tmp/!dotnet-repl/20240320-1238-3790-9048-9af82f733719/main.spi
00:03:14 #1409 [Verbose] >
00:03:14 #1410 [Verbose] > ╭─[ 16.07s - stdout ]──────────────────────────────────────────────────────────╮
00:03:14 #1411 [Verbose] > │ type UH0 = │
00:03:14 #1412 [Verbose] > │ | UH0_0 of string * string * UH0 │
00:03:14 #1413 [Verbose] > │ | UH0_1 │
00:03:14 #1414 [Verbose] > │ and Mut0 = {mutable l0 : uint64} │
00:03:14 #1415 [Verbose] > │ and Mut1 = {mutable l0 : int32} │
00:03:14 #1416 [Verbose] > │ and UH1 = │
00:03:14 #1417 [Verbose] > │ | UH1_0 of int32 * UH1 │
00:03:14 #1418 [Verbose] > │ | UH1_1 │
00:03:14 #1419 [Verbose] > │ and UH2 = │
00:03:14 #1420 [Verbose] > │ | UH2_0 of string * UH2 │
00:03:14 #1421 [Verbose] > │ | UH2_1 │
00:03:14 #1422 [Verbose] > │ and UH3 = │
00:03:14 #1423 [Verbose] > │ | UH3_0 of int32 * string * (string -> string) * UH3 │
00:03:14 #1424 [Verbose] > │ | UH3_1 │
00:03:14 #1425 [Verbose] > │ and [<Struct>] US0 = │
00:03:14 #1426 [Verbose] > │ | US0_0 │
00:03:14 #1427 [Verbose] > │ | US0_1 of f1_0 : System.ConsoleColor │
00:03:14 #1428 [Verbose] > │ and UH4 = │
00:03:14 #1429 [Verbose] > │ | UH4_0 of int64 * int64 * UH4 │
00:03:14 #1430 [Verbose] > │ | UH4_1 │
00:03:14 #1431 [Verbose] > │ and Mut2 = {mutable l0 : uint64; mutable l1 : UH4; mutable l2 : int64} │
00:03:14 #1432 [Verbose] > │ and UH5 = │
00:03:14 #1433 [Verbose] > │ | UH5_0 of UH2 * US0 * UH5 │
00:03:14 #1434 [Verbose] > │ | UH5_1 │
00:03:14 #1435 [Verbose] > │ and [<Struct>] US1 = │
00:03:14 #1436 [Verbose] > │ | US1_0 │
00:03:14 #1437 [Verbose] > │ | US1_1 of f1_0 : int64 │
00:03:14 #1438 [Verbose] > │ and UH6 = │
00:03:14 #1439 [Verbose] > │ | UH6_0 of int32 * int64 * UH6 │
00:03:14 #1440 [Verbose] > │ | UH6_1 │
00:03:14 #1441 [Verbose] > │ and Mut3 = {mutable l0 : uint64; mutable l1 : UH6; mutable l2 : int32} │
00:03:14 #1442 [Verbose] > │ and UH7 = │
00:03:14 #1443 [Verbose] > │ | UH7_0 of int32 * string * UH7 │
00:03:14 #1444 [Verbose] > │ | UH7_1 │
00:03:14 #1445 [Verbose] > │ let rec method2 (v0 : UH0, v1 : uint64) : uint64 = │
00:03:14 #1446 [Verbose] > │ match v0 with │
00:03:14 #1447 [Verbose] > │ | UH0_0(v2, v3, v4) -> (* Cons *) │
00:03:14 #1448 [Verbose] > │ let v5 : uint64 = v1 + 1UL │
00:03:14 #1449 [Verbose] > │ method2(v4, v5) │
00:03:14 #1450 [Verbose] > │ | UH0_1 -> (* Nil *) │
00:03:14 #1451 [Verbose] > │ v1 │
00:03:14 #1452 [Verbose] > │ and method3 (v0 : (struct (string * string) []), v1 : UH0, v2 : uint64) : │
00:03:14 #1453 [Verbose] > │ uint64 = │
00:03:14 #1454 [Verbose] > │ match v1 with │
00:03:14 #1455 [Verbose] > │ | UH0_0(v3, v4, v5) -> (* Cons *) │
00:03:14 #1456 [Verbose] > │ v0.[int v2] <- struct (v3, v4) │
00:03:14 #1457 [Verbose] > │ let v6 : uint64 = v2 + 1UL │
00:03:14 #1458 [Verbose] > │ method3(v0, v5, v6) │
00:03:14 #1459 [Verbose] > │ | UH0_1 -> (* Nil *) │
00:03:14 #1460 [Verbose] > │ v2 │
00:03:14 #1461 [Verbose] > │ and method1 (v0 : UH0) : (struct (string * string) []) = │
00:03:14 #1462 [Verbose] > │ let v1 : uint64 = 0UL │
00:03:14 #1463 [Verbose] > │ let v2 : uint64 = method2(v0, v1) │
00:03:14 #1464 [Verbose] > │ let v3 : (struct (string * string) []) = Array.zeroCreate<struct (string │
00:03:14 #1465 [Verbose] > │ * string)> (System.Convert.ToInt32(v2)) │
00:03:14 #1466 [Verbose] > │ let v4 : uint64 = 0UL │
00:03:14 #1467 [Verbose] > │ let v5 : uint64 = method3(v3, v0, v4) │
00:03:14 #1468 [Verbose] > │ v3 │
00:03:14 #1469 [Verbose] > │ and method4 (v0 : uint64, v1 : Mut0) : bool = │
00:03:14 #1470 [Verbose] > │ let v2 : uint64 = v1.l0 │
00:03:14 #1471 [Verbose] > │ let v3 : bool = v2 < v0 │
00:03:14 #1472 [Verbose] > │ v3 │
00:03:14 #1473 [Verbose] > │ and method5 (v0 : int32, v1 : Mut1) : bool = │
00:03:14 #1474 [Verbose] > │ let v2 : int32 = v1.l0 │
00:03:14 #1475 [Verbose] > │ let v3 : bool = v2 < v0 │
00:03:14 #1476 [Verbose] > │ v3 │
00:03:14 #1477 [Verbose] > │ and closure1 () (v0 : string) : string = │
00:03:14 #1478 [Verbose] > │ let v1 : int32 = v0.Length │
00:03:14 #1479 [Verbose] > │ let v2 : (int32 []) = Array.zeroCreate<int32> (1) │
00:03:14 #1480 [Verbose] > │ v2.[int 0] <- 0 │
00:03:14 #1481 [Verbose] > │ let v3 : int32 = v1 - 1 │
00:03:14 #1482 [Verbose] > │ let v4 : int32 = v3 - 1 │
00:03:14 #1483 [Verbose] > │ let v5 : int32 = v4 + 1 │
00:03:14 #1484 [Verbose] > │ let v6 : (int32 []) = Array.zeroCreate<int32> (v5) │
00:03:14 #1485 [Verbose] > │ let v7 : Mut1 = {l0 = 0} : Mut1 │
00:03:14 #1486 [Verbose] > │ while method5(v5, v7) do │
00:03:14 #1487 [Verbose] > │ let v9 : int32 = v7.l0 │
00:03:14 #1488 [Verbose] > │ let v10 : int32 = 1 + v9 │
00:03:14 #1489 [Verbose] > │ v6.[int v9] <- v10 │
00:03:14 #1490 [Verbose] > │ let v11 : int32 = v9 + 1 │
00:03:14 #1491 [Verbose] > │ v7.l0 <- v11 │
00:03:14 #1492 [Verbose] > │ () │
00:03:14 #1493 [Verbose] > │ let v12 : int32 = v6.Length │
00:03:14 #1494 [Verbose] > │ let v13 : int32 = v2.Length │
00:03:14 #1495 [Verbose] > │ let v14 : int32 = v12 + v13 │
00:03:14 #1496 [Verbose] > │ let v15 : (int32 []) = Array.zeroCreate<int32> (v14) │
00:03:14 #1497 [Verbose] > │ let v16 : Mut1 = {l0 = 0} : Mut1 │
00:03:14 #1498 [Verbose] > │ while method5(v14, v16) do │
00:03:14 #1499 [Verbose] > │ let v18 : int32 = v16.l0 │
00:03:14 #1500 [Verbose] > │ let v19 : bool = v18 < v12 │
00:03:14 #1501 [Verbose] > │ let v23 : int32 = │
00:03:14 #1502 [Verbose] > │ if v19 then │
00:03:14 #1503 [Verbose] > │ let v20 : int32 = v6.[int v18] │
00:03:14 #1504 [Verbose] > │ v20 │
00:03:14 #1505 [Verbose] > │ else │
00:03:14 #1506 [Verbose] > │ let v21 : int32 = v18 - v12 │
00:03:14 #1507 [Verbose] > │ let v22 : int32 = v2.[int v21] │
00:03:14 #1508 [Verbose] > │ v22 │
00:03:14 #1509 [Verbose] > │ v15.[int v18] <- v23 │
00:03:14 #1510 [Verbose] > │ let v24 : int32 = v18 + 1 │
00:03:14 #1511 [Verbose] > │ v16.l0 <- v24 │
00:03:14 #1512 [Verbose] > │ () │
00:03:14 #1513 [Verbose] > │ let v25 : int32 = v15.Length │
00:03:14 #1514 [Verbose] > │ let v26 : (string []) = Array.zeroCreate<string> (v25) │
00:03:14 #1515 [Verbose] > │ let v27 : Mut1 = {l0 = 0} : Mut1 │
00:03:14 #1516 [Verbose] > │ while method5(v25, v27) do │
00:03:14 #1517 [Verbose] > │ let v29 : int32 = v27.l0 │
00:03:14 #1518 [Verbose] > │ let v30 : int32 = v15.[int v29] │
00:03:14 #1519 [Verbose] > │ let v31 : string = v0.[int v30..int v3] │
00:03:14 #1520 [Verbose] > │ let v32 : int32 = v30 - 1 │
00:03:14 #1521 [Verbose] > │ let v33 : string = v0.[int 0..int v32] │
00:03:14 #1522 [Verbose] > │ let v34 : string = v31 + v33 │
00:03:14 #1523 [Verbose] > │ v26.[int v29] <- v34 │
00:03:14 #1524 [Verbose] > │ let v35 : int32 = v29 + 1 │
00:03:14 #1525 [Verbose] > │ v27.l0 <- v35 │
00:03:14 #1526 [Verbose] > │ () │
00:03:14 #1527 [Verbose] > │ let v36 : string = " " │
00:03:14 #1528 [Verbose] > │ let v37 : string = v26 |> String.concat v36 │
00:03:14 #1529 [Verbose] > │ v37 │
00:03:14 #1530 [Verbose] > │ and method6 (v0 : float, v1 : float) : UH1 = │
00:03:14 #1531 [Verbose] > │ let v2 : bool = v1 < v0 │
00:03:14 #1532 [Verbose] > │ if v2 then │
00:03:14 #1533 [Verbose] > │ let v3 : int32 = int32 v1 │
00:03:14 #1534 [Verbose] > │ let v4 : int32 = 1 + v3 │
00:03:14 #1535 [Verbose] > │ let v5 : float = v1 + 1.0 │
00:03:14 #1536 [Verbose] > │ let v6 : UH1 = method6(v0, v5) │
00:03:14 #1537 [Verbose] > │ UH1_0(v4, v6) │
00:03:14 #1538 [Verbose] > │ else │
00:03:14 #1539 [Verbose] > │ UH1_1 │
00:03:14 #1540 [Verbose] > │ and method7 (v0 : UH1, v1 : UH1) : UH1 = │
00:03:14 #1541 [Verbose] > │ match v0 with │
00:03:14 #1542 [Verbose] > │ | UH1_0(v2, v3) -> (* Cons *) │
00:03:14 #1543 [Verbose] > │ let v4 : UH1 = method7(v3, v1) │
00:03:14 #1544 [Verbose] > │ UH1_0(v2, v4) │
00:03:14 #1545 [Verbose] > │ | UH1_1 -> (* Nil *) │
00:03:14 #1546 [Verbose] > │ v1 │
00:03:14 #1547 [Verbose] > │ and method8 (v0 : string, v1 : int32, v2 : UH1, v3 : UH2) : UH2 = │
00:03:14 #1548 [Verbose] > │ match v2 with │
00:03:14 #1549 [Verbose] > │ | UH1_0(v4, v5) -> (* Cons *) │
00:03:14 #1550 [Verbose] > │ let v6 : UH2 = method8(v0, v1, v5, v3) │
00:03:14 #1551 [Verbose] > │ let v7 : int32 = v1 - 1 │
00:03:14 #1552 [Verbose] > │ let v8 : string = v0.[int v4..int v7] │
00:03:14 #1553 [Verbose] > │ let v9 : bool = v4 = 0 │
00:03:14 #1554 [Verbose] > │ let v13 : string = │
00:03:14 #1555 [Verbose] > │ if v9 then │
00:03:14 #1556 [Verbose] > │ let v10 : string = "" │
00:03:14 #1557 [Verbose] > │ v10 │
00:03:14 #1558 [Verbose] > │ else │
00:03:14 #1559 [Verbose] > │ let v11 : int32 = v4 - 1 │
00:03:14 #1560 [Verbose] > │ let v12 : string = v0.[int 0..int v11] │
00:03:14 #1561 [Verbose] > │ v12 │
00:03:14 #1562 [Verbose] > │ let v14 : string = v8 + v13 │
00:03:14 #1563 [Verbose] > │ UH2_0(v14, v6) │
00:03:14 #1564 [Verbose] > │ | UH1_1 -> (* Nil *) │
00:03:14 #1565 [Verbose] > │ v3 │
00:03:14 #1566 [Verbose] > │ and method10 (v0 : UH2, v1 : int32) : int32 = │
00:03:14 #1567 [Verbose] > │ match v0 with │
00:03:14 #1568 [Verbose] > │ | UH2_0(v2, v3) -> (* Cons *) │
00:03:14 #1569 [Verbose] > │ let v4 : int32 = v1 + 1 │
00:03:14 #1570 [Verbose] > │ method10(v3, v4) │
00:03:14 #1571 [Verbose] > │ | UH2_1 -> (* Nil *) │
00:03:14 #1572 [Verbose] > │ v1 │
00:03:14 #1573 [Verbose] > │ and method11 (v0 : (string []), v1 : UH2, v2 : int32) : int32 = │
00:03:14 #1574 [Verbose] > │ match v1 with │
00:03:14 #1575 [Verbose] > │ | UH2_0(v3, v4) -> (* Cons *) │
00:03:14 #1576 [Verbose] > │ v0.[int v2] <- v3 │
00:03:14 #1577 [Verbose] > │ let v5 : int32 = v2 + 1 │
00:03:14 #1578 [Verbose] > │ method11(v0, v4, v5) │
00:03:14 #1579 [Verbose] > │ | UH2_1 -> (* Nil *) │
00:03:14 #1580 [Verbose] > │ v2 │
00:03:14 #1581 [Verbose] > │ and method9 (v0 : UH2) : (string []) = │
00:03:14 #1582 [Verbose] > │ let v1 : int32 = 0 │
00:03:14 #1583 [Verbose] > │ let v2 : int32 = method10(v0, v1) │
00:03:14 #1584 [Verbose] > │ let v3 : (string []) = Array.zeroCreate<string> (v2) │
00:03:14 #1585 [Verbose] > │ let v4 : int32 = 0 │
00:03:14 #1586 [Verbose] > │ let v5 : int32 = method11(v3, v0, v4) │
00:03:14 #1587 [Verbose] > │ v3 │
00:03:14 #1588 [Verbose] > │ and closure2 () (v0 : string) : string = │
00:03:14 #1589 [Verbose] > │ let v1 : int32 = v0.Length │
00:03:14 #1590 [Verbose] > │ let v2 : int32 = v1 - 1 │
00:03:14 #1591 [Verbose] > │ let v3 : int32 = v2 - 1 │
00:03:14 #1592 [Verbose] > │ let v4 : float = float v3 │
00:03:14 #1593 [Verbose] > │ let v5 : float = v4 + 1.0 │
00:03:14 #1594 [Verbose] > │ let v6 : float = 0.0 │
00:03:14 #1595 [Verbose] > │ let v7 : UH1 = method6(v5, v6) │
00:03:14 #1596 [Verbose] > │ let v8 : int32 = 0 │
00:03:14 #1597 [Verbose] > │ let v9 : UH1 = UH1_1 │
00:03:14 #1598 [Verbose] > │ let v10 : UH1 = UH1_0(v8, v9) │
00:03:14 #1599 [Verbose] > │ let v11 : UH1 = method7(v7, v10) │
00:03:14 #1600 [Verbose] > │ let v12 : UH2 = UH2_1 │
00:03:14 #1601 [Verbose] > │ let v13 : UH2 = method8(v0, v1, v11, v12) │
00:03:14 #1602 [Verbose] > │ let v14 : (string []) = method9(v13) │
00:03:14 #1603 [Verbose] > │ let v15 : string = " " │
00:03:14 #1604 [Verbose] > │ let v16 : string = v14 |> String.concat v15 │
00:03:14 #1605 [Verbose] > │ v16 │
00:03:14 #1606 [Verbose] > │ and method13 (v0 : UH3, v1 : uint64) : uint64 = │
00:03:14 #1607 [Verbose] > │ match v0 with │
00:03:14 #1608 [Verbose] > │ | UH3_0(v2, v3, v4, v5) -> (* Cons *) │
00:03:14 #1609 [Verbose] > │ let v6 : uint64 = v1 + 1UL │
00:03:14 #1610 [Verbose] > │ method13(v5, v6) │
00:03:14 #1611 [Verbose] > │ | UH3_1 -> (* Nil *) │
00:03:14 #1612 [Verbose] > │ v1 │
00:03:14 #1613 [Verbose] > │ and method14 (v0 : (struct (int32 * string * (string -> string)) []), v1 : │
00:03:14 #1614 [Verbose] > │ UH3, v2 : uint64) : uint64 = │
00:03:14 #1615 [Verbose] > │ match v1 with │
00:03:14 #1616 [Verbose] > │ | UH3_0(v3, v4, v5, v6) -> (* Cons *) │
00:03:14 #1617 [Verbose] > │ v0.[int v2] <- struct (v3, v4, v5) │
00:03:14 #1618 [Verbose] > │ let v7 : uint64 = v2 + 1UL │
00:03:14 #1619 [Verbose] > │ method14(v0, v6, v7) │
00:03:14 #1620 [Verbose] > │ | UH3_1 -> (* Nil *) │
00:03:14 #1621 [Verbose] > │ v2 │
00:03:14 #1622 [Verbose] > │ and method12 (v0 : UH3) : (struct (int32 * string * (string -> string)) []) │
00:03:14 #1623 [Verbose] > │ = │
00:03:14 #1624 [Verbose] > │ let v1 : uint64 = 0UL │
00:03:14 #1625 [Verbose] > │ let v2 : uint64 = method13(v0, v1) │
00:03:14 #1626 [Verbose] > │ let v3 : (struct (int32 * string * (string -> string)) []) = │
00:03:14 #1627 [Verbose] > │ Array.zeroCreate<struct (int32 * string * (string -> string))> │
00:03:14 #1628 [Verbose] > │ (System.Convert.ToInt32(v2)) │
00:03:14 #1629 [Verbose] > │ let v4 : uint64 = 0UL │
00:03:14 #1630 [Verbose] > │ let v5 : uint64 = method14(v3, v0, v4) │
00:03:14 #1631 [Verbose] > │ v3 │
00:03:14 #1632 [Verbose] > │ and method15 (v0 : Mut1) : bool = │
00:03:14 #1633 [Verbose] > │ let v1 : int32 = v0.l0 │
00:03:14 #1634 [Verbose] > │ let v2 : bool = v1 < 2000001 │
00:03:14 #1635 [Verbose] > │ v2 │
00:03:14 #1636 [Verbose] > │ and closure3 (v0 : string, v1 : (string -> string)) (v2 : int32) : string = │
00:03:14 #1637 [Verbose] > │ v1 v0 │
00:03:14 #1638 [Verbose] > │ and method16 (v0 : string, v1 : (string []), v2 : uint64) : bool = │
00:03:14 #1639 [Verbose] > │ let v3 : uint64 = System.Convert.ToUInt64 v1.Length │
00:03:14 #1640 [Verbose] > │ let v4 : bool = v2 < v3 │
00:03:14 #1641 [Verbose] > │ if v4 then │
00:03:14 #1642 [Verbose] > │ let v5 : string = v1.[int v2] │
00:03:14 #1643 [Verbose] > │ let v6 : bool = v0 = v5 │
00:03:14 #1644 [Verbose] > │ if v6 then │
00:03:14 #1645 [Verbose] > │ let v7 : uint64 = v2 + 1UL │
00:03:14 #1646 [Verbose] > │ method16(v0, v1, v7) │
00:03:14 #1647 [Verbose] > │ else │
00:03:14 #1648 [Verbose] > │ false │
00:03:14 #1649 [Verbose] > │ else │
00:03:14 #1650 [Verbose] > │ true │
00:03:14 #1651 [Verbose] > │ and method17 (v0 : uint64, v1 : Mut2) : bool = │
00:03:14 #1652 [Verbose] > │ let v2 : uint64 = v1.l0 │
00:03:14 #1653 [Verbose] > │ let v3 : bool = v2 < v0 │
00:03:14 #1654 [Verbose] > │ v3 │
00:03:14 #1655 [Verbose] > │ and method18 (v0 : UH4, v1 : UH4) : UH4 = │
00:03:14 #1656 [Verbose] > │ match v0 with │
00:03:14 #1657 [Verbose] > │ | UH4_0(v2, v3, v4) -> (* Cons *) │
00:03:14 #1658 [Verbose] > │ let v5 : UH4 = UH4_0(v2, v3, v1) │
00:03:14 #1659 [Verbose] > │ method18(v4, v5) │
00:03:14 #1660 [Verbose] > │ | UH4_1 -> (* Nil *) │
00:03:14 #1661 [Verbose] > │ v1 │
00:03:14 #1662 [Verbose] > │ and method20 (v0 : UH4, v1 : int32) : int32 = │
00:03:14 #1663 [Verbose] > │ match v0 with │
00:03:14 #1664 [Verbose] > │ | UH4_0(v2, v3, v4) -> (* Cons *) │
00:03:14 #1665 [Verbose] > │ let v5 : int32 = v1 + 1 │
00:03:14 #1666 [Verbose] > │ method20(v4, v5) │
00:03:14 #1667 [Verbose] > │ | UH4_1 -> (* Nil *) │
00:03:14 #1668 [Verbose] > │ v1 │
00:03:14 #1669 [Verbose] > │ and method21 (v0 : (struct (int64 * int64) []), v1 : UH4, v2 : int32) : │
00:03:14 #1670 [Verbose] > │ int32 = │
00:03:14 #1671 [Verbose] > │ match v1 with │
00:03:14 #1672 [Verbose] > │ | UH4_0(v3, v4, v5) -> (* Cons *) │
00:03:14 #1673 [Verbose] > │ v0.[int v2] <- struct (v3, v4) │
00:03:14 #1674 [Verbose] > │ let v6 : int32 = v2 + 1 │
00:03:14 #1675 [Verbose] > │ method21(v0, v5, v6) │
00:03:14 #1676 [Verbose] > │ | UH4_1 -> (* Nil *) │
00:03:14 #1677 [Verbose] > │ v2 │
00:03:14 #1678 [Verbose] > │ and method19 (v0 : UH4) : (struct (int64 * int64) []) = │
00:03:14 #1679 [Verbose] > │ let v1 : int32 = 0 │
00:03:14 #1680 [Verbose] > │ let v2 : int32 = method20(v0, v1) │
00:03:14 #1681 [Verbose] > │ let v3 : (struct (int64 * int64) []) = Array.zeroCreate<struct (int64 * │
00:03:14 #1682 [Verbose] > │ int64)> (v2) │
00:03:14 #1683 [Verbose] > │ let v4 : int32 = 0 │
00:03:14 #1684 [Verbose] > │ let v5 : int32 = method21(v3, v0, v4) │
00:03:14 #1685 [Verbose] > │ v3 │
00:03:14 #1686 [Verbose] > │ and closure4 () struct (v0 : int64, v1 : int64) : int64 = │
00:03:14 #1687 [Verbose] > │ v1 │
00:03:14 #1688 [Verbose] > │ and method23 (v0 : UH5, v1 : uint64) : uint64 = │
00:03:14 #1689 [Verbose] > │ match v0 with │
00:03:14 #1690 [Verbose] > │ | UH5_0(v2, v3, v4) -> (* Cons *) │
00:03:14 #1691 [Verbose] > │ let v5 : uint64 = v1 + 1UL │
00:03:14 #1692 [Verbose] > │ method23(v4, v5) │
00:03:14 #1693 [Verbose] > │ | UH5_1 -> (* Nil *) │
00:03:14 #1694 [Verbose] > │ v1 │
00:03:14 #1695 [Verbose] > │ and method24 (v0 : (struct (UH2 * US0) []), v1 : UH5, v2 : uint64) : uint64 │
00:03:14 #1696 [Verbose] > │ = │
00:03:14 #1697 [Verbose] > │ match v1 with │
00:03:14 #1698 [Verbose] > │ | UH5_0(v3, v4, v5) -> (* Cons *) │
00:03:14 #1699 [Verbose] > │ v0.[int v2] <- struct (v3, v4) │
00:03:14 #1700 [Verbose] > │ let v6 : uint64 = v2 + 1UL │
00:03:14 #1701 [Verbose] > │ method24(v0, v5, v6) │
00:03:14 #1702 [Verbose] > │ | UH5_1 -> (* Nil *) │
00:03:14 #1703 [Verbose] > │ v2 │
00:03:14 #1704 [Verbose] > │ and method22 (v0 : UH5) : (struct (UH2 * US0) []) = │
00:03:14 #1705 [Verbose] > │ let v1 : uint64 = 0UL │
00:03:14 #1706 [Verbose] > │ let v2 : uint64 = method23(v0, v1) │
00:03:14 #1707 [Verbose] > │ let v3 : (struct (UH2 * US0) []) = Array.zeroCreate<struct (UH2 * US0)> │
00:03:14 #1708 [Verbose] > │ (System.Convert.ToInt32(v2)) │
00:03:14 #1709 [Verbose] > │ let v4 : uint64 = 0UL │
00:03:14 #1710 [Verbose] > │ let v5 : uint64 = method24(v3, v0, v4) │
00:03:14 #1711 [Verbose] > │ v3 │
00:03:14 #1712 [Verbose] > │ and method26 (v0 : UH2, v1 : uint64) : uint64 = │
00:03:14 #1713 [Verbose] > │ match v0 with │
00:03:14 #1714 [Verbose] > │ | UH2_0(v2, v3) -> (* Cons *) │
00:03:14 #1715 [Verbose] > │ let v4 : uint64 = v1 + 1UL │
00:03:14 #1716 [Verbose] > │ method26(v3, v4) │
00:03:14 #1717 [Verbose] > │ | UH2_1 -> (* Nil *) │
00:03:14 #1718 [Verbose] > │ v1 │
00:03:14 #1719 [Verbose] > │ and method27 (v0 : (string []), v1 : UH2, v2 : uint64) : uint64 = │
00:03:14 #1720 [Verbose] > │ match v1 with │
00:03:14 #1721 [Verbose] > │ | UH2_0(v3, v4) -> (* Cons *) │
00:03:14 #1722 [Verbose] > │ v0.[int v2] <- v3 │
00:03:14 #1723 [Verbose] > │ let v5 : uint64 = v2 + 1UL │
00:03:14 #1724 [Verbose] > │ method27(v0, v4, v5) │
00:03:14 #1725 [Verbose] > │ | UH2_1 -> (* Nil *) │
00:03:14 #1726 [Verbose] > │ v2 │
00:03:14 #1727 [Verbose] > │ and method25 (v0 : UH2) : (string []) = │
00:03:14 #1728 [Verbose] > │ let v1 : uint64 = 0UL │
00:03:14 #1729 [Verbose] > │ let v2 : uint64 = method26(v0, v1) │
00:03:14 #1730 [Verbose] > │ let v3 : (string []) = Array.zeroCreate<string> │
00:03:14 #1731 [Verbose] > │ (System.Convert.ToInt32(v2)) │
00:03:14 #1732 [Verbose] > │ let v4 : uint64 = 0UL │
00:03:14 #1733 [Verbose] > │ let v5 : uint64 = method27(v3, v0, v4) │
00:03:14 #1734 [Verbose] > │ v3 │
00:03:14 #1735 [Verbose] > │ and closure5 () (v0 : int64) : US1 = │
00:03:14 #1736 [Verbose] > │ US1_1(v0) │
00:03:14 #1737 [Verbose] > │ and method28 (v0 : uint64, v1 : Mut3) : bool = │
00:03:14 #1738 [Verbose] > │ let v2 : uint64 = v1.l0 │
00:03:14 #1739 [Verbose] > │ let v3 : bool = v2 < v0 │
00:03:14 #1740 [Verbose] > │ v3 │
00:03:14 #1741 [Verbose] > │ and method29 (v0 : UH6, v1 : UH6) : UH6 = │
00:03:14 #1742 [Verbose] > │ match v0 with │
00:03:14 #1743 [Verbose] > │ | UH6_0(v2, v3, v4) -> (* Cons *) │
00:03:14 #1744 [Verbose] > │ let v5 : UH6 = UH6_0(v2, v3, v1) │
00:03:14 #1745 [Verbose] > │ method29(v4, v5) │
00:03:14 #1746 [Verbose] > │ | UH6_1 -> (* Nil *) │
00:03:14 #1747 [Verbose] > │ v1 │
00:03:14 #1748 [Verbose] > │ and method31 (v0 : UH6, v1 : int32) : int32 = │
00:03:14 #1749 [Verbose] > │ match v0 with │
00:03:14 #1750 [Verbose] > │ | UH6_0(v2, v3, v4) -> (* Cons *) │
00:03:14 #1751 [Verbose] > │ let v5 : int32 = v1 + 1 │
00:03:14 #1752 [Verbose] > │ method31(v4, v5) │
00:03:14 #1753 [Verbose] > │ | UH6_1 -> (* Nil *) │
00:03:14 #1754 [Verbose] > │ v1 │
00:03:14 #1755 [Verbose] > │ and method32 (v0 : (struct (int32 * int64) []), v1 : UH6, v2 : int32) : │
00:03:14 #1756 [Verbose] > │ int32 = │
00:03:14 #1757 [Verbose] > │ match v1 with │
00:03:14 #1758 [Verbose] > │ | UH6_0(v3, v4, v5) -> (* Cons *) │
00:03:14 #1759 [Verbose] > │ v0.[int v2] <- struct (v3, v4) │
00:03:14 #1760 [Verbose] > │ let v6 : int32 = v2 + 1 │
00:03:14 #1761 [Verbose] > │ method32(v0, v5, v6) │
00:03:14 #1762 [Verbose] > │ | UH6_1 -> (* Nil *) │
00:03:14 #1763 [Verbose] > │ v2 │
00:03:14 #1764 [Verbose] > │ and method30 (v0 : UH6) : (struct (int32 * int64) []) = │
00:03:14 #1765 [Verbose] > │ let v1 : int32 = 0 │
00:03:14 #1766 [Verbose] > │ let v2 : int32 = method31(v0, v1) │
00:03:14 #1767 [Verbose] > │ let v3 : (struct (int32 * int64) []) = Array.zeroCreate<struct (int32 * │
00:03:14 #1768 [Verbose] > │ int64)> (v2) │
00:03:14 #1769 [Verbose] > │ let v4 : int32 = 0 │
00:03:14 #1770 [Verbose] > │ let v5 : int32 = method32(v3, v0, v4) │
00:03:14 #1771 [Verbose] > │ v3 │
00:03:14 #1772 [Verbose] > │ and method33 (v0 : UH2, v1 : UH7, v2 : int32) : struct (UH7 * int32) = │
00:03:14 #1773 [Verbose] > │ match v0 with │
00:03:14 #1774 [Verbose] > │ | UH2_0(v3, v4) -> (* Cons *) │
00:03:14 #1775 [Verbose] > │ let v5 : int32 = v2 + 1 │
00:03:14 #1776 [Verbose] > │ let v6 : UH7 = UH7_0(v2, v3, v1) │
00:03:14 #1777 [Verbose] > │ method33(v4, v6, v5) │
00:03:14 #1778 [Verbose] > │ | UH2_1 -> (* Nil *) │
00:03:14 #1779 [Verbose] > │ struct (v1, v2) │
00:03:14 #1780 [Verbose] > │ and method34 (v0 : UH7, v1 : UH7) : UH7 = │
00:03:14 #1781 [Verbose] > │ match v0 with │
00:03:14 #1782 [Verbose] > │ | UH7_0(v2, v3, v4) -> (* Cons *) │
00:03:14 #1783 [Verbose] > │ let v5 : UH7 = UH7_0(v2, v3, v1) │
00:03:14 #1784 [Verbose] > │ method34(v4, v5) │
00:03:14 #1785 [Verbose] > │ | UH7_1 -> (* Nil *) │
00:03:14 #1786 [Verbose] > │ v1 │
00:03:14 #1787 [Verbose] > │ and method35 (v0 : Map<int32, int64>, v1 : UH7, v2 : UH2) : UH2 = │
00:03:14 #1788 [Verbose] > │ match v1 with │
00:03:14 #1789 [Verbose] > │ | UH7_0(v3, v4, v5) -> (* Cons *) │
00:03:14 #1790 [Verbose] > │ let v6 : UH2 = method35(v0, v5, v2) │
00:03:14 #1791 [Verbose] > │ let v7 : int64 = v0.[v3] │
00:03:14 #1792 [Verbose] > │ let v8 : int32 = int32 v7 │
00:03:14 #1793 [Verbose] > │ let v9 : string = v4.PadRight v8 │
00:03:14 #1794 [Verbose] > │ UH2_0(v9, v6) │
00:03:14 #1795 [Verbose] > │ | UH7_1 -> (* Nil *) │
00:03:14 #1796 [Verbose] > │ v2 │
00:03:14 #1797 [Verbose] > │ and method37 (v0 : UH6, v1 : uint64) : uint64 = │
00:03:14 #1798 [Verbose] > │ match v0 with │
00:03:14 #1799 [Verbose] > │ | UH6_0(v2, v3, v4) -> (* Cons *) │
00:03:14 #1800 [Verbose] > │ let v5 : uint64 = v1 + 1UL │
00:03:14 #1801 [Verbose] > │ method37(v4, v5) │
00:03:14 #1802 [Verbose] > │ | UH6_1 -> (* Nil *) │
00:03:14 #1803 [Verbose] > │ v1 │
00:03:14 #1804 [Verbose] > │ and method38 (v0 : (struct (int32 * int64) []), v1 : UH6, v2 : uint64) : │
00:03:14 #1805 [Verbose] > │ uint64 = │
00:03:14 #1806 [Verbose] > │ match v1 with │
00:03:14 #1807 [Verbose] > │ | UH6_0(v3, v4, v5) -> (* Cons *) │
00:03:14 #1808 [Verbose] > │ v0.[int v2] <- struct (v3, v4) │
00:03:14 #1809 [Verbose] > │ let v6 : uint64 = v2 + 1UL │
00:03:14 #1810 [Verbose] > │ method38(v0, v5, v6) │
00:03:14 #1811 [Verbose] > │ | UH6_1 -> (* Nil *) │
00:03:14 #1812 [Verbose] > │ v2 │
00:03:14 #1813 [Verbose] > │ and method36 (v0 : UH6) : (struct (int32 * int64) []) = │
00:03:14 #1814 [Verbose] > │ let v1 : uint64 = 0UL │
00:03:14 #1815 [Verbose] > │ let v2 : uint64 = method37(v0, v1) │
00:03:14 #1816 [Verbose] > │ let v3 : (struct (int32 * int64) []) = Array.zeroCreate<struct (int32 * │
00:03:14 #1817 [Verbose] > │ int64)> (System.Convert.ToInt32(v2)) │
00:03:14 #1818 [Verbose] > │ let v4 : uint64 = 0UL │
00:03:14 #1819 [Verbose] > │ let v5 : uint64 = method38(v3, v0, v4) │
00:03:14 #1820 [Verbose] > │ v3 │
00:03:14 #1821 [Verbose] > │ and closure6 () struct (v0 : int32, v1 : int64) : int64 = │
00:03:14 #1822 [Verbose] > │ v1 │
00:03:14 #1823 [Verbose] > │ and closure0 () () : unit = │
00:03:14 #1824 [Verbose] > │ let v0 : (unit -> unit) = closure0() │
00:03:14 #1825 [Verbose] > │ let v1 : string = nameof v0 │
00:03:14 #1826 [Verbose] > │ let v2 : string = "" │
00:03:14 #1827 [Verbose] > │ System.Console.WriteLine v2 │
00:03:14 #1828 [Verbose] > │ System.Console.WriteLine v2 │
00:03:14 #1829 [Verbose] > │ let v3 : string = $"Test: {v1}" │
00:03:14 #1830 [Verbose] > │ System.Console.WriteLine v3 │
00:03:14 #1831 [Verbose] > │ let v4 : string = "abc" │
00:03:14 #1832 [Verbose] > │ let v5 : string = "bca cab abc" │
00:03:14 #1833 [Verbose] > │ let v6 : string = "abcde" │
00:03:14 #1834 [Verbose] > │ let v7 : string = "bcdea cdeab deabc eabcd abcde" │
00:03:14 #1835 [Verbose] > │ let v8 : string = "abcdefghi" │
00:03:14 #1836 [Verbose] > │ let v9 : string = "bcdefghia cdefghiab defghiabc efghiabcd fghiabcde │
00:03:14 #1837 [Verbose] > │ ghiabcdef hiabcdefg iabcdefgh abcdefghi" │
00:03:14 #1838 [Verbose] > │ let v10 : string = "abab" │
00:03:14 #1839 [Verbose] > │ let v11 : string = "baba abab baba abab" │
00:03:14 #1840 [Verbose] > │ let v12 : string = "aa" │
00:03:14 #1841 [Verbose] > │ let v13 : string = "aa aa" │
00:03:14 #1842 [Verbose] > │ let v14 : string = "z" │
00:03:14 #1843 [Verbose] > │ let v15 : UH0 = UH0_1 │
00:03:14 #1844 [Verbose] > │ let v16 : UH0 = UH0_0(v14, v14, v15) │
00:03:14 #1845 [Verbose] > │ let v17 : UH0 = UH0_0(v12, v13, v16) │
00:03:14 #1846 [Verbose] > │ let v18 : UH0 = UH0_0(v10, v11, v17) │
00:03:14 #1847 [Verbose] > │ let v19 : UH0 = UH0_0(v8, v9, v18) │
00:03:14 #1848 [Verbose] > │ let v20 : UH0 = UH0_0(v6, v7, v19) │
00:03:14 #1849 [Verbose] > │ let v21 : UH0 = UH0_0(v4, v5, v20) │
00:03:14 #1850 [Verbose] > │ let v22 : (struct (string * string) []) = method1(v21) │
00:03:14 #1851 [Verbose] > │ let v23 : uint64 = System.Convert.ToUInt64 v22.Length │
00:03:14 #1852 [Verbose] > │ let v24 : (struct (string * string * string * (int64 [])) []) = │
00:03:14 #1853 [Verbose] > │ Array.zeroCreate<struct (string * string * string * (int64 []))> │
00:03:14 #1854 [Verbose] > │ (System.Convert.ToInt32(v23)) │
00:03:14 #1855 [Verbose] > │ let v25 : Mut0 = {l0 = 0UL} : Mut0 │
00:03:14 #1856 [Verbose] > │ while method4(v23, v25) do │
00:03:14 #1857 [Verbose] > │ let v27 : uint64 = v25.l0 │
00:03:14 #1858 [Verbose] > │ let struct (v28 : string, v29 : string) = v22.[int v27] │
00:03:14 #1859 [Verbose] > │ let v30 : string = $"%A{v28}" │
00:03:14 #1860 [Verbose] > │ System.Console.WriteLine v2 │
00:03:14 #1861 [Verbose] > │ let v31 : string = $"Solution: {v30} " │
00:03:14 #1862 [Verbose] > │ System.Console.WriteLine v31 │
00:03:14 #1863 [Verbose] > │ let v32 : int32 = 0 │
00:03:14 #1864 [Verbose] > │ let v33 : string = "F" │
00:03:14 #1865 [Verbose] > │ let v34 : (string -> string) = closure1() │
00:03:14 #1866 [Verbose] > │ let v35 : int32 = 1 │
00:03:14 #1867 [Verbose] > │ let v36 : string = "FA" │
00:03:14 #1868 [Verbose] > │ let v37 : (string -> string) = closure2() │
00:03:14 #1869 [Verbose] > │ let v38 : UH3 = UH3_1 │
00:03:14 #1870 [Verbose] > │ let v39 : UH3 = UH3_0(v35, v36, v37, v38) │
00:03:14 #1871 [Verbose] > │ let v40 : UH3 = UH3_0(v32, v33, v34, v39) │
00:03:14 #1872 [Verbose] > │ let v41 : (struct (int32 * string * (string -> string)) []) = │
00:03:14 #1873 [Verbose] > │ method12(v40) │
00:03:14 #1874 [Verbose] > │ let v42 : uint64 = System.Convert.ToUInt64 v41.Length │
00:03:14 #1875 [Verbose] > │ let v43 : (struct (string * int64) []) = Array.zeroCreate<struct │
00:03:14 #1876 [Verbose] > │ (string * int64)> (System.Convert.ToInt32(v42)) │
00:03:14 #1877 [Verbose] > │ let v44 : Mut0 = {l0 = 0UL} : Mut0 │
00:03:14 #1878 [Verbose] > │ while method4(v42, v44) do │
00:03:14 #1879 [Verbose] > │ let v46 : uint64 = v44.l0 │
00:03:14 #1880 [Verbose] > │ let struct (v47 : int32, v48 : string, v49 : (string -> string)) │
00:03:14 #1881 [Verbose] > │ = v41.[int v46] │
00:03:14 #1882 [Verbose] > │ let mutable result = None │
00:03:14 #1883 [Verbose] > │ #if FABLE_COMPILER_RUST │
00:03:14 #1884 [Verbose] > │ #if !WASM │
00:03:14 #1885 [Verbose] > │ () │
00:03:14 #1886 [Verbose] > │ #else │
00:03:14 #1887 [Verbose] > │ () │
00:03:14 #1888 [Verbose] > │ #endif │
00:03:14 #1889 [Verbose] > │ #else │
00:03:14 #1890 [Verbose] > │ System.GC.Collect () │
00:03:14 #1891 [Verbose] > │ () │
00:03:14 #1892 [Verbose] > │ #endif │
00:03:14 #1893 [Verbose] > │ |> fun x -> result <- Some x │
00:03:14 #1894 [Verbose] > │ result |> Option.get │
00:03:14 #1895 [Verbose] > │ let v50 : (unit -> System.Diagnostics.Stopwatch) = │
00:03:14 #1896 [Verbose] > │ System.Diagnostics.Stopwatch │
00:03:14 #1897 [Verbose] > │ let v51 : System.Diagnostics.Stopwatch = v50 () │
00:03:14 #1898 [Verbose] > │ v51.Start () │
00:03:14 #1899 [Verbose] > │ let v52 : int64 = v51.ElapsedMilliseconds │
00:03:14 #1900 [Verbose] > │ let v53 : (int32 []) = Array.zeroCreate<int32> (2000001) │
00:03:14 #1901 [Verbose] > │ let v54 : Mut1 = {l0 = 0} : Mut1 │
00:03:14 #1902 [Verbose] > │ while method15(v54) do │
00:03:14 #1903 [Verbose] > │ let v56 : int32 = v54.l0 │
00:03:14 #1904 [Verbose] > │ v53.[int v56] <- v56 │
00:03:14 #1905 [Verbose] > │ let v57 : int32 = v56 + 1 │
00:03:14 #1906 [Verbose] > │ v54.l0 <- v57 │
00:03:14 #1907 [Verbose] > │ () │
00:03:14 #1908 [Verbose] > │ let v58 : (int32 -> string) = closure3(v28, v49) │
00:03:14 #1909 [Verbose] > │ let v59 : (string []) = v53 |> Array.Parallel.map v58 │
00:03:14 #1910 [Verbose] > │ let v60 : int32 = v59.Length │
00:03:14 #1911 [Verbose] > │ let v61 : int32 = v60 - 1 │
00:03:14 #1912 [Verbose] > │ let v62 : string = v59.[int v61] │
00:03:14 #1913 [Verbose] > │ let v63 : int64 = v51.ElapsedMilliseconds │
00:03:14 #1914 [Verbose] > │ let v64 : int64 = v63 - v52 │
00:03:14 #1915 [Verbose] > │ let v65 : string = $"Test case {v47 + 1}. {v48}. Time: {v64} " │
00:03:14 #1916 [Verbose] > │ System.Console.WriteLine v65 │
00:03:14 #1917 [Verbose] > │ v43.[int v46] <- struct (v62, v64) │
00:03:14 #1918 [Verbose] > │ let v66 : uint64 = v46 + 1UL │
00:03:14 #1919 [Verbose] > │ v44.l0 <- v66 │
00:03:14 #1920 [Verbose] > │ () │
00:03:14 #1921 [Verbose] > │ let v67 : uint64 = System.Convert.ToUInt64 v43.Length │
00:03:14 #1922 [Verbose] > │ let v68 : (string []) = Array.zeroCreate<string> │
00:03:14 #1923 [Verbose] > │ (System.Convert.ToInt32(v67)) │
00:03:14 #1924 [Verbose] > │ let v69 : Mut0 = {l0 = 0UL} : Mut0 │
00:03:14 #1925 [Verbose] > │ while method4(v67, v69) do │
00:03:14 #1926 [Verbose] > │ let v71 : uint64 = v69.l0 │
00:03:14 #1927 [Verbose] > │ let struct (v72 : string, v73 : int64) = v43.[int v71] │
00:03:14 #1928 [Verbose] > │ v68.[int v71] <- v72 │
00:03:14 #1929 [Verbose] > │ let v74 : uint64 = v71 + 1UL │
00:03:14 #1930 [Verbose] > │ v69.l0 <- v74 │
00:03:14 #1931 [Verbose] > │ () │
00:03:14 #1932 [Verbose] > │ let v75 : uint64 = System.Convert.ToUInt64 v68.Length │
00:03:14 #1933 [Verbose] > │ let v76 : bool = v75 <= 1UL │
00:03:14 #1934 [Verbose] > │ if v76 then │
00:03:14 #1935 [Verbose] > │ () │
00:03:14 #1936 [Verbose] > │ else │
00:03:14 #1937 [Verbose] > │ let v77 : string = v68.[int 0UL] │
00:03:14 #1938 [Verbose] > │ let v78 : uint64 = 0UL │
00:03:14 #1939 [Verbose] > │ let v79 : bool = method16(v77, v68, v78) │
00:03:14 #1940 [Verbose] > │ if v79 then │
00:03:14 #1941 [Verbose] > │ () │
00:03:14 #1942 [Verbose] > │ else │
00:03:14 #1943 [Verbose] > │ let v80 : string = $"Challenge error: {v68}" │
00:03:14 #1944 [Verbose] > │ failwith<unit> v80 │
00:03:14 #1945 [Verbose] > │ let v81 : string = $"%A{v29}" │
00:03:14 #1946 [Verbose] > │ let v82 : (string []) = Array.zeroCreate<string> │
00:03:14 #1947 [Verbose] > │ (System.Convert.ToInt32(v67)) │
00:03:14 #1948 [Verbose] > │ let v83 : Mut0 = {l0 = 0UL} : Mut0 │
00:03:14 #1949 [Verbose] > │ while method4(v67, v83) do │
00:03:14 #1950 [Verbose] > │ let v85 : uint64 = v83.l0 │
00:03:14 #1951 [Verbose] > │ let struct (v86 : string, v87 : int64) = v43.[int v85] │
00:03:14 #1952 [Verbose] > │ v82.[int v85] <- v86 │
00:03:14 #1953 [Verbose] > │ let v88 : uint64 = v85 + 1UL │
00:03:14 #1954 [Verbose] > │ v83.l0 <- v88 │
00:03:14 #1955 [Verbose] > │ () │
00:03:14 #1956 [Verbose] > │ let v89 : string = v82.[int 0UL] │
00:03:14 #1957 [Verbose] > │ let v90 : string = $"%A{v89}" │
00:03:14 #1958 [Verbose] > │ let v91 : (int64 []) = Array.zeroCreate<int64> │
00:03:14 #1959 [Verbose] > │ (System.Convert.ToInt32(v67)) │
00:03:14 #1960 [Verbose] > │ let v92 : Mut0 = {l0 = 0UL} : Mut0 │
00:03:14 #1961 [Verbose] > │ while method4(v67, v92) do │
00:03:14 #1962 [Verbose] > │ let v94 : uint64 = v92.l0 │
00:03:14 #1963 [Verbose] > │ let struct (v95 : string, v96 : int64) = v43.[int v94] │
00:03:14 #1964 [Verbose] > │ v91.[int v94] <- v96 │
00:03:14 #1965 [Verbose] > │ let v97 : uint64 = v94 + 1UL │
00:03:14 #1966 [Verbose] > │ v92.l0 <- v97 │
00:03:14 #1967 [Verbose] > │ () │
00:03:14 #1968 [Verbose] > │ v24.[int v27] <- struct (v81, v30, v90, v91) │
00:03:14 #1969 [Verbose] > │ let v98 : uint64 = v27 + 1UL │
00:03:14 #1970 [Verbose] > │ v25.l0 <- v98 │
00:03:14 #1971 [Verbose] > │ () │
00:03:14 #1972 [Verbose] > │ let v99 : uint64 = System.Convert.ToUInt64 v24.Length │
00:03:14 #1973 [Verbose] > │ let v100 : (struct (UH2 * US0) []) = Array.zeroCreate<struct (UH2 * │
00:03:14 #1974 [Verbose] > │ US0)> (System.Convert.ToInt32(v99)) │
00:03:14 #1975 [Verbose] > │ let v101 : Mut0 = {l0 = 0UL} : Mut0 │
00:03:14 #1976 [Verbose] > │ while method4(v99, v101) do │
00:03:14 #1977 [Verbose] > │ let v103 : uint64 = v101.l0 │
00:03:14 #1978 [Verbose] > │ let struct (v104 : string, v105 : string, v106 : string, v107 : │
00:03:14 #1979 [Verbose] > │ (int64 [])) = v24.[int v103] │
00:03:14 #1980 [Verbose] > │ let v108 : uint64 = System.Convert.ToUInt64 v107.Length │
00:03:14 #1981 [Verbose] > │ let v109 : UH4 = UH4_1 │
00:03:14 #1982 [Verbose] > │ let v110 : Mut2 = {l0 = 0UL; l1 = v109; l2 = 0L} : Mut2 │
00:03:14 #1983 [Verbose] > │ while method17(v108, v110) do │
00:03:14 #1984 [Verbose] > │ let v112 : uint64 = v110.l0 │
00:03:14 #1985 [Verbose] > │ let struct (v113 : UH4, v114 : int64) = v110.l1, v110.l2 │
00:03:14 #1986 [Verbose] > │ let v115 : int64 = v107.[int v112] │
00:03:14 #1987 [Verbose] > │ let v116 : int64 = v114 + 1L │
00:03:14 #1988 [Verbose] > │ let v117 : uint64 = v112 + 1UL │
00:03:14 #1989 [Verbose] > │ let v118 : UH4 = UH4_0(v114, v115, v113) │
00:03:14 #1990 [Verbose] > │ v110.l0 <- v117 │
00:03:14 #1991 [Verbose] > │ v110.l1 <- v118 │
00:03:14 #1992 [Verbose] > │ v110.l2 <- v116 │
00:03:14 #1993 [Verbose] > │ () │
00:03:14 #1994 [Verbose] > │ let struct (v119 : UH4, v120 : int64) = v110.l1, v110.l2 │
00:03:14 #1995 [Verbose] > │ let v121 : UH4 = UH4_1 │
00:03:14 #1996 [Verbose] > │ let v122 : UH4 = method18(v119, v121) │
00:03:14 #1997 [Verbose] > │ let v123 : (struct (int64 * int64) []) = method19(v122) │
00:03:14 #1998 [Verbose] > │ let v124 : int32 = v123.Length │
00:03:14 #1999 [Verbose] > │ let v125 : (struct (int64 * int64) []) = Array.zeroCreate<struct │
00:03:14 #2000 [Verbose] > │ (int64 * int64)> (v124) │
00:03:14 #2001 [Verbose] > │ let v126 : Mut1 = {l0 = 0} : Mut1 │
00:03:14 #2002 [Verbose] > │ while method5(v124, v126) do │
00:03:14 #2003 [Verbose] > │ let v128 : int32 = v126.l0 │
00:03:14 #2004 [Verbose] > │ let struct (v129 : int64, v130 : int64) = v123.[int v128] │
00:03:14 #2005 [Verbose] > │ let v131 : int64 = v129 + 1L │
00:03:14 #2006 [Verbose] > │ v125.[int v128] <- struct (v131, v130) │
00:03:14 #2007 [Verbose] > │ let v132 : int32 = v128 + 1 │
00:03:14 #2008 [Verbose] > │ v126.l0 <- v132 │
00:03:14 #2009 [Verbose] > │ () │
00:03:14 #2010 [Verbose] > │ let v133 : (struct (int64 * int64) -> int64) = closure4() │
00:03:14 #2011 [Verbose] > │ let v134 : (struct (int64 * int64) []) = v125 |> Array.sortBy v133 │
00:03:14 #2012 [Verbose] > │ let struct (v135 : int64, v136 : int64) = v134.[int 0] │
00:03:14 #2013 [Verbose] > │ let v137 : string = $"%A{struct (v135, v136)}" │
00:03:14 #2014 [Verbose] > │ let v138 : bool = v104 = v106 │
00:03:14 #2015 [Verbose] > │ let v143 : US0 = │
00:03:14 #2016 [Verbose] > │ if v138 then │
00:03:14 #2017 [Verbose] > │ let v139 : System.ConsoleColor = │
00:03:14 #2018 [Verbose] > │ System.ConsoleColor.DarkGreen │
00:03:14 #2019 [Verbose] > │ US0_1(v139) │
00:03:14 #2020 [Verbose] > │ else │
00:03:14 #2021 [Verbose] > │ let v141 : System.ConsoleColor = System.ConsoleColor.DarkRed │
00:03:14 #2022 [Verbose] > │ US0_1(v141) │
00:03:14 #2023 [Verbose] > │ let v144 : UH2 = UH2_1 │
00:03:14 #2024 [Verbose] > │ let v145 : UH2 = UH2_0(v137, v144) │
00:03:14 #2025 [Verbose] > │ let v146 : UH2 = UH2_0(v106, v145) │
00:03:14 #2026 [Verbose] > │ let v147 : UH2 = UH2_0(v104, v146) │
00:03:14 #2027 [Verbose] > │ let v148 : UH2 = UH2_0(v105, v147) │
00:03:14 #2028 [Verbose] > │ v100.[int v103] <- struct (v148, v143) │
00:03:14 #2029 [Verbose] > │ let v149 : uint64 = v103 + 1UL │
00:03:14 #2030 [Verbose] > │ v101.l0 <- v149 │
00:03:14 #2031 [Verbose] > │ () │
00:03:14 #2032 [Verbose] > │ let v150 : string = "Input" │
00:03:14 #2033 [Verbose] > │ let v151 : string = "Expected" │
00:03:14 #2034 [Verbose] > │ let v152 : string = "Result" │
00:03:14 #2035 [Verbose] > │ let v153 : string = "Best" │
00:03:14 #2036 [Verbose] > │ let v154 : UH2 = UH2_1 │
00:03:14 #2037 [Verbose] > │ let v155 : UH2 = UH2_0(v153, v154) │
00:03:14 #2038 [Verbose] > │ let v156 : UH2 = UH2_0(v152, v155) │
00:03:14 #2039 [Verbose] > │ let v157 : UH2 = UH2_0(v151, v156) │
00:03:14 #2040 [Verbose] > │ let v158 : UH2 = UH2_0(v150, v157) │
00:03:14 #2041 [Verbose] > │ let v159 : US0 = US0_0 │
00:03:14 #2042 [Verbose] > │ let v160 : string = "---" │
00:03:14 #2043 [Verbose] > │ let v161 : UH2 = UH2_1 │
00:03:14 #2044 [Verbose] > │ let v162 : UH2 = UH2_0(v160, v161) │
00:03:14 #2045 [Verbose] > │ let v163 : UH2 = UH2_0(v160, v162) │
00:03:14 #2046 [Verbose] > │ let v164 : UH2 = UH2_0(v160, v163) │
00:03:14 #2047 [Verbose] > │ let v165 : UH2 = UH2_0(v160, v164) │
00:03:14 #2048 [Verbose] > │ let v166 : US0 = US0_0 │
00:03:14 #2049 [Verbose] > │ let v167 : UH5 = UH5_1 │
00:03:14 #2050 [Verbose] > │ let v168 : UH5 = UH5_0(v165, v166, v167) │
00:03:14 #2051 [Verbose] > │ let v169 : UH5 = UH5_0(v158, v159, v168) │
00:03:14 #2052 [Verbose] > │ let v170 : (struct (UH2 * US0) []) = method22(v169) │
00:03:14 #2053 [Verbose] > │ let v171 : uint64 = System.Convert.ToUInt64 v170.Length │
00:03:14 #2054 [Verbose] > │ let v172 : uint64 = System.Convert.ToUInt64 v100.Length │
00:03:14 #2055 [Verbose] > │ let v173 : uint64 = v171 + v172 │
00:03:14 #2056 [Verbose] > │ let v174 : (struct (UH2 * US0) []) = Array.zeroCreate<struct (UH2 * │
00:03:14 #2057 [Verbose] > │ US0)> (System.Convert.ToInt32(v173)) │
00:03:14 #2058 [Verbose] > │ let v175 : Mut0 = {l0 = 0UL} : Mut0 │
00:03:14 #2059 [Verbose] > │ while method4(v173, v175) do │
00:03:14 #2060 [Verbose] > │ let v177 : uint64 = v175.l0 │
00:03:14 #2061 [Verbose] > │ let v178 : bool = v177 < v171 │
00:03:14 #2062 [Verbose] > │ let struct (v184 : UH2, v185 : US0) = │
00:03:14 #2063 [Verbose] > │ if v178 then │
00:03:14 #2064 [Verbose] > │ let struct (v179 : UH2, v180 : US0) = v170.[int v177] │
00:03:14 #2065 [Verbose] > │ struct (v179, v180) │
00:03:14 #2066 [Verbose] > │ else │
00:03:14 #2067 [Verbose] > │ let v181 : uint64 = v177 - v171 │
00:03:14 #2068 [Verbose] > │ let struct (v182 : UH2, v183 : US0) = v100.[int v181] │
00:03:14 #2069 [Verbose] > │ struct (v182, v183) │
00:03:14 #2070 [Verbose] > │ v174.[int v177] <- struct (v184, v185) │
00:03:14 #2071 [Verbose] > │ let v186 : uint64 = v177 + 1UL │
00:03:14 #2072 [Verbose] > │ v175.l0 <- v186 │
00:03:14 #2073 [Verbose] > │ () │
00:03:14 #2074 [Verbose] > │ let v187 : uint64 = System.Convert.ToUInt64 v174.Length │
00:03:14 #2075 [Verbose] > │ let v188 : ((string []) []) = Array.zeroCreate<(string [])> │
00:03:14 #2076 [Verbose] > │ (System.Convert.ToInt32(v187)) │
00:03:14 #2077 [Verbose] > │ let v189 : Mut0 = {l0 = 0UL} : Mut0 │
00:03:14 #2078 [Verbose] > │ while method4(v187, v189) do │
00:03:14 #2079 [Verbose] > │ let v191 : uint64 = v189.l0 │
00:03:14 #2080 [Verbose] > │ let struct (v192 : UH2, v193 : US0) = v174.[int v191] │
00:03:14 #2081 [Verbose] > │ let v194 : (string []) = method25(v192) │
00:03:14 #2082 [Verbose] > │ v188.[int v191] <- v194 │
00:03:14 #2083 [Verbose] > │ let v195 : uint64 = v191 + 1UL │
00:03:14 #2084 [Verbose] > │ v189.l0 <- v195 │
00:03:14 #2085 [Verbose] > │ () │
00:03:14 #2086 [Verbose] > │ let v196 : ((string []) []) = v188 |> Array.transpose │
00:03:14 #2087 [Verbose] > │ let v197 : uint64 = System.Convert.ToUInt64 v196.Length │
00:03:14 #2088 [Verbose] > │ let v198 : (int64 []) = Array.zeroCreate<int64> │
00:03:14 #2089 [Verbose] > │ (System.Convert.ToInt32(v197)) │
00:03:14 #2090 [Verbose] > │ let v199 : Mut0 = {l0 = 0UL} : Mut0 │
00:03:14 #2091 [Verbose] > │ while method4(v197, v199) do │
00:03:14 #2092 [Verbose] > │ let v201 : uint64 = v199.l0 │
00:03:14 #2093 [Verbose] > │ let v202 : (string []) = v196.[int v201] │
00:03:14 #2094 [Verbose] > │ let v203 : uint64 = System.Convert.ToUInt64 v202.Length │
00:03:14 #2095 [Verbose] > │ let v204 : (int64 []) = Array.zeroCreate<int64> │
00:03:14 #2096 [Verbose] > │ (System.Convert.ToInt32(v203)) │
00:03:14 #2097 [Verbose] > │ let v205 : Mut0 = {l0 = 0UL} : Mut0 │
00:03:14 #2098 [Verbose] > │ while method4(v203, v205) do │
00:03:14 #2099 [Verbose] > │ let v207 : uint64 = v205.l0 │
00:03:14 #2100 [Verbose] > │ let v208 : string = v202.[int v207] │
00:03:14 #2101 [Verbose] > │ let v209 : int64 = System.Convert.ToInt64 v208.Length │
00:03:14 #2102 [Verbose] > │ v204.[int v207] <- v209 │
00:03:14 #2103 [Verbose] > │ let v210 : uint64 = v207 + 1UL │
00:03:14 #2104 [Verbose] > │ v205.l0 <- v210 │
00:03:14 #2105 [Verbose] > │ () │
00:03:14 #2106 [Verbose] > │ let v211 : (int64 []) = v204 |> Array.sortDescending │
00:03:14 #2107 [Verbose] > │ let v212 : int64 option = v211 |> Array.tryItem 0 │
00:03:14 #2108 [Verbose] > │ let v213 : (int64 -> US1) = closure5() │
00:03:14 #2109 [Verbose] > │ let v214 : US1 = US1_0 │
00:03:14 #2110 [Verbose] > │ let v215 : US1 = v212 |> Option.map v213 |> Option.defaultValue v214 │
00:03:14 #2111 [Verbose] > │ let v218 : int64 = │
00:03:14 #2112 [Verbose] > │ match v215 with │
00:03:14 #2113 [Verbose] > │ | US1_0 -> (* None *) │
00:03:14 #2114 [Verbose] > │ 0L │
00:03:14 #2115 [Verbose] > │ | US1_1(v216) -> (* Some *) │
00:03:14 #2116 [Verbose] > │ v216 │
00:03:14 #2117 [Verbose] > │ v198.[int v201] <- v218 │
00:03:14 #2118 [Verbose] > │ let v219 : uint64 = v201 + 1UL │
00:03:14 #2119 [Verbose] > │ v199.l0 <- v219 │
00:03:14 #2120 [Verbose] > │ () │
00:03:14 #2121 [Verbose] > │ let v220 : uint64 = System.Convert.ToUInt64 v198.Length │
00:03:14 #2122 [Verbose] > │ let v221 : UH6 = UH6_1 │
00:03:14 #2123 [Verbose] > │ let v222 : Mut3 = {l0 = 0UL; l1 = v221; l2 = 0} : Mut3 │
00:03:14 #2124 [Verbose] > │ while method28(v220, v222) do │
00:03:14 #2125 [Verbose] > │ let v224 : uint64 = v222.l0 │
00:03:14 #2126 [Verbose] > │ let struct (v225 : UH6, v226 : int32) = v222.l1, v222.l2 │
00:03:14 #2127 [Verbose] > │ let v227 : int64 = v198.[int v224] │
00:03:14 #2128 [Verbose] > │ let v228 : int32 = v226 + 1 │
00:03:14 #2129 [Verbose] > │ let v229 : uint64 = v224 + 1UL │
00:03:14 #2130 [Verbose] > │ let v230 : UH6 = UH6_0(v226, v227, v225) │
00:03:14 #2131 [Verbose] > │ v222.l0 <- v229 │
00:03:14 #2132 [Verbose] > │ v222.l1 <- v230 │
00:03:14 #2133 [Verbose] > │ v222.l2 <- v228 │
00:03:14 #2134 [Verbose] > │ () │
00:03:14 #2135 [Verbose] > │ let struct (v231 : UH6, v232 : int32) = v222.l1, v222.l2 │
00:03:14 #2136 [Verbose] > │ let v233 : UH6 = UH6_1 │
00:03:14 #2137 [Verbose] > │ let v234 : UH6 = method29(v231, v233) │
00:03:14 #2138 [Verbose] > │ let v235 : (struct (int32 * int64) []) = method30(v234) │
00:03:14 #2139 [Verbose] > │ let v236 : Map<int32, int64> = v235 |> Array.map (fun (struct (a, b)) -> │
00:03:14 #2140 [Verbose] > │ a, b) |> Map.ofArray │
00:03:14 #2141 [Verbose] > │ let v237 : (struct ((string []) * US0) []) = Array.zeroCreate<struct │
00:03:14 #2142 [Verbose] > │ ((string []) * US0)> (System.Convert.ToInt32(v187)) │
00:03:14 #2143 [Verbose] > │ let v238 : Mut0 = {l0 = 0UL} : Mut0 │
00:03:14 #2144 [Verbose] > │ while method4(v187, v238) do │
00:03:14 #2145 [Verbose] > │ let v240 : uint64 = v238.l0 │
00:03:14 #2146 [Verbose] > │ let struct (v241 : UH2, v242 : US0) = v174.[int v240] │
00:03:14 #2147 [Verbose] > │ let v243 : UH7 = UH7_1 │
00:03:14 #2148 [Verbose] > │ let v244 : int32 = 0 │
00:03:14 #2149 [Verbose] > │ let struct (v245 : UH7, v246 : int32) = method33(v241, v243, v244) │
00:03:14 #2150 [Verbose] > │ let v247 : UH7 = UH7_1 │
00:03:14 #2151 [Verbose] > │ let v248 : UH7 = method34(v245, v247) │
00:03:14 #2152 [Verbose] > │ let v249 : UH2 = UH2_1 │
00:03:14 #2153 [Verbose] > │ let v250 : UH2 = method35(v236, v248, v249) │
00:03:14 #2154 [Verbose] > │ let v251 : (string []) = method9(v250) │
00:03:14 #2155 [Verbose] > │ v237.[int v240] <- struct (v251, v242) │
00:03:14 #2156 [Verbose] > │ let v252 : uint64 = v240 + 1UL │
00:03:14 #2157 [Verbose] > │ v238.l0 <- v252 │
00:03:14 #2158 [Verbose] > │ () │
00:03:14 #2159 [Verbose] > │ System.Console.WriteLine v2 │
00:03:14 #2160 [Verbose] > │ let v253 : uint64 = System.Convert.ToUInt64 v237.Length │
00:03:14 #2161 [Verbose] > │ let v254 : Mut0 = {l0 = 0UL} : Mut0 │
00:03:14 #2162 [Verbose] > │ while method4(v253, v254) do │
00:03:14 #2163 [Verbose] > │ let v256 : uint64 = v254.l0 │
00:03:14 #2164 [Verbose] > │ let struct (v257 : (string []), v258 : US0) = v237.[int v256] │
00:03:14 #2165 [Verbose] > │ match v258 with │
00:03:14 #2166 [Verbose] > │ | US0_0 -> (* None *) │
00:03:14 #2167 [Verbose] > │ let mutable result = None │
00:03:14 #2168 [Verbose] > │ #if FABLE_COMPILER_RUST │
00:03:14 #2169 [Verbose] > │ #if !WASM │
00:03:14 #2170 [Verbose] > │ () │
00:03:14 #2171 [Verbose] > │ #else │
00:03:14 #2172 [Verbose] > │ () │
00:03:14 #2173 [Verbose] > │ #endif │
00:03:14 #2174 [Verbose] > │ #else │
00:03:14 #2175 [Verbose] > │ System.Console.ResetColor () │
00:03:14 #2176 [Verbose] > │ () │
00:03:14 #2177 [Verbose] > │ #endif │
00:03:14 #2178 [Verbose] > │ |> fun x -> result <- Some x │
00:03:14 #2179 [Verbose] > │ result |> Option.get │
00:03:14 #2180 [Verbose] > │ () │
00:03:14 #2181 [Verbose] > │ | US0_1(v259) -> (* Some *) │
00:03:14 #2182 [Verbose] > │ let mutable result = None │
00:03:14 #2183 [Verbose] > │ #if FABLE_COMPILER_RUST │
00:03:14 #2184 [Verbose] > │ #if !WASM │
00:03:14 #2185 [Verbose] > │ () │
00:03:14 #2186 [Verbose] > │ #else │
00:03:14 #2187 [Verbose] > │ () │
00:03:14 #2188 [Verbose] > │ #endif │
00:03:14 #2189 [Verbose] > │ #else │
00:03:14 #2190 [Verbose] > │ System.Console.ForegroundColor <- v259 │
00:03:14 #2191 [Verbose] > │ () │
00:03:14 #2192 [Verbose] > │ #endif │
00:03:14 #2193 [Verbose] > │ |> fun x -> result <- Some x │
00:03:14 #2194 [Verbose] > │ result |> Option.get │
00:03:14 #2195 [Verbose] > │ () │
00:03:14 #2196 [Verbose] > │ let v260 : string = "\t| " │
00:03:14 #2197 [Verbose] > │ let v261 : string = System.String.Join (v260, v257) │
00:03:14 #2198 [Verbose] > │ System.Console.WriteLine v261 │
00:03:14 #2199 [Verbose] > │ let mutable result = None │
00:03:14 #2200 [Verbose] > │ #if FABLE_COMPILER_RUST │
00:03:14 #2201 [Verbose] > │ #if !WASM │
00:03:14 #2202 [Verbose] > │ () │
00:03:14 #2203 [Verbose] > │ #else │
00:03:14 #2204 [Verbose] > │ () │
00:03:14 #2205 [Verbose] > │ #endif │
00:03:14 #2206 [Verbose] > │ #else │
00:03:14 #2207 [Verbose] > │ System.Console.ResetColor () │
00:03:14 #2208 [Verbose] > │ () │
00:03:14 #2209 [Verbose] > │ #endif │
00:03:14 #2210 [Verbose] > │ |> fun x -> result <- Some x │
00:03:14 #2211 [Verbose] > │ result |> Option.get │
00:03:14 #2212 [Verbose] > │ let v262 : uint64 = v256 + 1UL │
00:03:14 #2213 [Verbose] > │ v254.l0 <- v262 │
00:03:14 #2214 [Verbose] > │ () │
00:03:14 #2215 [Verbose] > │ let v263 : ((float []) []) = Array.zeroCreate<(float [])> │
00:03:14 #2216 [Verbose] > │ (System.Convert.ToInt32(v99)) │
00:03:14 #2217 [Verbose] > │ let v264 : Mut0 = {l0 = 0UL} : Mut0 │
00:03:14 #2218 [Verbose] > │ while method4(v99, v264) do │
00:03:14 #2219 [Verbose] > │ let v266 : uint64 = v264.l0 │
00:03:14 #2220 [Verbose] > │ let struct (v267 : string, v268 : string, v269 : string, v270 : │
00:03:14 #2221 [Verbose] > │ (int64 [])) = v24.[int v266] │
00:03:14 #2222 [Verbose] > │ let v271 : (int64 -> float) = float │
00:03:14 #2223 [Verbose] > │ let v272 : uint64 = System.Convert.ToUInt64 v270.Length │
00:03:14 #2224 [Verbose] > │ let v273 : (float []) = Array.zeroCreate<float> │
00:03:14 #2225 [Verbose] > │ (System.Convert.ToInt32(v272)) │
00:03:14 #2226 [Verbose] > │ let v274 : Mut0 = {l0 = 0UL} : Mut0 │
00:03:14 #2227 [Verbose] > │ while method4(v272, v274) do │
00:03:14 #2228 [Verbose] > │ let v276 : uint64 = v274.l0 │
00:03:14 #2229 [Verbose] > │ let v277 : int64 = v270.[int v276] │
00:03:14 #2230 [Verbose] > │ let v278 : float = v271 v277 │
00:03:14 #2231 [Verbose] > │ v273.[int v276] <- v278 │
00:03:14 #2232 [Verbose] > │ let v279 : uint64 = v276 + 1UL │
00:03:14 #2233 [Verbose] > │ v274.l0 <- v279 │
00:03:14 #2234 [Verbose] > │ () │
00:03:14 #2235 [Verbose] > │ v263.[int v266] <- v273 │
00:03:14 #2236 [Verbose] > │ let v280 : uint64 = v266 + 1UL │
00:03:14 #2237 [Verbose] > │ v264.l0 <- v280 │
00:03:14 #2238 [Verbose] > │ () │
00:03:14 #2239 [Verbose] > │ let v281 : ((float []) []) = v263 |> Array.transpose │
00:03:14 #2240 [Verbose] > │ let v282 : uint64 = System.Convert.ToUInt64 v281.Length │
00:03:14 #2241 [Verbose] > │ let v283 : (float []) = Array.zeroCreate<float> │
00:03:14 #2242 [Verbose] > │ (System.Convert.ToInt32(v282)) │
00:03:14 #2243 [Verbose] > │ let v284 : Mut0 = {l0 = 0UL} : Mut0 │
00:03:14 #2244 [Verbose] > │ while method4(v282, v284) do │
00:03:14 #2245 [Verbose] > │ let v286 : uint64 = v284.l0 │
00:03:14 #2246 [Verbose] > │ let v287 : (float []) = v281.[int v286] │
00:03:14 #2247 [Verbose] > │ let v288 : float = v287 |> Array.average │
00:03:14 #2248 [Verbose] > │ v283.[int v286] <- v288 │
00:03:14 #2249 [Verbose] > │ let v289 : uint64 = v286 + 1UL │
00:03:14 #2250 [Verbose] > │ v284.l0 <- v289 │
00:03:14 #2251 [Verbose] > │ () │
00:03:14 #2252 [Verbose] > │ let v290 : (float -> int64) = int64 │
00:03:14 #2253 [Verbose] > │ let v291 : uint64 = System.Convert.ToUInt64 v283.Length │
00:03:14 #2254 [Verbose] > │ let v292 : (int64 []) = Array.zeroCreate<int64> │
00:03:14 #2255 [Verbose] > │ (System.Convert.ToInt32(v291)) │
00:03:14 #2256 [Verbose] > │ let v293 : Mut0 = {l0 = 0UL} : Mut0 │
00:03:14 #2257 [Verbose] > │ while method4(v291, v293) do │
00:03:14 #2258 [Verbose] > │ let v295 : uint64 = v293.l0 │
00:03:14 #2259 [Verbose] > │ let v296 : float = v283.[int v295] │
00:03:14 #2260 [Verbose] > │ let v297 : int64 = v290 v296 │
00:03:14 #2261 [Verbose] > │ v292.[int v295] <- v297 │
00:03:14 #2262 [Verbose] > │ let v298 : uint64 = v295 + 1UL │
00:03:14 #2263 [Verbose] > │ v293.l0 <- v298 │
00:03:14 #2264 [Verbose] > │ () │
00:03:14 #2265 [Verbose] > │ let v299 : uint64 = System.Convert.ToUInt64 v292.Length │
00:03:14 #2266 [Verbose] > │ let v300 : UH6 = UH6_1 │
00:03:14 #2267 [Verbose] > │ let v301 : Mut3 = {l0 = 0UL; l1 = v300; l2 = 0} : Mut3 │
00:03:14 #2268 [Verbose] > │ while method28(v299, v301) do │
00:03:14 #2269 [Verbose] > │ let v303 : uint64 = v301.l0 │
00:03:14 #2270 [Verbose] > │ let struct (v304 : UH6, v305 : int32) = v301.l1, v301.l2 │
00:03:14 #2271 [Verbose] > │ let v306 : int64 = v292.[int v303] │
00:03:14 #2272 [Verbose] > │ let v307 : int32 = v305 + 1 │
00:03:14 #2273 [Verbose] > │ let v308 : uint64 = v303 + 1UL │
00:03:14 #2274 [Verbose] > │ let v309 : UH6 = UH6_0(v305, v306, v304) │
00:03:14 #2275 [Verbose] > │ v301.l0 <- v308 │
00:03:14 #2276 [Verbose] > │ v301.l1 <- v309 │
00:03:14 #2277 [Verbose] > │ v301.l2 <- v307 │
00:03:14 #2278 [Verbose] > │ () │
00:03:14 #2279 [Verbose] > │ let struct (v310 : UH6, v311 : int32) = v301.l1, v301.l2 │
00:03:14 #2280 [Verbose] > │ let v312 : UH6 = UH6_1 │
00:03:14 #2281 [Verbose] > │ let v313 : UH6 = method29(v310, v312) │
00:03:14 #2282 [Verbose] > │ let v314 : (struct (int32 * int64) []) = method36(v313) │
00:03:14 #2283 [Verbose] > │ System.Console.WriteLine v2 │
00:03:14 #2284 [Verbose] > │ let v315 : string = "Average Ranking " │
00:03:14 #2285 [Verbose] > │ System.Console.WriteLine v315 │
00:03:14 #2286 [Verbose] > │ let v316 : (struct (int32 * int64) -> int64) = closure6() │
00:03:14 #2287 [Verbose] > │ let v317 : (struct (int32 * int64) []) = v314 |> Array.sortBy v316 │
00:03:14 #2288 [Verbose] > │ let v318 : uint64 = System.Convert.ToUInt64 v317.Length │
00:03:14 #2289 [Verbose] > │ let v319 : Mut0 = {l0 = 0UL} : Mut0 │
00:03:14 #2290 [Verbose] > │ while method4(v318, v319) do │
00:03:14 #2291 [Verbose] > │ let v321 : uint64 = v319.l0 │
00:03:14 #2292 [Verbose] > │ let struct (v322 : int32, v323 : int64) = v317.[int v321] │
00:03:14 #2293 [Verbose] > │ let v324 : string = $"Test case %d{v322 + 1}. Average Time: %A{v323} │
00:03:14 #2294 [Verbose] > │ " │
00:03:14 #2295 [Verbose] > │ System.Console.WriteLine v324 │
00:03:14 #2296 [Verbose] > │ let v325 : uint64 = v321 + 1UL │
00:03:14 #2297 [Verbose] > │ v319.l0 <- v325 │
00:03:14 #2298 [Verbose] > │ () │
00:03:14 #2299 [Verbose] > │ () │
00:03:14 #2300 [Verbose] > │ and method0 () : unit = │
00:03:14 #2301 [Verbose] > │ let v0 : (unit -> unit) = closure0() │
00:03:14 #2302 [Verbose] > │ let v1 : string = nameof v0 │
00:03:14 #2303 [Verbose] > │ let v2 : string = "" │
00:03:14 #2304 [Verbose] > │ System.Console.WriteLine v2 │
00:03:14 #2305 [Verbose] > │ System.Console.WriteLine v2 │
00:03:14 #2306 [Verbose] > │ let v3 : string = $"Test: {v1}" │
00:03:14 #2307 [Verbose] > │ System.Console.WriteLine v3 │
00:03:14 #2308 [Verbose] > │ let v4 : string = "abc" │
00:03:14 #2309 [Verbose] > │ let v5 : string = "bca cab abc" │
00:03:14 #2310 [Verbose] > │ let v6 : string = "abcde" │
00:03:14 #2311 [Verbose] > │ let v7 : string = "bcdea cdeab deabc eabcd abcde" │
00:03:14 #2312 [Verbose] > │ let v8 : string = "abcdefghi" │
00:03:14 #2313 [Verbose] > │ let v9 : string = "bcdefghia cdefghiab defghiabc efghiabcd fghiabcde │
00:03:14 #2314 [Verbose] > │ ghiabcdef hiabcdefg iabcdefgh abcdefghi" │
00:03:14 #2315 [Verbose] > │ let v10 : string = "abab" │
00:03:14 #2316 [Verbose] > │ let v11 : string = "baba abab baba abab" │
00:03:14 #2317 [Verbose] > │ let v12 : string = "aa" │
00:03:14 #2318 [Verbose] > │ let v13 : string = "aa aa" │
00:03:14 #2319 [Verbose] > │ let v14 : string = "z" │
00:03:14 #2320 [Verbose] > │ let v15 : UH0 = UH0_1 │
00:03:14 #2321 [Verbose] > │ let v16 : UH0 = UH0_0(v14, v14, v15) │
00:03:14 #2322 [Verbose] > │ let v17 : UH0 = UH0_0(v12, v13, v16) │
00:03:14 #2323 [Verbose] > │ let v18 : UH0 = UH0_0(v10, v11, v17) │
00:03:14 #2324 [Verbose] > │ let v19 : UH0 = UH0_0(v8, v9, v18) │
00:03:14 #2325 [Verbose] > │ let v20 : UH0 = UH0_0(v6, v7, v19) │
00:03:14 #2326 [Verbose] > │ let v21 : UH0 = UH0_0(v4, v5, v20) │
00:03:14 #2327 [Verbose] > │ let v22 : (struct (string * string) []) = method1(v21) │
00:03:14 #2328 [Verbose] > │ let v23 : uint64 = System.Convert.ToUInt64 v22.Length │
00:03:14 #2329 [Verbose] > │ let v24 : (struct (string * string * string * (int64 [])) []) = │
00:03:14 #2330 [Verbose] > │ Array.zeroCreate<struct (string * string * string * (int64 []))> │
00:03:14 #2331 [Verbose] > │ (System.Convert.ToInt32(v23)) │
00:03:14 #2332 [Verbose] > │ let v25 : Mut0 = {l0 = 0UL} : Mut0 │
00:03:14 #2333 [Verbose] > │ while method4(v23, v25) do │
00:03:14 #2334 [Verbose] > │ let v27 : uint64 = v25.l0 │
00:03:14 #2335 [Verbose] > │ let struct (v28 : string, v29 : string) = v22.[int v27] │
00:03:14 #2336 [Verbose] > │ let v30 : string = $"%A{v28}" │
00:03:14 #2337 [Verbose] > │ System.Console.WriteLine v2 │
00:03:14 #2338 [Verbose] > │ let v31 : string = $"Solution: {v30} " │
00:03:14 #2339 [Verbose] > │ System.Console.WriteLine v31 │
00:03:14 #2340 [Verbose] > │ let v32 : int32 = 0 │
00:03:14 #2341 [Verbose] > │ let v33 : string = "F" │
00:03:14 #2342 [Verbose] > │ let v34 : (string -> string) = closure1() │
00:03:14 #2343 [Verbose] > │ let v35 : int32 = 1 │
00:03:14 #2344 [Verbose] > │ let v36 : string = "FA" │
00:03:14 #2345 [Verbose] > │ let v37 : (string -> string) = closure2() │
00:03:14 #2346 [Verbose] > │ let v38 : UH3 = UH3_1 │
00:03:14 #2347 [Verbose] > │ let v39 : UH3 = UH3_0(v35, v36, v37, v38) │
00:03:14 #2348 [Verbose] > │ let v40 : UH3 = UH3_0(v32, v33, v34, v39) │
00:03:14 #2349 [Verbose] > │ let v41 : (struct (int32 * string * (string -> string)) []) = │
00:03:14 #2350 [Verbose] > │ method12(v40) │
00:03:14 #2351 [Verbose] > │ let v42 : uint64 = System.Convert.ToUInt64 v41.Length │
00:03:14 #2352 [Verbose] > │ let v43 : (struct (string * int64) []) = Array.zeroCreate<struct │
00:03:14 #2353 [Verbose] > │ (string * int64)> (System.Convert.ToInt32(v42)) │
00:03:14 #2354 [Verbose] > │ let v44 : Mut0 = {l0 = 0UL} : Mut0 │
00:03:14 #2355 [Verbose] > │ while method4(v42, v44) do │
00:03:14 #2356 [Verbose] > │ let v46 : uint64 = v44.l0 │
00:03:14 #2357 [Verbose] > │ let struct (v47 : int32, v48 : string, v49 : (string -> string)) │
00:03:14 #2358 [Verbose] > │ = v41.[int v46] │
00:03:14 #2359 [Verbose] > │ let mutable result = None │
00:03:14 #2360 [Verbose] > │ #if FABLE_COMPILER_RUST │
00:03:14 #2361 [Verbose] > │ #if !WASM │
00:03:14 #2362 [Verbose] > │ () │
00:03:14 #2363 [Verbose] > │ #else │
00:03:14 #2364 [Verbose] > │ () │
00:03:14 #2365 [Verbose] > │ #endif │
00:03:14 #2366 [Verbose] > │ #else │
00:03:14 #2367 [Verbose] > │ System.GC.Collect () │
00:03:14 #2368 [Verbose] > │ () │
00:03:14 #2369 [Verbose] > │ #endif │
00:03:14 #2370 [Verbose] > │ |> fun x -> result <- Some x │
00:03:14 #2371 [Verbose] > │ result |> Option.get │
00:03:14 #2372 [Verbose] > │ let v50 : (unit -> System.Diagnostics.Stopwatch) = │
00:03:14 #2373 [Verbose] > │ System.Diagnostics.Stopwatch │
00:03:14 #2374 [Verbose] > │ let v51 : System.Diagnostics.Stopwatch = v50 () │
00:03:14 #2375 [Verbose] > │ v51.Start () │
00:03:14 #2376 [Verbose] > │ let v52 : int64 = v51.ElapsedMilliseconds │
00:03:14 #2377 [Verbose] > │ let v53 : (int32 []) = Array.zeroCreate<int32> (2000001) │
00:03:14 #2378 [Verbose] > │ let v54 : Mut1 = {l0 = 0} : Mut1 │
00:03:14 #2379 [Verbose] > │ while method15(v54) do │
00:03:14 #2380 [Verbose] > │ let v56 : int32 = v54.l0 │
00:03:14 #2381 [Verbose] > │ v53.[int v56] <- v56 │
00:03:14 #2382 [Verbose] > │ let v57 : int32 = v56 + 1 │
00:03:14 #2383 [Verbose] > │ v54.l0 <- v57 │
00:03:14 #2384 [Verbose] > │ () │
00:03:14 #2385 [Verbose] > │ let v58 : (int32 -> string) = closure3(v28, v49) │
00:03:14 #2386 [Verbose] > │ let v59 : (string []) = v53 |> Array.Parallel.map v58 │
00:03:14 #2387 [Verbose] > │ let v60 : int32 = v59.Length │
00:03:14 #2388 [Verbose] > │ let v61 : int32 = v60 - 1 │
00:03:14 #2389 [Verbose] > │ let v62 : string = v59.[int v61] │
00:03:14 #2390 [Verbose] > │ let v63 : int64 = v51.ElapsedMilliseconds │
00:03:14 #2391 [Verbose] > │ let v64 : int64 = v63 - v52 │
00:03:14 #2392 [Verbose] > │ let v65 : string = $"Test case {v47 + 1}. {v48}. Time: {v64} " │
00:03:14 #2393 [Verbose] > │ System.Console.WriteLine v65 │
00:03:14 #2394 [Verbose] > │ v43.[int v46] <- struct (v62, v64) │
00:03:14 #2395 [Verbose] > │ let v66 : uint64 = v46 + 1UL │
00:03:14 #2396 [Verbose] > │ v44.l0 <- v66 │
00:03:14 #2397 [Verbose] > │ () │
00:03:14 #2398 [Verbose] > │ let v67 : uint64 = System.Convert.ToUInt64 v43.Length │
00:03:14 #2399 [Verbose] > │ let v68 : (string []) = Array.zeroCreate<string> │
00:03:14 #2400 [Verbose] > │ (System.Convert.ToInt32(v67)) │
00:03:14 #2401 [Verbose] > │ let v69 : Mut0 = {l0 = 0UL} : Mut0 │
00:03:14 #2402 [Verbose] > │ while method4(v67, v69) do │
00:03:14 #2403 [Verbose] > │ let v71 : uint64 = v69.l0 │
00:03:14 #2404 [Verbose] > │ let struct (v72 : string, v73 : int64) = v43.[int v71] │
00:03:14 #2405 [Verbose] > │ v68.[int v71] <- v72 │
00:03:14 #2406 [Verbose] > │ let v74 : uint64 = v71 + 1UL │
00:03:14 #2407 [Verbose] > │ v69.l0 <- v74 │
00:03:14 #2408 [Verbose] > │ () │
00:03:14 #2409 [Verbose] > │ let v75 : uint64 = System.Convert.ToUInt64 v68.Length │
00:03:14 #2410 [Verbose] > │ let v76 : bool = v75 <= 1UL │
00:03:14 #2411 [Verbose] > │ if v76 then │
00:03:14 #2412 [Verbose] > │ () │
00:03:14 #2413 [Verbose] > │ else │
00:03:14 #2414 [Verbose] > │ let v77 : string = v68.[int 0UL] │
00:03:14 #2415 [Verbose] > │ let v78 : uint64 = 0UL │
00:03:14 #2416 [Verbose] > │ let v79 : bool = method16(v77, v68, v78) │
00:03:14 #2417 [Verbose] > │ if v79 then │
00:03:14 #2418 [Verbose] > │ () │
00:03:14 #2419 [Verbose] > │ else │
00:03:14 #2420 [Verbose] > │ let v80 : string = $"Challenge error: {v68}" │
00:03:14 #2421 [Verbose] > │ failwith<unit> v80 │
00:03:14 #2422 [Verbose] > │ let v81 : string = $"%A{v29}" │
00:03:14 #2423 [Verbose] > │ let v82 : (string []) = Array.zeroCreate<string> │
00:03:14 #2424 [Verbose] > │ (System.Convert.ToInt32(v67)) │
00:03:14 #2425 [Verbose] > │ let v83 : Mut0 = {l0 = 0UL} : Mut0 │
00:03:14 #2426 [Verbose] > │ while method4(v67, v83) do │
00:03:14 #2427 [Verbose] > │ let v85 : uint64 = v83.l0 │
00:03:14 #2428 [Verbose] > │ let struct (v86 : string, v87 : int64) = v43.[int v85] │
00:03:14 #2429 [Verbose] > │ v82.[int v85] <- v86 │
00:03:14 #2430 [Verbose] > │ let v88 : uint64 = v85 + 1UL │
00:03:14 #2431 [Verbose] > │ v83.l0 <- v88 │
00:03:14 #2432 [Verbose] > │ () │
00:03:14 #2433 [Verbose] > │ let v89 : string = v82.[int 0UL] │
00:03:14 #2434 [Verbose] > │ let v90 : string = $"%A{v89}" │
00:03:14 #2435 [Verbose] > │ let v91 : (int64 []) = Array.zeroCreate<int64> │
00:03:14 #2436 [Verbose] > │ (System.Convert.ToInt32(v67)) │
00:03:14 #2437 [Verbose] > │ let v92 : Mut0 = {l0 = 0UL} : Mut0 │
00:03:14 #2438 [Verbose] > │ while method4(v67, v92) do │
00:03:14 #2439 [Verbose] > │ let v94 : uint64 = v92.l0 │
00:03:14 #2440 [Verbose] > │ let struct (v95 : string, v96 : int64) = v43.[int v94] │
00:03:14 #2441 [Verbose] > │ v91.[int v94] <- v96 │
00:03:14 #2442 [Verbose] > │ let v97 : uint64 = v94 + 1UL │
00:03:14 #2443 [Verbose] > │ v92.l0 <- v97 │
00:03:14 #2444 [Verbose] > │ () │
00:03:14 #2445 [Verbose] > │ v24.[int v27] <- struct (v81, v30, v90, v91) │
00:03:14 #2446 [Verbose] > │ let v98 : uint64 = v27 + 1UL │
00:03:14 #2447 [Verbose] > │ v25.l0 <- v98 │
00:03:14 #2448 [Verbose] > │ () │
00:03:14 #2449 [Verbose] > │ let v99 : uint64 = System.Convert.ToUInt64 v24.Length │
00:03:14 #2450 [Verbose] > │ let v100 : (struct (UH2 * US0) []) = Array.zeroCreate<struct (UH2 * │
00:03:14 #2451 [Verbose] > │ US0)> (System.Convert.ToInt32(v99)) │
00:03:14 #2452 [Verbose] > │ let v101 : Mut0 = {l0 = 0UL} : Mut0 │
00:03:14 #2453 [Verbose] > │ while method4(v99, v101) do │
00:03:14 #2454 [Verbose] > │ let v103 : uint64 = v101.l0 │
00:03:14 #2455 [Verbose] > │ let struct (v104 : string, v105 : string, v106 : string, v107 : │
00:03:14 #2456 [Verbose] > │ (int64 [])) = v24.[int v103] │
00:03:14 #2457 [Verbose] > │ let v108 : uint64 = System.Convert.ToUInt64 v107.Length │
00:03:14 #2458 [Verbose] > │ let v109 : UH4 = UH4_1 │
00:03:14 #2459 [Verbose] > │ let v110 : Mut2 = {l0 = 0UL; l1 = v109; l2 = 0L} : Mut2 │
00:03:14 #2460 [Verbose] > │ while method17(v108, v110) do │
00:03:14 #2461 [Verbose] > │ let v112 : uint64 = v110.l0 │
00:03:14 #2462 [Verbose] > │ let struct (v113 : UH4, v114 : int64) = v110.l1, v110.l2 │
00:03:14 #2463 [Verbose] > │ let v115 : int64 = v107.[int v112] │
00:03:14 #2464 [Verbose] > │ let v116 : int64 = v114 + 1L │
00:03:14 #2465 [Verbose] > │ let v117 : uint64 = v112 + 1UL │
00:03:14 #2466 [Verbose] > │ let v118 : UH4 = UH4_0(v114, v115, v113) │
00:03:14 #2467 [Verbose] > │ v110.l0 <- v117 │
00:03:14 #2468 [Verbose] > │ v110.l1 <- v118 │
00:03:14 #2469 [Verbose] > │ v110.l2 <- v116 │
00:03:14 #2470 [Verbose] > │ () │
00:03:14 #2471 [Verbose] > │ let struct (v119 : UH4, v120 : int64) = v110.l1, v110.l2 │
00:03:14 #2472 [Verbose] > │ let v121 : UH4 = UH4_1 │
00:03:14 #2473 [Verbose] > │ let v122 : UH4 = method18(v119, v121) │
00:03:14 #2474 [Verbose] > │ let v123 : (struct (int64 * int64) []) = method19(v122) │
00:03:14 #2475 [Verbose] > │ let v124 : int32 = v123.Length │
00:03:14 #2476 [Verbose] > │ let v125 : (struct (int64 * int64) []) = Array.zeroCreate<struct │
00:03:14 #2477 [Verbose] > │ (int64 * int64)> (v124) │
00:03:14 #2478 [Verbose] > │ let v126 : Mut1 = {l0 = 0} : Mut1 │
00:03:14 #2479 [Verbose] > │ while method5(v124, v126) do │
00:03:14 #2480 [Verbose] > │ let v128 : int32 = v126.l0 │
00:03:14 #2481 [Verbose] > │ let struct (v129 : int64, v130 : int64) = v123.[int v128] │
00:03:14 #2482 [Verbose] > │ let v131 : int64 = v129 + 1L │
00:03:14 #2483 [Verbose] > │ v125.[int v128] <- struct (v131, v130) │
00:03:14 #2484 [Verbose] > │ let v132 : int32 = v128 + 1 │
00:03:14 #2485 [Verbose] > │ v126.l0 <- v132 │
00:03:14 #2486 [Verbose] > │ () │
00:03:14 #2487 [Verbose] > │ let v133 : (struct (int64 * int64) -> int64) = closure4() │
00:03:14 #2488 [Verbose] > │ let v134 : (struct (int64 * int64) []) = v125 |> Array.sortBy v133 │
00:03:14 #2489 [Verbose] > │ let struct (v135 : int64, v136 : int64) = v134.[int 0] │
00:03:14 #2490 [Verbose] > │ let v137 : string = $"%A{struct (v135, v136)}" │
00:03:14 #2491 [Verbose] > │ let v138 : bool = v104 = v106 │
00:03:14 #2492 [Verbose] > │ let v143 : US0 = │
00:03:14 #2493 [Verbose] > │ if v138 then │
00:03:14 #2494 [Verbose] > │ let v139 : System.ConsoleColor = │
00:03:14 #2495 [Verbose] > │ System.ConsoleColor.DarkGreen │
00:03:14 #2496 [Verbose] > │ US0_1(v139) │
00:03:14 #2497 [Verbose] > │ else │
00:03:14 #2498 [Verbose] > │ let v141 : System.ConsoleColor = System.ConsoleColor.DarkRed │
00:03:14 #2499 [Verbose] > │ US0_1(v141) │
00:03:14 #2500 [Verbose] > │ let v144 : UH2 = UH2_1 │
00:03:14 #2501 [Verbose] > │ let v145 : UH2 = UH2_0(v137, v144) │
00:03:14 #2502 [Verbose] > │ let v146 : UH2 = UH2_0(v106, v145) │
00:03:14 #2503 [Verbose] > │ let v147 : UH2 = UH2_0(v104, v146) │
00:03:14 #2504 [Verbose] > │ let v148 : UH2 = UH2_0(v105, v147) │
00:03:14 #2505 [Verbose] > │ v100.[int v103] <- struct (v148, v143) │
00:03:14 #2506 [Verbose] > │ let v149 : uint64 = v103 + 1UL │
00:03:14 #2507 [Verbose] > │ v101.l0 <- v149 │
00:03:14 #2508 [Verbose] > │ () │
00:03:14 #2509 [Verbose] > │ let v150 : string = "Input" │
00:03:14 #2510 [Verbose] > │ let v151 : string = "Expected" │
00:03:14 #2511 [Verbose] > │ let v152 : string = "Result" │
00:03:14 #2512 [Verbose] > │ let v153 : string = "Best" │
00:03:14 #2513 [Verbose] > │ let v154 : UH2 = UH2_1 │
00:03:14 #2514 [Verbose] > │ let v155 : UH2 = UH2_0(v153, v154) │
00:03:14 #2515 [Verbose] > │ let v156 : UH2 = UH2_0(v152, v155) │
00:03:14 #2516 [Verbose] > │ let v157 : UH2 = UH2_0(v151, v156) │
00:03:14 #2517 [Verbose] > │ let v158 : UH2 = UH2_0(v150, v157) │
00:03:14 #2518 [Verbose] > │ let v159 : US0 = US0_0 │
00:03:14 #2519 [Verbose] > │ let v160 : string = "---" │
00:03:14 #2520 [Verbose] > │ let v161 : UH2 = UH2_1 │
00:03:14 #2521 [Verbose] > │ let v162 : UH2 = UH2_0(v160, v161) │
00:03:14 #2522 [Verbose] > │ let v163 : UH2 = UH2_0(v160, v162) │
00:03:14 #2523 [Verbose] > │ let v164 : UH2 = UH2_0(v160, v163) │
00:03:14 #2524 [Verbose] > │ let v165 : UH2 = UH2_0(v160, v164) │
00:03:14 #2525 [Verbose] > │ let v166 : US0 = US0_0 │
00:03:14 #2526 [Verbose] > │ let v167 : UH5 = UH5_1 │
00:03:14 #2527 [Verbose] > │ let v168 : UH5 = UH5_0(v165, v166, v167) │
00:03:14 #2528 [Verbose] > │ let v169 : UH5 = UH5_0(v158, v159, v168) │
00:03:14 #2529 [Verbose] > │ let v170 : (struct (UH2 * US0) []) = method22(v169) │
00:03:14 #2530 [Verbose] > │ let v171 : uint64 = System.Convert.ToUInt64 v170.Length │
00:03:14 #2531 [Verbose] > │ let v172 : uint64 = System.Convert.ToUInt64 v100.Length │
00:03:14 #2532 [Verbose] > │ let v173 : uint64 = v171 + v172 │
00:03:14 #2533 [Verbose] > │ let v174 : (struct (UH2 * US0) []) = Array.zeroCreate<struct (UH2 * │
00:03:14 #2534 [Verbose] > │ US0)> (System.Convert.ToInt32(v173)) │
00:03:14 #2535 [Verbose] > │ let v175 : Mut0 = {l0 = 0UL} : Mut0 │
00:03:14 #2536 [Verbose] > │ while method4(v173, v175) do │
00:03:14 #2537 [Verbose] > │ let v177 : uint64 = v175.l0 │
00:03:14 #2538 [Verbose] > │ let v178 : bool = v177 < v171 │
00:03:14 #2539 [Verbose] > │ let struct (v184 : UH2, v185 : US0) = │
00:03:14 #2540 [Verbose] > │ if v178 then │
00:03:14 #2541 [Verbose] > │ let struct (v179 : UH2, v180 : US0) = v170.[int v177] │
00:03:14 #2542 [Verbose] > │ struct (v179, v180) │
00:03:14 #2543 [Verbose] > │ else │
00:03:14 #2544 [Verbose] > │ let v181 : uint64 = v177 - v171 │
00:03:14 #2545 [Verbose] > │ let struct (v182 : UH2, v183 : US0) = v100.[int v181] │
00:03:14 #2546 [Verbose] > │ struct (v182, v183) │
00:03:14 #2547 [Verbose] > │ v174.[int v177] <- struct (v184, v185) │
00:03:14 #2548 [Verbose] > │ let v186 : uint64 = v177 + 1UL │
00:03:14 #2549 [Verbose] > │ v175.l0 <- v186 │
00:03:14 #2550 [Verbose] > │ () │
00:03:14 #2551 [Verbose] > │ let v187 : uint64 = System.Convert.ToUInt64 v174.Length │
00:03:14 #2552 [Verbose] > │ let v188 : ((string []) []) = Array.zeroCreate<(string [])> │
00:03:14 #2553 [Verbose] > │ (System.Convert.ToInt32(v187)) │
00:03:14 #2554 [Verbose] > │ let v189 : Mut0 = {l0 = 0UL} : Mut0 │
00:03:14 #2555 [Verbose] > │ while method4(v187, v189) do │
00:03:14 #2556 [Verbose] > │ let v191 : uint64 = v189.l0 │
00:03:14 #2557 [Verbose] > │ let struct (v192 : UH2, v193 : US0) = v174.[int v191] │
00:03:14 #2558 [Verbose] > │ let v194 : (string []) = method25(v192) │
00:03:14 #2559 [Verbose] > │ v188.[int v191] <- v194 │
00:03:14 #2560 [Verbose] > │ let v195 : uint64 = v191 + 1UL │
00:03:14 #2561 [Verbose] > │ v189.l0 <- v195 │
00:03:14 #2562 [Verbose] > │ () │
00:03:14 #2563 [Verbose] > │ let v196 : ((string []) []) = v188 |> Array.transpose │
00:03:14 #2564 [Verbose] > │ let v197 : uint64 = System.Convert.ToUInt64 v196.Length │
00:03:14 #2565 [Verbose] > │ let v198 : (int64 []) = Array.zeroCreate<int64> │
00:03:14 #2566 [Verbose] > │ (System.Convert.ToInt32(v197)) │
00:03:14 #2567 [Verbose] > │ let v199 : Mut0 = {l0 = 0UL} : Mut0 │
00:03:14 #2568 [Verbose] > │ while method4(v197, v199) do │
00:03:14 #2569 [Verbose] > │ let v201 : uint64 = v199.l0 │
00:03:14 #2570 [Verbose] > │ let v202 : (string []) = v196.[int v201] │
00:03:14 #2571 [Verbose] > │ let v203 : uint64 = System.Convert.ToUInt64 v202.Length │
00:03:14 #2572 [Verbose] > │ let v204 : (int64 []) = Array.zeroCreate<int64> │
00:03:14 #2573 [Verbose] > │ (System.Convert.ToInt32(v203)) │
00:03:14 #2574 [Verbose] > │ let v205 : Mut0 = {l0 = 0UL} : Mut0 │
00:03:14 #2575 [Verbose] > │ while method4(v203, v205) do │
00:03:14 #2576 [Verbose] > │ let v207 : uint64 = v205.l0 │
00:03:14 #2577 [Verbose] > │ let v208 : string = v202.[int v207] │
00:03:14 #2578 [Verbose] > │ let v209 : int64 = System.Convert.ToInt64 v208.Length │
00:03:14 #2579 [Verbose] > │ v204.[int v207] <- v209 │
00:03:14 #2580 [Verbose] > │ let v210 : uint64 = v207 + 1UL │
00:03:14 #2581 [Verbose] > │ v205.l0 <- v210 │
00:03:14 #2582 [Verbose] > │ () │
00:03:14 #2583 [Verbose] > │ let v211 : (int64 []) = v204 |> Array.sortDescending │
00:03:14 #2584 [Verbose] > │ let v212 : int64 option = v211 |> Array.tryItem 0 │
00:03:14 #2585 [Verbose] > │ let v213 : (int64 -> US1) = closure5() │
00:03:14 #2586 [Verbose] > │ let v214 : US1 = US1_0 │
00:03:14 #2587 [Verbose] > │ let v215 : US1 = v212 |> Option.map v213 |> Option.defaultValue v214 │
00:03:14 #2588 [Verbose] > │ let v218 : int64 = │
00:03:14 #2589 [Verbose] > │ match v215 with │
00:03:14 #2590 [Verbose] > │ | US1_0 -> (* None *) │
00:03:14 #2591 [Verbose] > │ 0L │
00:03:14 #2592 [Verbose] > │ | US1_1(v216) -> (* Some *) │
00:03:14 #2593 [Verbose] > │ v216 │
00:03:14 #2594 [Verbose] > │ v198.[int v201] <- v218 │
00:03:14 #2595 [Verbose] > │ let v219 : uint64 = v201 + 1UL │
00:03:14 #2596 [Verbose] > │ v199.l0 <- v219 │
00:03:14 #2597 [Verbose] > │ () │
00:03:14 #2598 [Verbose] > │ let v220 : uint64 = System.Convert.ToUInt64 v198.Length │
00:03:14 #2599 [Verbose] > │ let v221 : UH6 = UH6_1 │
00:03:14 #2600 [Verbose] > │ let v222 : Mut3 = {l0 = 0UL; l1 = v221; l2 = 0} : Mut3 │
00:03:14 #2601 [Verbose] > │ while method28(v220, v222) do │
00:03:14 #2602 [Verbose] > │ let v224 : uint64 = v222.l0 │
00:03:14 #2603 [Verbose] > │ let struct (v225 : UH6, v226 : int32) = v222.l1, v222.l2 │
00:03:14 #2604 [Verbose] > │ let v227 : int64 = v198.[int v224] │
00:03:14 #2605 [Verbose] > │ let v228 : int32 = v226 + 1 │
00:03:14 #2606 [Verbose] > │ let v229 : uint64 = v224 + 1UL │
00:03:14 #2607 [Verbose] > │ let v230 : UH6 = UH6_0(v226, v227, v225) │
00:03:14 #2608 [Verbose] > │ v222.l0 <- v229 │
00:03:14 #2609 [Verbose] > │ v222.l1 <- v230 │
00:03:14 #2610 [Verbose] > │ v222.l2 <- v228 │
00:03:14 #2611 [Verbose] > │ () │
00:03:14 #2612 [Verbose] > │ let struct (v231 : UH6, v232 : int32) = v222.l1, v222.l2 │
00:03:14 #2613 [Verbose] > │ let v233 : UH6 = UH6_1 │
00:03:14 #2614 [Verbose] > │ let v234 : UH6 = method29(v231, v233) │
00:03:14 #2615 [Verbose] > │ let v235 : (struct (int32 * int64) []) = method30(v234) │
00:03:14 #2616 [Verbose] > │ let v236 : Map<int32, int64> = v235 |> Array.map (fun (struct (a, b)) -> │
00:03:14 #2617 [Verbose] > │ a, b) |> Map.ofArray │
00:03:14 #2618 [Verbose] > │ let v237 : (struct ((string []) * US0) []) = Array.zeroCreate<struct │
00:03:14 #2619 [Verbose] > │ ((string []) * US0)> (System.Convert.ToInt32(v187)) │
00:03:14 #2620 [Verbose] > │ let v238 : Mut0 = {l0 = 0UL} : Mut0 │
00:03:14 #2621 [Verbose] > │ while method4(v187, v238) do │
00:03:14 #2622 [Verbose] > │ let v240 : uint64 = v238.l0 │
00:03:14 #2623 [Verbose] > │ let struct (v241 : UH2, v242 : US0) = v174.[int v240] │
00:03:14 #2624 [Verbose] > │ let v243 : UH7 = UH7_1 │
00:03:14 #2625 [Verbose] > │ let v244 : int32 = 0 │
00:03:14 #2626 [Verbose] > │ let struct (v245 : UH7, v246 : int32) = method33(v241, v243, v244) │
00:03:14 #2627 [Verbose] > │ let v247 : UH7 = UH7_1 │
00:03:14 #2628 [Verbose] > │ let v248 : UH7 = method34(v245, v247) │
00:03:14 #2629 [Verbose] > │ let v249 : UH2 = UH2_1 │
00:03:14 #2630 [Verbose] > │ let v250 : UH2 = method35(v236, v248, v249) │
00:03:14 #2631 [Verbose] > │ let v251 : (string []) = method9(v250) │
00:03:14 #2632 [Verbose] > │ v237.[int v240] <- struct (v251, v242) │
00:03:14 #2633 [Verbose] > │ let v252 : uint64 = v240 + 1UL │
00:03:14 #2634 [Verbose] > │ v238.l0 <- v252 │
00:03:14 #2635 [Verbose] > │ () │
00:03:14 #2636 [Verbose] > │ System.Console.WriteLine v2 │
00:03:14 #2637 [Verbose] > │ let v253 : uint64 = System.Convert.ToUInt64 v237.Length │
00:03:14 #2638 [Verbose] > │ let v254 : Mut0 = {l0 = 0UL} : Mut0 │
00:03:14 #2639 [Verbose] > │ while method4(v253, v254) do │
00:03:14 #2640 [Verbose] > │ let v256 : uint64 = v254.l0 │
00:03:14 #2641 [Verbose] > │ let struct (v257 : (string []), v258 : US0) = v237.[int v256] │
00:03:14 #2642 [Verbose] > │ match v258 with │
00:03:14 #2643 [Verbose] > │ | US0_0 -> (* None *) │
00:03:14 #2644 [Verbose] > │ let mutable result = None │
00:03:14 #2645 [Verbose] > │ #if FABLE_COMPILER_RUST │
00:03:14 #2646 [Verbose] > │ #if !WASM │
00:03:14 #2647 [Verbose] > │ () │
00:03:14 #2648 [Verbose] > │ #else │
00:03:14 #2649 [Verbose] > │ () │
00:03:14 #2650 [Verbose] > │ #endif │
00:03:14 #2651 [Verbose] > │ #else │
00:03:14 #2652 [Verbose] > │ System.Console.ResetColor () │
00:03:14 #2653 [Verbose] > │ () │
00:03:14 #2654 [Verbose] > │ #endif │
00:03:14 #2655 [Verbose] > │ |> fun x -> result <- Some x │
00:03:14 #2656 [Verbose] > │ result |> Option.get │
00:03:14 #2657 [Verbose] > │ () │
00:03:14 #2658 [Verbose] > │ | US0_1(v259) -> (* Some *) │
00:03:14 #2659 [Verbose] > │ let mutable result = None │
00:03:14 #2660 [Verbose] > │ #if FABLE_COMPILER_RUST │
00:03:14 #2661 [Verbose] > │ #if !WASM │
00:03:14 #2662 [Verbose] > │ () │
00:03:14 #2663 [Verbose] > │ #else │
00:03:14 #2664 [Verbose] > │ () │
00:03:14 #2665 [Verbose] > │ #endif │
00:03:14 #2666 [Verbose] > │ #else │
00:03:14 #2667 [Verbose] > │ System.Console.ForegroundColor <- v259 │
00:03:14 #2668 [Verbose] > │ () │
00:03:14 #2669 [Verbose] > │ #endif │
00:03:14 #2670 [Verbose] > │ |> fun x -> result <- Some x │
00:03:14 #2671 [Verbose] > │ result |> Option.get │
00:03:14 #2672 [Verbose] > │ () │
00:03:14 #2673 [Verbose] > │ let v260 : string = "\t| " │
00:03:14 #2674 [Verbose] > │ let v261 : string = System.String.Join (v260, v257) │
00:03:14 #2675 [Verbose] > │ System.Console.WriteLine v261 │
00:03:14 #2676 [Verbose] > │ let mutable result = None │
00:03:14 #2677 [Verbose] > │ #if FABLE_COMPILER_RUST │
00:03:14 #2678 [Verbose] > │ #if !WASM │
00:03:14 #2679 [Verbose] > │ () │
00:03:14 #2680 [Verbose] > │ #else │
00:03:14 #2681 [Verbose] > │ () │
00:03:14 #2682 [Verbose] > │ #endif │
00:03:14 #2683 [Verbose] > │ #else │
00:03:14 #2684 [Verbose] > │ System.Console.ResetColor () │
00:03:14 #2685 [Verbose] > │ () │
00:03:14 #2686 [Verbose] > │ #endif │
00:03:14 #2687 [Verbose] > │ |> fun x -> result <- Some x │
00:03:14 #2688 [Verbose] > │ result |> Option.get │
00:03:14 #2689 [Verbose] > │ let v262 : uint64 = v256 + 1UL │
00:03:14 #2690 [Verbose] > │ v254.l0 <- v262 │
00:03:14 #2691 [Verbose] > │ () │
00:03:14 #2692 [Verbose] > │ let v263 : ((float []) []) = Array.zeroCreate<(float [])> │
00:03:14 #2693 [Verbose] > │ (System.Convert.ToInt32(v99)) │
00:03:14 #2694 [Verbose] > │ let v264 : Mut0 = {l0 = 0UL} : Mut0 │
00:03:14 #2695 [Verbose] > │ while method4(v99, v264) do │
00:03:14 #2696 [Verbose] > │ let v266 : uint64 = v264.l0 │
00:03:14 #2697 [Verbose] > │ let struct (v267 : string, v268 : string, v269 : string, v270 : │
00:03:14 #2698 [Verbose] > │ (int64 [])) = v24.[int v266] │
00:03:14 #2699 [Verbose] > │ let v271 : (int64 -> float) = float │
00:03:14 #2700 [Verbose] > │ let v272 : uint64 = System.Convert.ToUInt64 v270.Length │
00:03:14 #2701 [Verbose] > │ let v273 : (float []) = Array.zeroCreate<float> │
00:03:14 #2702 [Verbose] > │ (System.Convert.ToInt32(v272)) │
00:03:14 #2703 [Verbose] > │ let v274 : Mut0 = {l0 = 0UL} : Mut0 │
00:03:14 #2704 [Verbose] > │ while method4(v272, v274) do │
00:03:14 #2705 [Verbose] > │ let v276 : uint64 = v274.l0 │
00:03:14 #2706 [Verbose] > │ let v277 : int64 = v270.[int v276] │
00:03:14 #2707 [Verbose] > │ let v278 : float = v271 v277 │
00:03:14 #2708 [Verbose] > │ v273.[int v276] <- v278 │
00:03:14 #2709 [Verbose] > │ let v279 : uint64 = v276 + 1UL │
00:03:14 #2710 [Verbose] > │ v274.l0 <- v279 │
00:03:14 #2711 [Verbose] > │ () │
00:03:14 #2712 [Verbose] > │ v263.[int v266] <- v273 │
00:03:14 #2713 [Verbose] > │ let v280 : uint64 = v266 + 1UL │
00:03:14 #2714 [Verbose] > │ v264.l0 <- v280 │
00:03:14 #2715 [Verbose] > │ () │
00:03:14 #2716 [Verbose] > │ let v281 : ((float []) []) = v263 |> Array.transpose │
00:03:14 #2717 [Verbose] > │ let v282 : uint64 = System.Convert.ToUInt64 v281.Length │
00:03:14 #2718 [Verbose] > │ let v283 : (float []) = Array.zeroCreate<float> │
00:03:14 #2719 [Verbose] > │ (System.Convert.ToInt32(v282)) │
00:03:14 #2720 [Verbose] > │ let v284 : Mut0 = {l0 = 0UL} : Mut0 │
00:03:14 #2721 [Verbose] > │ while method4(v282, v284) do │
00:03:14 #2722 [Verbose] > │ let v286 : uint64 = v284.l0 │
00:03:14 #2723 [Verbose] > │ let v287 : (float []) = v281.[int v286] │
00:03:14 #2724 [Verbose] > │ let v288 : float = v287 |> Array.average │
00:03:14 #2725 [Verbose] > │ v283.[int v286] <- v288 │
00:03:14 #2726 [Verbose] > │ let v289 : uint64 = v286 + 1UL │
00:03:14 #2727 [Verbose] > │ v284.l0 <- v289 │
00:03:14 #2728 [Verbose] > │ () │
00:03:14 #2729 [Verbose] > │ let v290 : (float -> int64) = int64 │
00:03:14 #2730 [Verbose] > │ let v291 : uint64 = System.Convert.ToUInt64 v283.Length │
00:03:14 #2731 [Verbose] > │ let v292 : (int64 []) = Array.zeroCreate<int64> │
00:03:14 #2732 [Verbose] > │ (System.Convert.ToInt32(v291)) │
00:03:14 #2733 [Verbose] > │ let v293 : Mut0 = {l0 = 0UL} : Mut0 │
00:03:14 #2734 [Verbose] > │ while method4(v291, v293) do │
00:03:14 #2735 [Verbose] > │ let v295 : uint64 = v293.l0 │
00:03:14 #2736 [Verbose] > │ let v296 : float = v283.[int v295] │
00:03:14 #2737 [Verbose] > │ let v297 : int64 = v290 v296 │
00:03:14 #2738 [Verbose] > │ v292.[int v295] <- v297 │
00:03:14 #2739 [Verbose] > │ let v298 : uint64 = v295 + 1UL │
00:03:14 #2740 [Verbose] > │ v293.l0 <- v298 │
00:03:14 #2741 [Verbose] > │ () │
00:03:14 #2742 [Verbose] > │ let v299 : uint64 = System.Convert.ToUInt64 v292.Length │
00:03:14 #2743 [Verbose] > │ let v300 : UH6 = UH6_1 │
00:03:14 #2744 [Verbose] > │ let v301 : Mut3 = {l0 = 0UL; l1 = v300; l2 = 0} : Mut3 │
00:03:14 #2745 [Verbose] > │ while method28(v299, v301) do │
00:03:14 #2746 [Verbose] > │ let v303 : uint64 = v301.l0 │
00:03:14 #2747 [Verbose] > │ let struct (v304 : UH6, v305 : int32) = v301.l1, v301.l2 │
00:03:14 #2748 [Verbose] > │ let v306 : int64 = v292.[int v303] │
00:03:14 #2749 [Verbose] > │ let v307 : int32 = v305 + 1 │
00:03:14 #2750 [Verbose] > │ let v308 : uint64 = v303 + 1UL │
00:03:14 #2751 [Verbose] > │ let v309 : UH6 = UH6_0(v305, v306, v304) │
00:03:14 #2752 [Verbose] > │ v301.l0 <- v308 │
00:03:14 #2753 [Verbose] > │ v301.l1 <- v309 │
00:03:14 #2754 [Verbose] > │ v301.l2 <- v307 │
00:03:14 #2755 [Verbose] > │ () │
00:03:14 #2756 [Verbose] > │ let struct (v310 : UH6, v311 : int32) = v301.l1, v301.l2 │
00:03:14 #2757 [Verbose] > │ let v312 : UH6 = UH6_1 │
00:03:14 #2758 [Verbose] > │ let v313 : UH6 = method29(v310, v312) │
00:03:14 #2759 [Verbose] > │ let v314 : (struct (int32 * int64) []) = method36(v313) │
00:03:14 #2760 [Verbose] > │ System.Console.WriteLine v2 │
00:03:14 #2761 [Verbose] > │ let v315 : string = "Average Ranking " │
00:03:14 #2762 [Verbose] > │ System.Console.WriteLine v315 │
00:03:14 #2763 [Verbose] > │ let v316 : (struct (int32 * int64) -> int64) = closure6() │
00:03:14 #2764 [Verbose] > │ let v317 : (struct (int32 * int64) []) = v314 |> Array.sortBy v316 │
00:03:14 #2765 [Verbose] > │ let v318 : uint64 = System.Convert.ToUInt64 v317.Length │
00:03:14 #2766 [Verbose] > │ let v319 : Mut0 = {l0 = 0UL} : Mut0 │
00:03:14 #2767 [Verbose] > │ while method4(v318, v319) do │
00:03:14 #2768 [Verbose] > │ let v321 : uint64 = v319.l0 │
00:03:14 #2769 [Verbose] > │ let struct (v322 : int32, v323 : int64) = v317.[int v321] │
00:03:14 #2770 [Verbose] > │ let v324 : string = $"Test case %d{v322 + 1}. Average Time: %A{v323} │
00:03:14 #2771 [Verbose] > │ " │
00:03:14 #2772 [Verbose] > │ System.Console.WriteLine v324 │
00:03:14 #2773 [Verbose] > │ let v325 : uint64 = v321 + 1UL │
00:03:14 #2774 [Verbose] > │ v319.l0 <- v325 │
00:03:14 #2775 [Verbose] > │ () │
00:03:14 #2776 [Verbose] > │ () │
00:03:14 #2777 [Verbose] > │ method0() │
00:03:14 #2778 [Verbose] > │ │
00:03:14 #2779 [Verbose] > │ │
00:03:14 #2780 [Verbose] > │ │
00:03:14 #2781 [Verbose] > │ Test: v0 │
00:03:14 #2782 [Verbose] > │ │
00:03:14 #2783 [Verbose] > │ Solution: "abc" │
00:03:14 #2784 [Verbose] > │ Test case 1. F. Time: 859 │
00:03:14 #2785 [Verbose] > │ Test case 2. FA. Time: 1127 │
00:03:14 #2786 [Verbose] > │ │
00:03:14 #2787 [Verbose] > │ Solution: "abcde" │
00:03:14 #2788 [Verbose] > │ Test case 1. F. Time: 1028 │
00:03:14 #2789 [Verbose] > │ Test case 2. FA. Time: 1274 │
00:03:14 #2790 [Verbose] > │ │
00:03:14 #2791 [Verbose] > │ Solution: "abcdefghi" │
00:03:14 #2792 [Verbose] > │ Test case 1. F. Time: 1666 │
00:03:14 #2793 [Verbose] > │ Test case 2. FA. Time: 2058 │
00:03:14 #2794 [Verbose] > │ │
00:03:14 #2795 [Verbose] > │ Solution: "abab" │
00:03:14 #2796 [Verbose] > │ Test case 1. F. Time: 896 │
00:03:14 #2797 [Verbose] > │ Test case 2. FA. Time: 977 │
00:03:14 #2798 [Verbose] > │ │
00:03:14 #2799 [Verbose] > │ Solution: "aa" │
00:03:14 #2800 [Verbose] > │ Test case 1. F. Time: 573 │
00:03:14 #2801 [Verbose] > │ Test case 2. FA. Time: 573 │
00:03:14 #2802 [Verbose] > │ │
00:03:14 #2803 [Verbose] > │ Solution: "z" │
00:03:14 #2804 [Verbose] > │ Test case 1. F. Time: 81 │
00:03:14 #2805 [Verbose] > │ Test case 2. FA. Time: 77 │
00:03:14 #2806 [Verbose] > │ │
00:03:14 #2807 [Verbose] > │ Input | Expected │
00:03:14 #2808 [Verbose] > │ │
00:03:14 #2809 [Verbose] > │ | Result │
00:03:14 #2810 [Verbose] > │ │
00:03:14 #2811 [Verbose] > │ | Best │
00:03:14 #2812 [Verbose] > │ --- | --- │
00:03:14 #2813 [Verbose] > │ │
00:03:14 #2814 [Verbose] > │ | --- │
00:03:14 #2815 [Verbose] > │ │
00:03:14 #2816 [Verbose] > │ | --- │
00:03:14 #2817 [Verbose] > │ "abc" | "bca cab abc" │
00:03:14 #2818 [Verbose] > │ │
00:03:14 #2819 [Verbose] > │ | "bca cab abc" │
00:03:14 #2820 [Verbose] > │ │
00:03:14 #2821 [Verbose] > │ | struct (1L, 859L) │
00:03:14 #2822 [Verbose] > │ "abcde" | "bcdea cdeab deabc eabcd abcde" │
00:03:14 #2823 [Verbose] > │ | "bcdea cdeab deabc eabcd abcde" │
00:03:14 #2824 [Verbose] > │ | struct (1L, 1028L) │
00:03:14 #2825 [Verbose] > │ "abcdefghi" | "bcdefghia cdefghiab defghiabc efghiabcd fghiabcde ghiabcdef │
00:03:14 #2826 [Verbose] > │ hiabcdefg iabcdefgh abcdefghi" | "bcdefghia cdefghiab defghiabc efghiabcd │
00:03:14 #2827 [Verbose] > │ fghiabcde ghiabcdef hiabcdefg iabcdefgh abcdefghi" | struct (1L, 1666L) │
00:03:14 #2828 [Verbose] > │ "abab" | "baba abab baba abab" │
00:03:14 #2829 [Verbose] > │ | "baba abab baba abab" │
00:03:14 #2830 [Verbose] > │ | struct (1L, 896L) │
00:03:14 #2831 [Verbose] > │ "aa" | "aa aa" │
00:03:14 #2832 [Verbose] > │ │
00:03:14 #2833 [Verbose] > │ | "aa aa" │
00:03:14 #2834 [Verbose] > │ │
00:03:14 #2835 [Verbose] > │ | struct (1L, 573L) │
00:03:14 #2836 [Verbose] > │ "z" | "z" │
00:03:14 #2837 [Verbose] > │ │
00:03:14 #2838 [Verbose] > │ | "z" │
00:03:14 #2839 [Verbose] > │ │
00:03:14 #2840 [Verbose] > │ | struct (2L, 77L) │
00:03:14 #2841 [Verbose] > │ │
00:03:14 #2842 [Verbose] > │ Average Ranking │
00:03:14 #2843 [Verbose] > │ Test case 1. Average Time: 850L │
00:03:14 #2844 [Verbose] > │ Test case 2. Average Time: 1014L │
00:03:14 #2845 [Verbose] > │ │
00:03:14 #2846 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:14 #2847 [Verbose] >
00:03:14 #2848 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:14 #2849 [Verbose] > // // test
00:03:14 #2850 [Verbose] > // // rust=
00:03:14 #2851 [Verbose] > // // print_code=false
00:03:14 #2852 [Verbose] >
00:03:14 #2853 [Verbose] > // rotate_strings_tests ()
00:03:14 #2854 [Verbose] > Building /tmp/!dotnet-repl/20240320-1238-5408-0873-09cac46e7751/main.spi
00:03:14 #2855 [Verbose] >
00:03:14 #2856 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:03:14 #2857 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:14 #2858 [Verbose] > │ ## binary_search_tests │
00:03:14 #2859 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:14 #2860 [Verbose] >
00:03:14 #2861 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:14 #2862 [Verbose] > // // test
00:03:14 #2863 [Verbose] > // // timeout=90000
00:03:14 #2864 [Verbose] > // // print_code=true
00:03:14 #2865 [Verbose] >
00:03:14 #2866 [Verbose] > inl binary_search_semi_open_1 arr target left right =
00:03:14 #2867 [Verbose] > inl rec body left right =
00:03:14 #2868 [Verbose] > if left >= right
00:03:14 #2869 [Verbose] > then None
00:03:14 #2870 [Verbose] > else
00:03:14 #2871 [Verbose] > inl mid = (left + right) / 2
00:03:14 #2872 [Verbose] > inl item = index arr mid
00:03:14 #2873 [Verbose] > if item = target
00:03:14 #2874 [Verbose] > then Some mid
00:03:14 #2875 [Verbose] > elif item < target
00:03:14 #2876 [Verbose] > then loop (mid + 1) right
00:03:14 #2877 [Verbose] > else loop left mid
00:03:14 #2878 [Verbose] > and inl loop left right =
00:03:14 #2879 [Verbose] > if var_is right |> not
00:03:14 #2880 [Verbose] > then body left right
00:03:14 #2881 [Verbose] > else
00:03:14 #2882 [Verbose] > inl left = dyn left
00:03:14 #2883 [Verbose] > join body left right
00:03:14 #2884 [Verbose] > loop left right
00:03:14 #2885 [Verbose] >
00:03:14 #2886 [Verbose] > inl binary_search_closed_1 arr target left right =
00:03:14 #2887 [Verbose] > inl rec body left right =
00:03:14 #2888 [Verbose] > if left > right
00:03:14 #2889 [Verbose] > then None
00:03:14 #2890 [Verbose] > else
00:03:14 #2891 [Verbose] > inl mid = (left + right) / 2
00:03:14 #2892 [Verbose] > inl item = index arr mid
00:03:14 #2893 [Verbose] > if item = target
00:03:14 #2894 [Verbose] > then Some mid
00:03:14 #2895 [Verbose] > elif item < target
00:03:14 #2896 [Verbose] > then loop (mid + 1) right
00:03:14 #2897 [Verbose] > else loop left (mid - 1)
00:03:14 #2898 [Verbose] > and inl loop left right =
00:03:14 #2899 [Verbose] > if var_is right |> not
00:03:14 #2900 [Verbose] > then body left right
00:03:14 #2901 [Verbose] > else
00:03:14 #2902 [Verbose] > inl left = dyn left
00:03:14 #2903 [Verbose] > join body left right
00:03:14 #2904 [Verbose] > loop left right
00:03:14 #2905 [Verbose] >
00:03:14 #2906 [Verbose] > inl binary_search_semi_open_2 arr target left right =
00:03:14 #2907 [Verbose] > let rec body left right =
00:03:14 #2908 [Verbose] > if left >= right
00:03:14 #2909 [Verbose] > then None
00:03:14 #2910 [Verbose] > else
00:03:14 #2911 [Verbose] > inl mid = (left + right) / 2
00:03:14 #2912 [Verbose] > inl item = index arr mid
00:03:14 #2913 [Verbose] > if item = target
00:03:14 #2914 [Verbose] > then Some mid
00:03:14 #2915 [Verbose] > elif item < target
00:03:14 #2916 [Verbose] > then loop (mid + 1) right
00:03:14 #2917 [Verbose] > else loop left mid
00:03:14 #2918 [Verbose] > and inl loop left right = body left right
00:03:14 #2919 [Verbose] > loop left right
00:03:14 #2920 [Verbose] >
00:03:14 #2921 [Verbose] > inl binary_search_closed_2 arr target left right =
00:03:14 #2922 [Verbose] > let rec body left right =
00:03:14 #2923 [Verbose] > if left > right
00:03:14 #2924 [Verbose] > then None
00:03:14 #2925 [Verbose] > else
00:03:14 #2926 [Verbose] > inl mid = (left + right) / 2
00:03:14 #2927 [Verbose] > inl item = index arr mid
00:03:14 #2928 [Verbose] > if item = target
00:03:14 #2929 [Verbose] > then Some mid
00:03:14 #2930 [Verbose] > elif item < target
00:03:14 #2931 [Verbose] > then loop (mid + 1) right
00:03:14 #2932 [Verbose] > else loop left (mid - 1)
00:03:14 #2933 [Verbose] > and inl loop left right = body left right
00:03:14 #2934 [Verbose] > loop left right
00:03:14 #2935 [Verbose] >
00:03:14 #2936 [Verbose] > inl get_solutions () =
00:03:14 #2937 [Verbose] > [[
00:03:14 #2938 [Verbose] > "semi_open_1",
00:03:14 #2939 [Verbose] > fun (arr, (target, len)) =>
00:03:14 #2940 [Verbose] > binary_search_semi_open_1 arr target 0 len
00:03:14 #2941 [Verbose] >
00:03:14 #2942 [Verbose] > "closed_1",
00:03:14 #2943 [Verbose] > fun (arr, (target, len)) =>
00:03:14 #2944 [Verbose] > binary_search_closed_1 arr target 0 (len - 1)
00:03:14 #2945 [Verbose] >
00:03:14 #2946 [Verbose] > "semi_open_2",
00:03:14 #2947 [Verbose] > fun (arr, (target, len)) =>
00:03:14 #2948 [Verbose] > binary_search_semi_open_2 arr target 0 len
00:03:14 #2949 [Verbose] >
00:03:14 #2950 [Verbose] > "closed_2",
00:03:14 #2951 [Verbose] > fun (arr, (target, len)) =>
00:03:14 #2952 [Verbose] > binary_search_closed_2 arr target 0 (len - 1)
00:03:14 #2953 [Verbose] > ]]
00:03:14 #2954 [Verbose] >
00:03:14 #2955 [Verbose] > inl rec binary_search_tests () =
00:03:14 #2956 [Verbose] > inl arr_with_len target len arr =
00:03:14 #2957 [Verbose] > arr, (target, (len |> optionm'.default_with fun () => length arr))
00:03:14 #2958 [Verbose] >
00:03:14 #2959 [Verbose] > inl test_cases = [[
00:03:14 #2960 [Verbose] > (a ;[[ 1i32; 3; 4; 6; 8; 9; 11 ]] |> arr_with_len 6 None), (Some 3i32)
00:03:14 #2961 [Verbose] > (a ;[[ 1i32; 3; 4; 6; 8; 9; 11 ]] |> arr_with_len 1 None), (Some 0i32)
00:03:14 #2962 [Verbose] > (a ;[[ 1i32; 3; 4; 6; 8; 9; 11 ]] |> arr_with_len 11 None), (Some 6i32)
00:03:14 #2963 [Verbose] > (a ;[[ 1i32; 3; 4; 6; 8; 9; 11 ]] |> arr_with_len 12 None), None
00:03:14 #2964 [Verbose] > ((am'.init_series 1i32 100 1) |> arr_with_len 60 None), (Some 59)
00:03:14 #2965 [Verbose] >
00:03:14 #2966 [Verbose] > (a ;[[ 1i32; 3; 4; 6; 8; 9; 11 ]] |> arr_with_len 6 (Some 7)), (Some
00:03:14 #2967 [Verbose] > 3i32)
00:03:14 #2968 [Verbose] > (a ;[[ 1i32; 3; 4; 6; 8; 9; 11 ]] |> arr_with_len 1 (Some 7)), (Some
00:03:14 #2969 [Verbose] > 0i32)
00:03:14 #2970 [Verbose] > (a ;[[ 1i32; 3; 4; 6; 8; 9; 11 ]] |> arr_with_len 11 (Some 7)), (Some
00:03:14 #2971 [Verbose] > 6i32)
00:03:14 #2972 [Verbose] > (a ;[[ 1i32; 3; 4; 6; 8; 9; 11 ]] |> arr_with_len 12 (Some 7)), None
00:03:14 #2973 [Verbose] > ((am'.init_series 1i32 100 1) |> arr_with_len 60 (Some 100)), (Some 59)
00:03:14 #2974 [Verbose] > ]]
00:03:14 #2975 [Verbose] >
00:03:14 #2976 [Verbose] > inl solutions = get_solutions ()
00:03:14 #2977 [Verbose] >
00:03:14 #2978 [Verbose] > // inl is_fast () = true
00:03:14 #2979 [Verbose] >
00:03:14 #2980 [Verbose] > inl count =
00:03:14 #2981 [Verbose] > if is_fast ()
00:03:14 #2982 [Verbose] > then 1000i32
00:03:14 #2983 [Verbose] > else 8000000i32
00:03:14 #2984 [Verbose] >
00:03:14 #2985 [Verbose] > run_all (nameof binary_search_tests) count solutions test_cases
00:03:14 #2986 [Verbose] > |> sort_result_list
00:03:14 #2987 [Verbose] >
00:03:14 #2988 [Verbose] >
00:03:14 #2989 [Verbose] > let main () =
00:03:14 #2990 [Verbose] > binary_search_tests ()
00:03:14 #2991 [Verbose] > Building /tmp/!dotnet-repl/20240320-1238-5421-2174-271811ee0d6a/main.spi
00:03:24 #2992 [Verbose] >
00:03:24 #2993 [Verbose] > ╭─[ 10.05s - stdout ]──────────────────────────────────────────────────────────╮
00:03:24 #2994 [Verbose] > │ type Mut0 = {mutable l0 : int32} │
00:03:24 #2995 [Verbose] > │ and [<Struct>] US0 = │
00:03:24 #2996 [Verbose] > │ | US0_0 │
00:03:24 #2997 [Verbose] > │ | US0_1 of f1_0 : int32 │
00:03:24 #2998 [Verbose] > │ and UH0 = │
00:03:24 #2999 [Verbose] > │ | UH0_0 of (int32 []) * int32 * int32 * US0 * UH0 │
00:03:24 #3000 [Verbose] > │ | UH0_1 │
00:03:24 #3001 [Verbose] > │ and Mut1 = {mutable l0 : uint64} │
00:03:24 #3002 [Verbose] > │ and UH1 = │
00:03:24 #3003 [Verbose] > │ | UH1_0 of int32 * string * (struct ((int32 []) * int32 * int32) -> US0) │
00:03:24 #3004 [Verbose] > │ * UH1 │
00:03:24 #3005 [Verbose] > │ | UH1_1 │
00:03:24 #3006 [Verbose] > │ and UH2 = │
00:03:24 #3007 [Verbose] > │ | UH2_0 of string * UH2 │
00:03:24 #3008 [Verbose] > │ | UH2_1 │
00:03:24 #3009 [Verbose] > │ and [<Struct>] US1 = │
00:03:24 #3010 [Verbose] > │ | US1_0 │
00:03:24 #3011 [Verbose] > │ | US1_1 of f1_0 : System.ConsoleColor │
00:03:24 #3012 [Verbose] > │ and UH3 = │
00:03:24 #3013 [Verbose] > │ | UH3_0 of int64 * int64 * UH3 │
00:03:24 #3014 [Verbose] > │ | UH3_1 │
00:03:24 #3015 [Verbose] > │ and Mut2 = {mutable l0 : uint64; mutable l1 : UH3; mutable l2 : int64} │
00:03:24 #3016 [Verbose] > │ and UH4 = │
00:03:24 #3017 [Verbose] > │ | UH4_0 of UH2 * US1 * UH4 │
00:03:24 #3018 [Verbose] > │ | UH4_1 │
00:03:24 #3019 [Verbose] > │ and [<Struct>] US2 = │
00:03:24 #3020 [Verbose] > │ | US2_0 │
00:03:24 #3021 [Verbose] > │ | US2_1 of f1_0 : int64 │
00:03:24 #3022 [Verbose] > │ and UH5 = │
00:03:24 #3023 [Verbose] > │ | UH5_0 of int32 * int64 * UH5 │
00:03:24 #3024 [Verbose] > │ | UH5_1 │
00:03:24 #3025 [Verbose] > │ and Mut3 = {mutable l0 : uint64; mutable l1 : UH5; mutable l2 : int32} │
00:03:24 #3026 [Verbose] > │ and UH6 = │
00:03:24 #3027 [Verbose] > │ | UH6_0 of int32 * string * UH6 │
00:03:24 #3028 [Verbose] > │ | UH6_1 │
00:03:24 #3029 [Verbose] > │ let rec method1 (v0 : (int32 [])) : (int32 []) = │
00:03:24 #3030 [Verbose] > │ v0 │
00:03:24 #3031 [Verbose] > │ and method2 (v0 : Mut0) : bool = │
00:03:24 #3032 [Verbose] > │ let v1 : int32 = v0.l0 │
00:03:24 #3033 [Verbose] > │ let v2 : bool = v1 < 100 │
00:03:24 #3034 [Verbose] > │ v2 │
00:03:24 #3035 [Verbose] > │ and method4 (v0 : UH0, v1 : uint64) : uint64 = │
00:03:24 #3036 [Verbose] > │ match v0 with │
00:03:24 #3037 [Verbose] > │ | UH0_0(v2, v3, v4, v5, v6) -> (* Cons *) │
00:03:24 #3038 [Verbose] > │ let v7 : uint64 = v1 + 1UL │
00:03:24 #3039 [Verbose] > │ method4(v6, v7) │
00:03:24 #3040 [Verbose] > │ | UH0_1 -> (* Nil *) │
00:03:24 #3041 [Verbose] > │ v1 │
00:03:24 #3042 [Verbose] > │ and method5 (v0 : (struct ((int32 []) * int32 * int32 * US0) []), v1 : UH0, │
00:03:24 #3043 [Verbose] > │ v2 : uint64) : uint64 = │
00:03:24 #3044 [Verbose] > │ match v1 with │
00:03:24 #3045 [Verbose] > │ | UH0_0(v3, v4, v5, v6, v7) -> (* Cons *) │
00:03:24 #3046 [Verbose] > │ v0.[int v2] <- struct (v3, v4, v5, v6) │
00:03:24 #3047 [Verbose] > │ let v8 : uint64 = v2 + 1UL │
00:03:24 #3048 [Verbose] > │ method5(v0, v7, v8) │
00:03:24 #3049 [Verbose] > │ | UH0_1 -> (* Nil *) │
00:03:24 #3050 [Verbose] > │ v2 │
00:03:24 #3051 [Verbose] > │ and method3 (v0 : UH0) : (struct ((int32 []) * int32 * int32 * US0) []) = │
00:03:24 #3052 [Verbose] > │ let v1 : uint64 = 0UL │
00:03:24 #3053 [Verbose] > │ let v2 : uint64 = method4(v0, v1) │
00:03:24 #3054 [Verbose] > │ let v3 : (struct ((int32 []) * int32 * int32 * US0) []) = │
00:03:24 #3055 [Verbose] > │ Array.zeroCreate<struct ((int32 []) * int32 * int32 * US0)> │
00:03:24 #3056 [Verbose] > │ (System.Convert.ToInt32(v2)) │
00:03:24 #3057 [Verbose] > │ let v4 : uint64 = 0UL │
00:03:24 #3058 [Verbose] > │ let v5 : uint64 = method5(v3, v0, v4) │
00:03:24 #3059 [Verbose] > │ v3 │
00:03:24 #3060 [Verbose] > │ and method6 (v0 : uint64, v1 : Mut1) : bool = │
00:03:24 #3061 [Verbose] > │ let v2 : uint64 = v1.l0 │
00:03:24 #3062 [Verbose] > │ let v3 : bool = v2 < v0 │
00:03:24 #3063 [Verbose] > │ v3 │
00:03:24 #3064 [Verbose] > │ and method7 (v0 : (int32 []), v1 : int32, v2 : int32, v3 : int32) : US0 = │
00:03:24 #3065 [Verbose] > │ let v4 : bool = v3 >= v2 │
00:03:24 #3066 [Verbose] > │ if v4 then │
00:03:24 #3067 [Verbose] > │ US0_0 │
00:03:24 #3068 [Verbose] > │ else │
00:03:24 #3069 [Verbose] > │ let v6 : int32 = v3 + v2 │
00:03:24 #3070 [Verbose] > │ let v7 : int32 = v6 / 2 │
00:03:24 #3071 [Verbose] > │ let v8 : int32 = v0.[int v7] │
00:03:24 #3072 [Verbose] > │ let v9 : bool = v8 = v1 │
00:03:24 #3073 [Verbose] > │ if v9 then │
00:03:24 #3074 [Verbose] > │ US0_1(v7) │
00:03:24 #3075 [Verbose] > │ else │
00:03:24 #3076 [Verbose] > │ let v11 : bool = v8 < v1 │
00:03:24 #3077 [Verbose] > │ if v11 then │
00:03:24 #3078 [Verbose] > │ let v12 : int32 = v7 + 1 │
00:03:24 #3079 [Verbose] > │ method7(v0, v1, v2, v12) │
00:03:24 #3080 [Verbose] > │ else │
00:03:24 #3081 [Verbose] > │ method7(v0, v1, v7, v3) │
00:03:24 #3082 [Verbose] > │ and closure1 () struct (v0 : (int32 []), v1 : int32, v2 : int32) : US0 = │
00:03:24 #3083 [Verbose] > │ let v3 : int32 = 0 │
00:03:24 #3084 [Verbose] > │ method7(v0, v1, v2, v3) │
00:03:24 #3085 [Verbose] > │ and method8 (v0 : (int32 []), v1 : int32, v2 : int32, v3 : int32) : US0 = │
00:03:24 #3086 [Verbose] > │ let v4 : bool = v3 > v2 │
00:03:24 #3087 [Verbose] > │ if v4 then │
00:03:24 #3088 [Verbose] > │ US0_0 │
00:03:24 #3089 [Verbose] > │ else │
00:03:24 #3090 [Verbose] > │ let v6 : int32 = v3 + v2 │
00:03:24 #3091 [Verbose] > │ let v7 : int32 = v6 / 2 │
00:03:24 #3092 [Verbose] > │ let v8 : int32 = v0.[int v7] │
00:03:24 #3093 [Verbose] > │ let v9 : bool = v8 = v1 │
00:03:24 #3094 [Verbose] > │ if v9 then │
00:03:24 #3095 [Verbose] > │ US0_1(v7) │
00:03:24 #3096 [Verbose] > │ else │
00:03:24 #3097 [Verbose] > │ let v11 : bool = v8 < v1 │
00:03:24 #3098 [Verbose] > │ if v11 then │
00:03:24 #3099 [Verbose] > │ let v12 : int32 = v7 + 1 │
00:03:24 #3100 [Verbose] > │ method8(v0, v1, v2, v12) │
00:03:24 #3101 [Verbose] > │ else │
00:03:24 #3102 [Verbose] > │ let v14 : int32 = v7 - 1 │
00:03:24 #3103 [Verbose] > │ method8(v0, v1, v14, v3) │
00:03:24 #3104 [Verbose] > │ and closure2 () struct (v0 : (int32 []), v1 : int32, v2 : int32) : US0 = │
00:03:24 #3105 [Verbose] > │ let v3 : int32 = v2 - 1 │
00:03:24 #3106 [Verbose] > │ let v4 : int32 = 0 │
00:03:24 #3107 [Verbose] > │ method8(v0, v1, v3, v4) │
00:03:24 #3108 [Verbose] > │ and method9 (v0 : (int32 []), v1 : int32, v2 : int32, v3 : int32) : US0 = │
00:03:24 #3109 [Verbose] > │ let v4 : bool = v2 >= v3 │
00:03:24 #3110 [Verbose] > │ if v4 then │
00:03:24 #3111 [Verbose] > │ US0_0 │
00:03:24 #3112 [Verbose] > │ else │
00:03:24 #3113 [Verbose] > │ let v6 : int32 = v2 + v3 │
00:03:24 #3114 [Verbose] > │ let v7 : int32 = v6 / 2 │
00:03:24 #3115 [Verbose] > │ let v8 : int32 = v0.[int v7] │
00:03:24 #3116 [Verbose] > │ let v9 : bool = v8 = v1 │
00:03:24 #3117 [Verbose] > │ if v9 then │
00:03:24 #3118 [Verbose] > │ US0_1(v7) │
00:03:24 #3119 [Verbose] > │ else │
00:03:24 #3120 [Verbose] > │ let v11 : bool = v8 < v1 │
00:03:24 #3121 [Verbose] > │ if v11 then │
00:03:24 #3122 [Verbose] > │ let v12 : int32 = v7 + 1 │
00:03:24 #3123 [Verbose] > │ method9(v0, v1, v12, v3) │
00:03:24 #3124 [Verbose] > │ else │
00:03:24 #3125 [Verbose] > │ method9(v0, v1, v2, v7) │
00:03:24 #3126 [Verbose] > │ and closure3 () struct (v0 : (int32 []), v1 : int32, v2 : int32) : US0 = │
00:03:24 #3127 [Verbose] > │ let v3 : int32 = 0 │
00:03:24 #3128 [Verbose] > │ method9(v0, v1, v3, v2) │
00:03:24 #3129 [Verbose] > │ and method10 (v0 : (int32 []), v1 : int32, v2 : int32, v3 : int32) : US0 = │
00:03:24 #3130 [Verbose] > │ let v4 : bool = v2 > v3 │
00:03:24 #3131 [Verbose] > │ if v4 then │
00:03:24 #3132 [Verbose] > │ US0_0 │
00:03:24 #3133 [Verbose] > │ else │
00:03:24 #3134 [Verbose] > │ let v6 : int32 = v2 + v3 │
00:03:24 #3135 [Verbose] > │ let v7 : int32 = v6 / 2 │
00:03:24 #3136 [Verbose] > │ let v8 : int32 = v0.[int v7] │
00:03:24 #3137 [Verbose] > │ let v9 : bool = v8 = v1 │
00:03:24 #3138 [Verbose] > │ if v9 then │
00:03:24 #3139 [Verbose] > │ US0_1(v7) │
00:03:24 #3140 [Verbose] > │ else │
00:03:24 #3141 [Verbose] > │ let v11 : bool = v8 < v1 │
00:03:24 #3142 [Verbose] > │ if v11 then │
00:03:24 #3143 [Verbose] > │ let v12 : int32 = v7 + 1 │
00:03:24 #3144 [Verbose] > │ method10(v0, v1, v12, v3) │
00:03:24 #3145 [Verbose] > │ else │
00:03:24 #3146 [Verbose] > │ let v14 : int32 = v7 - 1 │
00:03:24 #3147 [Verbose] > │ method10(v0, v1, v2, v14) │
00:03:24 #3148 [Verbose] > │ and closure4 () struct (v0 : (int32 []), v1 : int32, v2 : int32) : US0 = │
00:03:24 #3149 [Verbose] > │ let v3 : int32 = v2 - 1 │
00:03:24 #3150 [Verbose] > │ let v4 : int32 = 0 │
00:03:24 #3151 [Verbose] > │ method10(v0, v1, v4, v3) │
00:03:24 #3152 [Verbose] > │ and method12 (v0 : UH1, v1 : uint64) : uint64 = │
00:03:24 #3153 [Verbose] > │ match v0 with │
00:03:24 #3154 [Verbose] > │ | UH1_0(v2, v3, v4, v5) -> (* Cons *) │
00:03:24 #3155 [Verbose] > │ let v6 : uint64 = v1 + 1UL │
00:03:24 #3156 [Verbose] > │ method12(v5, v6) │
00:03:24 #3157 [Verbose] > │ | UH1_1 -> (* Nil *) │
00:03:24 #3158 [Verbose] > │ v1 │
00:03:24 #3159 [Verbose] > │ and method13 (v0 : (struct (int32 * string * (struct ((int32 []) * int32 * │
00:03:24 #3160 [Verbose] > │ int32) -> US0)) []), v1 : UH1, v2 : uint64) : uint64 = │
00:03:24 #3161 [Verbose] > │ match v1 with │
00:03:24 #3162 [Verbose] > │ | UH1_0(v3, v4, v5, v6) -> (* Cons *) │
00:03:24 #3163 [Verbose] > │ v0.[int v2] <- struct (v3, v4, v5) │
00:03:24 #3164 [Verbose] > │ let v7 : uint64 = v2 + 1UL │
00:03:24 #3165 [Verbose] > │ method13(v0, v6, v7) │
00:03:24 #3166 [Verbose] > │ | UH1_1 -> (* Nil *) │
00:03:24 #3167 [Verbose] > │ v2 │
00:03:24 #3168 [Verbose] > │ and method11 (v0 : UH1) : (struct (int32 * string * (struct ((int32 []) * │
00:03:24 #3169 [Verbose] > │ int32 * int32) -> US0)) []) = │
00:03:24 #3170 [Verbose] > │ let v1 : uint64 = 0UL │
00:03:24 #3171 [Verbose] > │ let v2 : uint64 = method12(v0, v1) │
00:03:24 #3172 [Verbose] > │ let v3 : (struct (int32 * string * (struct ((int32 []) * int32 * int32) │
00:03:24 #3173 [Verbose] > │ -> US0)) []) = Array.zeroCreate<struct (int32 * string * (struct ((int32 []) │
00:03:24 #3174 [Verbose] > │ * int32 * int32) -> US0))> (System.Convert.ToInt32(v2)) │
00:03:24 #3175 [Verbose] > │ let v4 : uint64 = 0UL │
00:03:24 #3176 [Verbose] > │ let v5 : uint64 = method13(v3, v0, v4) │
00:03:24 #3177 [Verbose] > │ v3 │
00:03:24 #3178 [Verbose] > │ and method14 (v0 : Mut0) : bool = │
00:03:24 #3179 [Verbose] > │ let v1 : int32 = v0.l0 │
00:03:24 #3180 [Verbose] > │ let v2 : bool = v1 < 8000001 │
00:03:24 #3181 [Verbose] > │ v2 │
00:03:24 #3182 [Verbose] > │ and closure5 (v0 : (int32 []), v1 : int32, v2 : int32, v3 : (struct ((int32 │
00:03:24 #3183 [Verbose] > │ []) * int32 * int32) -> US0)) (v4 : int32) : US0 = │
00:03:24 #3184 [Verbose] > │ v3 struct (v0, v1, v2) │
00:03:24 #3185 [Verbose] > │ and method15 (v0 : US0, v1 : (US0 []), v2 : uint64) : bool = │
00:03:24 #3186 [Verbose] > │ let v3 : uint64 = System.Convert.ToUInt64 v1.Length │
00:03:24 #3187 [Verbose] > │ let v4 : bool = v2 < v3 │
00:03:24 #3188 [Verbose] > │ if v4 then │
00:03:24 #3189 [Verbose] > │ let v5 : US0 = v1.[int v2] │
00:03:24 #3190 [Verbose] > │ let v9 : bool = │
00:03:24 #3191 [Verbose] > │ match v0, v5 with │
00:03:24 #3192 [Verbose] > │ | US0_0, US0_0 -> (* None *) │
00:03:24 #3193 [Verbose] > │ true │
00:03:24 #3194 [Verbose] > │ | US0_1(v6), US0_1(v7) -> (* Some *) │
00:03:24 #3195 [Verbose] > │ let v8 : bool = v6 = v7 │
00:03:24 #3196 [Verbose] > │ v8 │
00:03:24 #3197 [Verbose] > │ | _ -> │
00:03:24 #3198 [Verbose] > │ false │
00:03:24 #3199 [Verbose] > │ if v9 then │
00:03:24 #3200 [Verbose] > │ let v10 : uint64 = v2 + 1UL │
00:03:24 #3201 [Verbose] > │ method15(v0, v1, v10) │
00:03:24 #3202 [Verbose] > │ else │
00:03:24 #3203 [Verbose] > │ false │
00:03:24 #3204 [Verbose] > │ else │
00:03:24 #3205 [Verbose] > │ true │
00:03:24 #3206 [Verbose] > │ and method16 (v0 : uint64, v1 : Mut2) : bool = │
00:03:24 #3207 [Verbose] > │ let v2 : uint64 = v1.l0 │
00:03:24 #3208 [Verbose] > │ let v3 : bool = v2 < v0 │
00:03:24 #3209 [Verbose] > │ v3 │
00:03:24 #3210 [Verbose] > │ and method17 (v0 : UH3, v1 : UH3) : UH3 = │
00:03:24 #3211 [Verbose] > │ match v0 with │
00:03:24 #3212 [Verbose] > │ | UH3_0(v2, v3, v4) -> (* Cons *) │
00:03:24 #3213 [Verbose] > │ let v5 : UH3 = UH3_0(v2, v3, v1) │
00:03:24 #3214 [Verbose] > │ method17(v4, v5) │
00:03:24 #3215 [Verbose] > │ | UH3_1 -> (* Nil *) │
00:03:24 #3216 [Verbose] > │ v1 │
00:03:24 #3217 [Verbose] > │ and method19 (v0 : UH3, v1 : int32) : int32 = │
00:03:24 #3218 [Verbose] > │ match v0 with │
00:03:24 #3219 [Verbose] > │ | UH3_0(v2, v3, v4) -> (* Cons *) │
00:03:24 #3220 [Verbose] > │ let v5 : int32 = v1 + 1 │
00:03:24 #3221 [Verbose] > │ method19(v4, v5) │
00:03:24 #3222 [Verbose] > │ | UH3_1 -> (* Nil *) │
00:03:24 #3223 [Verbose] > │ v1 │
00:03:24 #3224 [Verbose] > │ and method20 (v0 : (struct (int64 * int64) []), v1 : UH3, v2 : int32) : │
00:03:24 #3225 [Verbose] > │ int32 = │
00:03:24 #3226 [Verbose] > │ match v1 with │
00:03:24 #3227 [Verbose] > │ | UH3_0(v3, v4, v5) -> (* Cons *) │
00:03:24 #3228 [Verbose] > │ v0.[int v2] <- struct (v3, v4) │
00:03:24 #3229 [Verbose] > │ let v6 : int32 = v2 + 1 │
00:03:24 #3230 [Verbose] > │ method20(v0, v5, v6) │
00:03:24 #3231 [Verbose] > │ | UH3_1 -> (* Nil *) │
00:03:24 #3232 [Verbose] > │ v2 │
00:03:24 #3233 [Verbose] > │ and method18 (v0 : UH3) : (struct (int64 * int64) []) = │
00:03:24 #3234 [Verbose] > │ let v1 : int32 = 0 │
00:03:24 #3235 [Verbose] > │ let v2 : int32 = method19(v0, v1) │
00:03:24 #3236 [Verbose] > │ let v3 : (struct (int64 * int64) []) = Array.zeroCreate<struct (int64 * │
00:03:24 #3237 [Verbose] > │ int64)> (v2) │
00:03:24 #3238 [Verbose] > │ let v4 : int32 = 0 │
00:03:24 #3239 [Verbose] > │ let v5 : int32 = method20(v3, v0, v4) │
00:03:24 #3240 [Verbose] > │ v3 │
00:03:24 #3241 [Verbose] > │ and method21 (v0 : int32, v1 : Mut0) : bool = │
00:03:24 #3242 [Verbose] > │ let v2 : int32 = v1.l0 │
00:03:24 #3243 [Verbose] > │ let v3 : bool = v2 < v0 │
00:03:24 #3244 [Verbose] > │ v3 │
00:03:24 #3245 [Verbose] > │ and closure6 () struct (v0 : int64, v1 : int64) : int64 = │
00:03:24 #3246 [Verbose] > │ v1 │
00:03:24 #3247 [Verbose] > │ and method23 (v0 : UH4, v1 : uint64) : uint64 = │
00:03:24 #3248 [Verbose] > │ match v0 with │
00:03:24 #3249 [Verbose] > │ | UH4_0(v2, v3, v4) -> (* Cons *) │
00:03:24 #3250 [Verbose] > │ let v5 : uint64 = v1 + 1UL │
00:03:24 #3251 [Verbose] > │ method23(v4, v5) │
00:03:24 #3252 [Verbose] > │ | UH4_1 -> (* Nil *) │
00:03:24 #3253 [Verbose] > │ v1 │
00:03:24 #3254 [Verbose] > │ and method24 (v0 : (struct (UH2 * US1) []), v1 : UH4, v2 : uint64) : uint64 │
00:03:24 #3255 [Verbose] > │ = │
00:03:24 #3256 [Verbose] > │ match v1 with │
00:03:24 #3257 [Verbose] > │ | UH4_0(v3, v4, v5) -> (* Cons *) │
00:03:24 #3258 [Verbose] > │ v0.[int v2] <- struct (v3, v4) │
00:03:24 #3259 [Verbose] > │ let v6 : uint64 = v2 + 1UL │
00:03:24 #3260 [Verbose] > │ method24(v0, v5, v6) │
00:03:24 #3261 [Verbose] > │ | UH4_1 -> (* Nil *) │
00:03:24 #3262 [Verbose] > │ v2 │
00:03:24 #3263 [Verbose] > │ and method22 (v0 : UH4) : (struct (UH2 * US1) []) = │
00:03:24 #3264 [Verbose] > │ let v1 : uint64 = 0UL │
00:03:24 #3265 [Verbose] > │ let v2 : uint64 = method23(v0, v1) │
00:03:24 #3266 [Verbose] > │ let v3 : (struct (UH2 * US1) []) = Array.zeroCreate<struct (UH2 * US1)> │
00:03:24 #3267 [Verbose] > │ (System.Convert.ToInt32(v2)) │
00:03:24 #3268 [Verbose] > │ let v4 : uint64 = 0UL │
00:03:24 #3269 [Verbose] > │ let v5 : uint64 = method24(v3, v0, v4) │
00:03:24 #3270 [Verbose] > │ v3 │
00:03:24 #3271 [Verbose] > │ and method26 (v0 : UH2, v1 : uint64) : uint64 = │
00:03:24 #3272 [Verbose] > │ match v0 with │
00:03:24 #3273 [Verbose] > │ | UH2_0(v2, v3) -> (* Cons *) │
00:03:24 #3274 [Verbose] > │ let v4 : uint64 = v1 + 1UL │
00:03:24 #3275 [Verbose] > │ method26(v3, v4) │
00:03:24 #3276 [Verbose] > │ | UH2_1 -> (* Nil *) │
00:03:24 #3277 [Verbose] > │ v1 │
00:03:24 #3278 [Verbose] > │ and method27 (v0 : (string []), v1 : UH2, v2 : uint64) : uint64 = │
00:03:24 #3279 [Verbose] > │ match v1 with │
00:03:24 #3280 [Verbose] > │ | UH2_0(v3, v4) -> (* Cons *) │
00:03:24 #3281 [Verbose] > │ v0.[int v2] <- v3 │
00:03:24 #3282 [Verbose] > │ let v5 : uint64 = v2 + 1UL │
00:03:24 #3283 [Verbose] > │ method27(v0, v4, v5) │
00:03:24 #3284 [Verbose] > │ | UH2_1 -> (* Nil *) │
00:03:24 #3285 [Verbose] > │ v2 │
00:03:24 #3286 [Verbose] > │ and method25 (v0 : UH2) : (string []) = │
00:03:24 #3287 [Verbose] > │ let v1 : uint64 = 0UL │
00:03:24 #3288 [Verbose] > │ let v2 : uint64 = method26(v0, v1) │
00:03:24 #3289 [Verbose] > │ let v3 : (string []) = Array.zeroCreate<string> │
00:03:24 #3290 [Verbose] > │ (System.Convert.ToInt32(v2)) │
00:03:24 #3291 [Verbose] > │ let v4 : uint64 = 0UL │
00:03:24 #3292 [Verbose] > │ let v5 : uint64 = method27(v3, v0, v4) │
00:03:24 #3293 [Verbose] > │ v3 │
00:03:24 #3294 [Verbose] > │ and closure7 () (v0 : int64) : US2 = │
00:03:24 #3295 [Verbose] > │ US2_1(v0) │
00:03:24 #3296 [Verbose] > │ and method28 (v0 : uint64, v1 : Mut3) : bool = │
00:03:24 #3297 [Verbose] > │ let v2 : uint64 = v1.l0 │
00:03:24 #3298 [Verbose] > │ let v3 : bool = v2 < v0 │
00:03:24 #3299 [Verbose] > │ v3 │
00:03:24 #3300 [Verbose] > │ and method29 (v0 : UH5, v1 : UH5) : UH5 = │
00:03:24 #3301 [Verbose] > │ match v0 with │
00:03:24 #3302 [Verbose] > │ | UH5_0(v2, v3, v4) -> (* Cons *) │
00:03:24 #3303 [Verbose] > │ let v5 : UH5 = UH5_0(v2, v3, v1) │
00:03:24 #3304 [Verbose] > │ method29(v4, v5) │
00:03:24 #3305 [Verbose] > │ | UH5_1 -> (* Nil *) │
00:03:24 #3306 [Verbose] > │ v1 │
00:03:24 #3307 [Verbose] > │ and method31 (v0 : UH5, v1 : int32) : int32 = │
00:03:24 #3308 [Verbose] > │ match v0 with │
00:03:24 #3309 [Verbose] > │ | UH5_0(v2, v3, v4) -> (* Cons *) │
00:03:24 #3310 [Verbose] > │ let v5 : int32 = v1 + 1 │
00:03:24 #3311 [Verbose] > │ method31(v4, v5) │
00:03:24 #3312 [Verbose] > │ | UH5_1 -> (* Nil *) │
00:03:24 #3313 [Verbose] > │ v1 │
00:03:24 #3314 [Verbose] > │ and method32 (v0 : (struct (int32 * int64) []), v1 : UH5, v2 : int32) : │
00:03:24 #3315 [Verbose] > │ int32 = │
00:03:24 #3316 [Verbose] > │ match v1 with │
00:03:24 #3317 [Verbose] > │ | UH5_0(v3, v4, v5) -> (* Cons *) │
00:03:24 #3318 [Verbose] > │ v0.[int v2] <- struct (v3, v4) │
00:03:24 #3319 [Verbose] > │ let v6 : int32 = v2 + 1 │
00:03:24 #3320 [Verbose] > │ method32(v0, v5, v6) │
00:03:24 #3321 [Verbose] > │ | UH5_1 -> (* Nil *) │
00:03:24 #3322 [Verbose] > │ v2 │
00:03:24 #3323 [Verbose] > │ and method30 (v0 : UH5) : (struct (int32 * int64) []) = │
00:03:24 #3324 [Verbose] > │ let v1 : int32 = 0 │
00:03:24 #3325 [Verbose] > │ let v2 : int32 = method31(v0, v1) │
00:03:24 #3326 [Verbose] > │ let v3 : (struct (int32 * int64) []) = Array.zeroCreate<struct (int32 * │
00:03:24 #3327 [Verbose] > │ int64)> (v2) │
00:03:24 #3328 [Verbose] > │ let v4 : int32 = 0 │
00:03:24 #3329 [Verbose] > │ let v5 : int32 = method32(v3, v0, v4) │
00:03:24 #3330 [Verbose] > │ v3 │
00:03:24 #3331 [Verbose] > │ and method33 (v0 : UH2, v1 : UH6, v2 : int32) : struct (UH6 * int32) = │
00:03:24 #3332 [Verbose] > │ match v0 with │
00:03:24 #3333 [Verbose] > │ | UH2_0(v3, v4) -> (* Cons *) │
00:03:24 #3334 [Verbose] > │ let v5 : int32 = v2 + 1 │
00:03:24 #3335 [Verbose] > │ let v6 : UH6 = UH6_0(v2, v3, v1) │
00:03:24 #3336 [Verbose] > │ method33(v4, v6, v5) │
00:03:24 #3337 [Verbose] > │ | UH2_1 -> (* Nil *) │
00:03:24 #3338 [Verbose] > │ struct (v1, v2) │
00:03:24 #3339 [Verbose] > │ and method34 (v0 : UH6, v1 : UH6) : UH6 = │
00:03:24 #3340 [Verbose] > │ match v0 with │
00:03:24 #3341 [Verbose] > │ | UH6_0(v2, v3, v4) -> (* Cons *) │
00:03:24 #3342 [Verbose] > │ let v5 : UH6 = UH6_0(v2, v3, v1) │
00:03:24 #3343 [Verbose] > │ method34(v4, v5) │
00:03:24 #3344 [Verbose] > │ | UH6_1 -> (* Nil *) │
00:03:24 #3345 [Verbose] > │ v1 │
00:03:24 #3346 [Verbose] > │ and method35 (v0 : Map<int32, int64>, v1 : UH6, v2 : UH2) : UH2 = │
00:03:24 #3347 [Verbose] > │ match v1 with │
00:03:24 #3348 [Verbose] > │ | UH6_0(v3, v4, v5) -> (* Cons *) │
00:03:24 #3349 [Verbose] > │ let v6 : UH2 = method35(v0, v5, v2) │
00:03:24 #3350 [Verbose] > │ let v7 : int64 = v0.[v3] │
00:03:24 #3351 [Verbose] > │ let v8 : int32 = int32 v7 │
00:03:24 #3352 [Verbose] > │ let v9 : string = v4.PadRight v8 │
00:03:24 #3353 [Verbose] > │ UH2_0(v9, v6) │
00:03:24 #3354 [Verbose] > │ | UH6_1 -> (* Nil *) │
00:03:24 #3355 [Verbose] > │ v2 │
00:03:24 #3356 [Verbose] > │ and method37 (v0 : UH2, v1 : int32) : int32 = │
00:03:24 #3357 [Verbose] > │ match v0 with │
00:03:24 #3358 [Verbose] > │ | UH2_0(v2, v3) -> (* Cons *) │
00:03:24 #3359 [Verbose] > │ let v4 : int32 = v1 + 1 │
00:03:24 #3360 [Verbose] > │ method37(v3, v4) │
00:03:24 #3361 [Verbose] > │ | UH2_1 -> (* Nil *) │
00:03:24 #3362 [Verbose] > │ v1 │
00:03:24 #3363 [Verbose] > │ and method38 (v0 : (string []), v1 : UH2, v2 : int32) : int32 = │
00:03:24 #3364 [Verbose] > │ match v1 with │
00:03:24 #3365 [Verbose] > │ | UH2_0(v3, v4) -> (* Cons *) │
00:03:24 #3366 [Verbose] > │ v0.[int v2] <- v3 │
00:03:24 #3367 [Verbose] > │ let v5 : int32 = v2 + 1 │
00:03:24 #3368 [Verbose] > │ method38(v0, v4, v5) │
00:03:24 #3369 [Verbose] > │ | UH2_1 -> (* Nil *) │
00:03:24 #3370 [Verbose] > │ v2 │
00:03:24 #3371 [Verbose] > │ and method36 (v0 : UH2) : (string []) = │
00:03:24 #3372 [Verbose] > │ let v1 : int32 = 0 │
00:03:24 #3373 [Verbose] > │ let v2 : int32 = method37(v0, v1) │
00:03:24 #3374 [Verbose] > │ let v3 : (string []) = Array.zeroCreate<string> (v2) │
00:03:24 #3375 [Verbose] > │ let v4 : int32 = 0 │
00:03:24 #3376 [Verbose] > │ let v5 : int32 = method38(v3, v0, v4) │
00:03:24 #3377 [Verbose] > │ v3 │
00:03:24 #3378 [Verbose] > │ and method40 (v0 : UH5, v1 : uint64) : uint64 = │
00:03:24 #3379 [Verbose] > │ match v0 with │
00:03:24 #3380 [Verbose] > │ | UH5_0(v2, v3, v4) -> (* Cons *) │
00:03:24 #3381 [Verbose] > │ let v5 : uint64 = v1 + 1UL │
00:03:24 #3382 [Verbose] > │ method40(v4, v5) │
00:03:24 #3383 [Verbose] > │ | UH5_1 -> (* Nil *) │
00:03:24 #3384 [Verbose] > │ v1 │
00:03:24 #3385 [Verbose] > │ and method41 (v0 : (struct (int32 * int64) []), v1 : UH5, v2 : uint64) : │
00:03:24 #3386 [Verbose] > │ uint64 = │
00:03:24 #3387 [Verbose] > │ match v1 with │
00:03:24 #3388 [Verbose] > │ | UH5_0(v3, v4, v5) -> (* Cons *) │
00:03:24 #3389 [Verbose] > │ v0.[int v2] <- struct (v3, v4) │
00:03:24 #3390 [Verbose] > │ let v6 : uint64 = v2 + 1UL │
00:03:24 #3391 [Verbose] > │ method41(v0, v5, v6) │
00:03:24 #3392 [Verbose] > │ | UH5_1 -> (* Nil *) │
00:03:24 #3393 [Verbose] > │ v2 │
00:03:24 #3394 [Verbose] > │ and method39 (v0 : UH5) : (struct (int32 * int64) []) = │
00:03:24 #3395 [Verbose] > │ let v1 : uint64 = 0UL │
00:03:24 #3396 [Verbose] > │ let v2 : uint64 = method40(v0, v1) │
00:03:24 #3397 [Verbose] > │ let v3 : (struct (int32 * int64) []) = Array.zeroCreate<struct (int32 * │
00:03:24 #3398 [Verbose] > │ int64)> (System.Convert.ToInt32(v2)) │
00:03:24 #3399 [Verbose] > │ let v4 : uint64 = 0UL │
00:03:24 #3400 [Verbose] > │ let v5 : uint64 = method41(v3, v0, v4) │
00:03:24 #3401 [Verbose] > │ v3 │
00:03:24 #3402 [Verbose] > │ and closure8 () struct (v0 : int32, v1 : int64) : int64 = │
00:03:24 #3403 [Verbose] > │ v1 │
00:03:24 #3404 [Verbose] > │ and closure0 () () : unit = │
00:03:24 #3405 [Verbose] > │ let v0 : (int32 []) = [|1; 3; 4; 6; 8; 9; 11|] │
00:03:24 #3406 [Verbose] > │ let v1 : (int32 []) = method1(v0) │
00:03:24 #3407 [Verbose] > │ let v2 : int32 = v1.Length │
00:03:24 #3408 [Verbose] > │ let v3 : (int32 []) = [|1; 3; 4; 6; 8; 9; 11|] │
00:03:24 #3409 [Verbose] > │ let v4 : (int32 []) = method1(v3) │
00:03:24 #3410 [Verbose] > │ let v5 : int32 = v4.Length │
00:03:24 #3411 [Verbose] > │ let v6 : (int32 []) = [|1; 3; 4; 6; 8; 9; 11|] │
00:03:24 #3412 [Verbose] > │ let v7 : (int32 []) = method1(v6) │
00:03:24 #3413 [Verbose] > │ let v8 : int32 = v7.Length │
00:03:24 #3414 [Verbose] > │ let v9 : (int32 []) = [|1; 3; 4; 6; 8; 9; 11|] │
00:03:24 #3415 [Verbose] > │ let v10 : (int32 []) = method1(v9) │
00:03:24 #3416 [Verbose] > │ let v11 : int32 = v10.Length │
00:03:24 #3417 [Verbose] > │ let v12 : (int32 []) = Array.zeroCreate<int32> (100) │
00:03:24 #3418 [Verbose] > │ let v13 : Mut0 = {l0 = 0} : Mut0 │
00:03:24 #3419 [Verbose] > │ while method2(v13) do │
00:03:24 #3420 [Verbose] > │ let v15 : int32 = v13.l0 │
00:03:24 #3421 [Verbose] > │ let v16 : int32 = 1 + v15 │
00:03:24 #3422 [Verbose] > │ v12.[int v15] <- v16 │
00:03:24 #3423 [Verbose] > │ let v17 : int32 = v15 + 1 │
00:03:24 #3424 [Verbose] > │ v13.l0 <- v17 │
00:03:24 #3425 [Verbose] > │ () │
00:03:24 #3426 [Verbose] > │ let v18 : int32 = v12.Length │
00:03:24 #3427 [Verbose] > │ let v19 : (int32 []) = [|1; 3; 4; 6; 8; 9; 11|] │
00:03:24 #3428 [Verbose] > │ let v20 : (int32 []) = method1(v19) │
00:03:24 #3429 [Verbose] > │ let v21 : (int32 []) = [|1; 3; 4; 6; 8; 9; 11|] │
00:03:24 #3430 [Verbose] > │ let v22 : (int32 []) = method1(v21) │
00:03:24 #3431 [Verbose] > │ let v23 : (int32 []) = [|1; 3; 4; 6; 8; 9; 11|] │
00:03:24 #3432 [Verbose] > │ let v24 : (int32 []) = method1(v23) │
00:03:24 #3433 [Verbose] > │ let v25 : (int32 []) = [|1; 3; 4; 6; 8; 9; 11|] │
00:03:24 #3434 [Verbose] > │ let v26 : (int32 []) = method1(v25) │
00:03:24 #3435 [Verbose] > │ let v27 : (int32 []) = Array.zeroCreate<int32> (100) │
00:03:24 #3436 [Verbose] > │ let v28 : Mut0 = {l0 = 0} : Mut0 │
00:03:24 #3437 [Verbose] > │ while method2(v28) do │
00:03:24 #3438 [Verbose] > │ let v30 : int32 = v28.l0 │
00:03:24 #3439 [Verbose] > │ let v31 : int32 = 1 + v30 │
00:03:24 #3440 [Verbose] > │ v27.[int v30] <- v31 │
00:03:24 #3441 [Verbose] > │ let v32 : int32 = v30 + 1 │
00:03:24 #3442 [Verbose] > │ v28.l0 <- v32 │
00:03:24 #3443 [Verbose] > │ () │
00:03:24 #3444 [Verbose] > │ let v33 : (unit -> unit) = closure0() │
00:03:24 #3445 [Verbose] > │ let v34 : string = nameof v33 │
00:03:24 #3446 [Verbose] > │ let v35 : string = "" │
00:03:24 #3447 [Verbose] > │ System.Console.WriteLine v35 │
00:03:24 #3448 [Verbose] > │ System.Console.WriteLine v35 │
00:03:24 #3449 [Verbose] > │ let v36 : string = $"Test: {v34}" │
00:03:24 #3450 [Verbose] > │ System.Console.WriteLine v36 │
00:03:24 #3451 [Verbose] > │ let v37 : int32 = 6 │
00:03:24 #3452 [Verbose] > │ let v38 : int32 = 3 │
00:03:24 #3453 [Verbose] > │ let v39 : US0 = US0_1(v38) │
00:03:24 #3454 [Verbose] > │ let v40 : int32 = 1 │
00:03:24 #3455 [Verbose] > │ let v41 : int32 = 0 │
00:03:24 #3456 [Verbose] > │ let v42 : US0 = US0_1(v41) │
00:03:24 #3457 [Verbose] > │ let v43 : int32 = 11 │
00:03:24 #3458 [Verbose] > │ let v44 : int32 = 6 │
00:03:24 #3459 [Verbose] > │ let v45 : US0 = US0_1(v44) │
00:03:24 #3460 [Verbose] > │ let v46 : int32 = 12 │
00:03:24 #3461 [Verbose] > │ let v47 : US0 = US0_0 │
00:03:24 #3462 [Verbose] > │ let v48 : int32 = 60 │
00:03:24 #3463 [Verbose] > │ let v49 : int32 = 59 │
00:03:24 #3464 [Verbose] > │ let v50 : US0 = US0_1(v49) │
00:03:24 #3465 [Verbose] > │ let v51 : int32 = 6 │
00:03:24 #3466 [Verbose] > │ let v52 : int32 = 7 │
00:03:24 #3467 [Verbose] > │ let v53 : int32 = 3 │
00:03:24 #3468 [Verbose] > │ let v54 : US0 = US0_1(v53) │
00:03:24 #3469 [Verbose] > │ let v55 : int32 = 1 │
00:03:24 #3470 [Verbose] > │ let v56 : int32 = 7 │
00:03:24 #3471 [Verbose] > │ let v57 : int32 = 0 │
00:03:24 #3472 [Verbose] > │ let v58 : US0 = US0_1(v57) │
00:03:24 #3473 [Verbose] > │ let v59 : int32 = 11 │
00:03:24 #3474 [Verbose] > │ let v60 : int32 = 7 │
00:03:24 #3475 [Verbose] > │ let v61 : int32 = 6 │
00:03:24 #3476 [Verbose] > │ let v62 : US0 = US0_1(v61) │
00:03:24 #3477 [Verbose] > │ let v63 : int32 = 12 │
00:03:24 #3478 [Verbose] > │ let v64 : int32 = 7 │
00:03:24 #3479 [Verbose] > │ let v65 : US0 = US0_0 │
00:03:24 #3480 [Verbose] > │ let v66 : int32 = 60 │
00:03:24 #3481 [Verbose] > │ let v67 : int32 = 100 │
00:03:24 #3482 [Verbose] > │ let v68 : int32 = 59 │
00:03:24 #3483 [Verbose] > │ let v69 : US0 = US0_1(v68) │
00:03:24 #3484 [Verbose] > │ let v70 : UH0 = UH0_1 │
00:03:24 #3485 [Verbose] > │ let v71 : UH0 = UH0_0(v27, v66, v67, v69, v70) │
00:03:24 #3486 [Verbose] > │ let v72 : UH0 = UH0_0(v26, v63, v64, v65, v71) │
00:03:24 #3487 [Verbose] > │ let v73 : UH0 = UH0_0(v24, v59, v60, v62, v72) │
00:03:24 #3488 [Verbose] > │ let v74 : UH0 = UH0_0(v22, v55, v56, v58, v73) │
00:03:24 #3489 [Verbose] > │ let v75 : UH0 = UH0_0(v20, v51, v52, v54, v74) │
00:03:24 #3490 [Verbose] > │ let v76 : UH0 = UH0_0(v12, v48, v18, v50, v75) │
00:03:24 #3491 [Verbose] > │ let v77 : UH0 = UH0_0(v10, v46, v11, v47, v76) │
00:03:24 #3492 [Verbose] > │ let v78 : UH0 = UH0_0(v7, v43, v8, v45, v77) │
00:03:24 #3493 [Verbose] > │ let v79 : UH0 = UH0_0(v4, v40, v5, v42, v78) │
00:03:24 #3494 [Verbose] > │ let v80 : UH0 = UH0_0(v1, v37, v2, v39, v79) │
00:03:24 #3495 [Verbose] > │ let v81 : (struct ((int32 []) * int32 * int32 * US0) []) = method3(v80) │
00:03:24 #3496 [Verbose] > │ let v82 : uint64 = System.Convert.ToUInt64 v81.Length │
00:03:24 #3497 [Verbose] > │ let v83 : (struct (string * string * string * (int64 [])) []) = │
00:03:24 #3498 [Verbose] > │ Array.zeroCreate<struct (string * string * string * (int64 []))> │
00:03:24 #3499 [Verbose] > │ (System.Convert.ToInt32(v82)) │
00:03:24 #3500 [Verbose] > │ let v84 : Mut1 = {l0 = 0UL} : Mut1 │
00:03:24 #3501 [Verbose] > │ while method6(v82, v84) do │
00:03:24 #3502 [Verbose] > │ let v86 : uint64 = v84.l0 │
00:03:24 #3503 [Verbose] > │ let struct (v87 : (int32 []), v88 : int32, v89 : int32, v90 : US0) = │
00:03:24 #3504 [Verbose] > │ v81.[int v86] │
00:03:24 #3505 [Verbose] > │ let v91 : string = $"%A{struct (v87, v88, v89)}" │
00:03:24 #3506 [Verbose] > │ System.Console.WriteLine v35 │
00:03:24 #3507 [Verbose] > │ let v92 : string = $"Solution: {v91} " │
00:03:24 #3508 [Verbose] > │ System.Console.WriteLine v92 │
00:03:24 #3509 [Verbose] > │ let v93 : int32 = 0 │
00:03:24 #3510 [Verbose] > │ let v94 : string = "semi_open_1" │
00:03:24 #3511 [Verbose] > │ let v95 : (struct ((int32 []) * int32 * int32) -> US0) = closure1() │
00:03:24 #3512 [Verbose] > │ let v96 : int32 = 1 │
00:03:24 #3513 [Verbose] > │ let v97 : string = "closed_1" │
00:03:24 #3514 [Verbose] > │ let v98 : (struct ((int32 []) * int32 * int32) -> US0) = closure2() │
00:03:24 #3515 [Verbose] > │ let v99 : int32 = 2 │
00:03:24 #3516 [Verbose] > │ let v100 : string = "semi_open_2" │
00:03:24 #3517 [Verbose] > │ let v101 : (struct ((int32 []) * int32 * int32) -> US0) = closure3() │
00:03:24 #3518 [Verbose] > │ let v102 : int32 = 3 │
00:03:24 #3519 [Verbose] > │ let v103 : string = "closed_2" │
00:03:24 #3520 [Verbose] > │ let v104 : (struct ((int32 []) * int32 * int32) -> US0) = closure4() │
00:03:24 #3521 [Verbose] > │ let v105 : UH1 = UH1_1 │
00:03:24 #3522 [Verbose] > │ let v106 : UH1 = UH1_0(v102, v103, v104, v105) │
00:03:24 #3523 [Verbose] > │ let v107 : UH1 = UH1_0(v99, v100, v101, v106) │
00:03:24 #3524 [Verbose] > │ let v108 : UH1 = UH1_0(v96, v97, v98, v107) │
00:03:24 #3525 [Verbose] > │ let v109 : UH1 = UH1_0(v93, v94, v95, v108) │
00:03:24 #3526 [Verbose] > │ let v110 : (struct (int32 * string * (struct ((int32 []) * int32 * │
00:03:24 #3527 [Verbose] > │ int32) -> US0)) []) = method11(v109) │
00:03:24 #3528 [Verbose] > │ let v111 : uint64 = System.Convert.ToUInt64 v110.Length │
00:03:24 #3529 [Verbose] > │ let v112 : (struct (US0 * int64) []) = Array.zeroCreate<struct (US0 │
00:03:24 #3530 [Verbose] > │ * int64)> (System.Convert.ToInt32(v111)) │
00:03:24 #3531 [Verbose] > │ let v113 : Mut1 = {l0 = 0UL} : Mut1 │
00:03:24 #3532 [Verbose] > │ while method6(v111, v113) do │
00:03:24 #3533 [Verbose] > │ let v115 : uint64 = v113.l0 │
00:03:24 #3534 [Verbose] > │ let struct (v116 : int32, v117 : string, v118 : (struct ((int32 │
00:03:24 #3535 [Verbose] > │ []) * int32 * int32) -> US0)) = v110.[int v115] │
00:03:24 #3536 [Verbose] > │ let mutable result = None │
00:03:24 #3537 [Verbose] > │ #if FABLE_COMPILER_RUST │
00:03:24 #3538 [Verbose] > │ #if !WASM │
00:03:24 #3539 [Verbose] > │ () │
00:03:24 #3540 [Verbose] > │ #else │
00:03:24 #3541 [Verbose] > │ () │
00:03:24 #3542 [Verbose] > │ #endif │
00:03:24 #3543 [Verbose] > │ #else │
00:03:24 #3544 [Verbose] > │ System.GC.Collect () │
00:03:24 #3545 [Verbose] > │ () │
00:03:24 #3546 [Verbose] > │ #endif │
00:03:24 #3547 [Verbose] > │ |> fun x -> result <- Some x │
00:03:24 #3548 [Verbose] > │ result |> Option.get │
00:03:24 #3549 [Verbose] > │ let v119 : (unit -> System.Diagnostics.Stopwatch) = │
00:03:24 #3550 [Verbose] > │ System.Diagnostics.Stopwatch │
00:03:24 #3551 [Verbose] > │ let v120 : System.Diagnostics.Stopwatch = v119 () │
00:03:24 #3552 [Verbose] > │ v120.Start () │
00:03:24 #3553 [Verbose] > │ let v121 : int64 = v120.ElapsedMilliseconds │
00:03:24 #3554 [Verbose] > │ let v122 : (int32 []) = Array.zeroCreate<int32> (8000001) │
00:03:24 #3555 [Verbose] > │ let v123 : Mut0 = {l0 = 0} : Mut0 │
00:03:24 #3556 [Verbose] > │ while method14(v123) do │
00:03:24 #3557 [Verbose] > │ let v125 : int32 = v123.l0 │
00:03:24 #3558 [Verbose] > │ v122.[int v125] <- v125 │
00:03:24 #3559 [Verbose] > │ let v126 : int32 = v125 + 1 │
00:03:24 #3560 [Verbose] > │ v123.l0 <- v126 │
00:03:24 #3561 [Verbose] > │ () │
00:03:24 #3562 [Verbose] > │ let v127 : (int32 -> US0) = closure5(v87, v88, v89, v118) │
00:03:24 #3563 [Verbose] > │ let v128 : (US0 []) = v122 |> Array.Parallel.map v127 │
00:03:24 #3564 [Verbose] > │ let v129 : int32 = v128.Length │
00:03:24 #3565 [Verbose] > │ let v130 : int32 = v129 - 1 │
00:03:24 #3566 [Verbose] > │ let v131 : US0 = v128.[int v130] │
00:03:24 #3567 [Verbose] > │ let v132 : int64 = v120.ElapsedMilliseconds │
00:03:24 #3568 [Verbose] > │ let v133 : int64 = v132 - v121 │
00:03:24 #3569 [Verbose] > │ let v134 : string = $"Test case {v116 + 1}. {v117}. Time: {v133} │
00:03:24 #3570 [Verbose] > │ " │
00:03:24 #3571 [Verbose] > │ System.Console.WriteLine v134 │
00:03:24 #3572 [Verbose] > │ v112.[int v115] <- struct (v131, v133) │
00:03:24 #3573 [Verbose] > │ let v135 : uint64 = v115 + 1UL │
00:03:24 #3574 [Verbose] > │ v113.l0 <- v135 │
00:03:24 #3575 [Verbose] > │ () │
00:03:24 #3576 [Verbose] > │ let v136 : uint64 = System.Convert.ToUInt64 v112.Length │
00:03:24 #3577 [Verbose] > │ let v137 : (US0 []) = Array.zeroCreate<US0> │
00:03:24 #3578 [Verbose] > │ (System.Convert.ToInt32(v136)) │
00:03:24 #3579 [Verbose] > │ let v138 : Mut1 = {l0 = 0UL} : Mut1 │
00:03:24 #3580 [Verbose] > │ while method6(v136, v138) do │
00:03:24 #3581 [Verbose] > │ let v140 : uint64 = v138.l0 │
00:03:24 #3582 [Verbose] > │ let struct (v141 : US0, v142 : int64) = v112.[int v140] │
00:03:24 #3583 [Verbose] > │ v137.[int v140] <- v141 │
00:03:24 #3584 [Verbose] > │ let v143 : uint64 = v140 + 1UL │
00:03:24 #3585 [Verbose] > │ v138.l0 <- v143 │
00:03:24 #3586 [Verbose] > │ () │
00:03:24 #3587 [Verbose] > │ let v144 : uint64 = System.Convert.ToUInt64 v137.Length │
00:03:24 #3588 [Verbose] > │ let v145 : bool = v144 <= 1UL │
00:03:24 #3589 [Verbose] > │ if v145 then │
00:03:24 #3590 [Verbose] > │ () │
00:03:24 #3591 [Verbose] > │ else │
00:03:24 #3592 [Verbose] > │ let v146 : US0 = v137.[int 0UL] │
00:03:24 #3593 [Verbose] > │ let v147 : uint64 = 0UL │
00:03:24 #3594 [Verbose] > │ let v148 : bool = method15(v146, v137, v147) │
00:03:24 #3595 [Verbose] > │ if v148 then │
00:03:24 #3596 [Verbose] > │ () │
00:03:24 #3597 [Verbose] > │ else │
00:03:24 #3598 [Verbose] > │ let v149 : string = $"Challenge error: {v137}" │
00:03:24 #3599 [Verbose] > │ failwith<unit> v149 │
00:03:24 #3600 [Verbose] > │ let v150 : string = $"%A{v90}" │
00:03:24 #3601 [Verbose] > │ let v151 : (US0 []) = Array.zeroCreate<US0> │
00:03:24 #3602 [Verbose] > │ (System.Convert.ToInt32(v136)) │
00:03:24 #3603 [Verbose] > │ let v152 : Mut1 = {l0 = 0UL} : Mut1 │
00:03:24 #3604 [Verbose] > │ while method6(v136, v152) do │
00:03:24 #3605 [Verbose] > │ let v154 : uint64 = v152.l0 │
00:03:24 #3606 [Verbose] > │ let struct (v155 : US0, v156 : int64) = v112.[int v154] │
00:03:24 #3607 [Verbose] > │ v151.[int v154] <- v155 │
00:03:24 #3608 [Verbose] > │ let v157 : uint64 = v154 + 1UL │
00:03:24 #3609 [Verbose] > │ v152.l0 <- v157 │
00:03:24 #3610 [Verbose] > │ () │
00:03:24 #3611 [Verbose] > │ let v158 : US0 = v151.[int 0UL] │
00:03:24 #3612 [Verbose] > │ let v159 : string = $"%A{v158}" │
00:03:24 #3613 [Verbose] > │ let v160 : (int64 []) = Array.zeroCreate<int64> │
00:03:24 #3614 [Verbose] > │ (System.Convert.ToInt32(v136)) │
00:03:24 #3615 [Verbose] > │ let v161 : Mut1 = {l0 = 0UL} : Mut1 │
00:03:24 #3616 [Verbose] > │ while method6(v136, v161) do │
00:03:24 #3617 [Verbose] > │ let v163 : uint64 = v161.l0 │
00:03:24 #3618 [Verbose] > │ let struct (v164 : US0, v165 : int64) = v112.[int v163] │
00:03:24 #3619 [Verbose] > │ v160.[int v163] <- v165 │
00:03:24 #3620 [Verbose] > │ let v166 : uint64 = v163 + 1UL │
00:03:24 #3621 [Verbose] > │ v161.l0 <- v166 │
00:03:24 #3622 [Verbose] > │ () │
00:03:24 #3623 [Verbose] > │ v83.[int v86] <- struct (v150, v91, v159, v160) │
00:03:24 #3624 [Verbose] > │ let v167 : uint64 = v86 + 1UL │
00:03:24 #3625 [Verbose] > │ v84.l0 <- v167 │
00:03:24 #3626 [Verbose] > │ () │
00:03:24 #3627 [Verbose] > │ let v168 : uint64 = System.Convert.ToUInt64 v83.Length │
00:03:24 #3628 [Verbose] > │ let v169 : (struct (UH2 * US1) []) = Array.zeroCreate<struct (UH2 * │
00:03:24 #3629 [Verbose] > │ US1)> (System.Convert.ToInt32(v168)) │
00:03:24 #3630 [Verbose] > │ let v170 : Mut1 = {l0 = 0UL} : Mut1 │
00:03:24 #3631 [Verbose] > │ while method6(v168, v170) do │
00:03:24 #3632 [Verbose] > │ let v172 : uint64 = v170.l0 │
00:03:24 #3633 [Verbose] > │ let struct (v173 : string, v174 : string, v175 : string, v176 : │
00:03:24 #3634 [Verbose] > │ (int64 [])) = v83.[int v172] │
00:03:24 #3635 [Verbose] > │ let v177 : uint64 = System.Convert.ToUInt64 v176.Length │
00:03:24 #3636 [Verbose] > │ let v178 : UH3 = UH3_1 │
00:03:24 #3637 [Verbose] > │ let v179 : Mut2 = {l0 = 0UL; l1 = v178; l2 = 0L} : Mut2 │
00:03:24 #3638 [Verbose] > │ while method16(v177, v179) do │
00:03:24 #3639 [Verbose] > │ let v181 : uint64 = v179.l0 │
00:03:24 #3640 [Verbose] > │ let struct (v182 : UH3, v183 : int64) = v179.l1, v179.l2 │
00:03:24 #3641 [Verbose] > │ let v184 : int64 = v176.[int v181] │
00:03:24 #3642 [Verbose] > │ let v185 : int64 = v183 + 1L │
00:03:24 #3643 [Verbose] > │ let v186 : uint64 = v181 + 1UL │
00:03:24 #3644 [Verbose] > │ let v187 : UH3 = UH3_0(v183, v184, v182) │
00:03:24 #3645 [Verbose] > │ v179.l0 <- v186 │
00:03:24 #3646 [Verbose] > │ v179.l1 <- v187 │
00:03:24 #3647 [Verbose] > │ v179.l2 <- v185 │
00:03:24 #3648 [Verbose] > │ () │
00:03:24 #3649 [Verbose] > │ let struct (v188 : UH3, v189 : int64) = v179.l1, v179.l2 │
00:03:24 #3650 [Verbose] > │ let v190 : UH3 = UH3_1 │
00:03:24 #3651 [Verbose] > │ let v191 : UH3 = method17(v188, v190) │
00:03:24 #3652 [Verbose] > │ let v192 : (struct (int64 * int64) []) = method18(v191) │
00:03:24 #3653 [Verbose] > │ let v193 : int32 = v192.Length │
00:03:24 #3654 [Verbose] > │ let v194 : (struct (int64 * int64) []) = Array.zeroCreate<struct │
00:03:24 #3655 [Verbose] > │ (int64 * int64)> (v193) │
00:03:24 #3656 [Verbose] > │ let v195 : Mut0 = {l0 = 0} : Mut0 │
00:03:24 #3657 [Verbose] > │ while method21(v193, v195) do │
00:03:24 #3658 [Verbose] > │ let v197 : int32 = v195.l0 │
00:03:24 #3659 [Verbose] > │ let struct (v198 : int64, v199 : int64) = v192.[int v197] │
00:03:24 #3660 [Verbose] > │ let v200 : int64 = v198 + 1L │
00:03:24 #3661 [Verbose] > │ v194.[int v197] <- struct (v200, v199) │
00:03:24 #3662 [Verbose] > │ let v201 : int32 = v197 + 1 │
00:03:24 #3663 [Verbose] > │ v195.l0 <- v201 │
00:03:24 #3664 [Verbose] > │ () │
00:03:24 #3665 [Verbose] > │ let v202 : (struct (int64 * int64) -> int64) = closure6() │
00:03:24 #3666 [Verbose] > │ let v203 : (struct (int64 * int64) []) = v194 |> Array.sortBy v202 │
00:03:24 #3667 [Verbose] > │ let struct (v204 : int64, v205 : int64) = v203.[int 0] │
00:03:24 #3668 [Verbose] > │ let v206 : string = $"%A{struct (v204, v205)}" │
00:03:24 #3669 [Verbose] > │ let v207 : bool = v173 = v175 │
00:03:24 #3670 [Verbose] > │ let v212 : US1 = │
00:03:24 #3671 [Verbose] > │ if v207 then │
00:03:24 #3672 [Verbose] > │ let v208 : System.ConsoleColor = │
00:03:24 #3673 [Verbose] > │ System.ConsoleColor.DarkGreen │
00:03:24 #3674 [Verbose] > │ US1_1(v208) │
00:03:24 #3675 [Verbose] > │ else │
00:03:24 #3676 [Verbose] > │ let v210 : System.ConsoleColor = System.ConsoleColor.DarkRed │
00:03:24 #3677 [Verbose] > │ US1_1(v210) │
00:03:24 #3678 [Verbose] > │ let v213 : UH2 = UH2_1 │
00:03:24 #3679 [Verbose] > │ let v214 : UH2 = UH2_0(v206, v213) │
00:03:24 #3680 [Verbose] > │ let v215 : UH2 = UH2_0(v175, v214) │
00:03:24 #3681 [Verbose] > │ let v216 : UH2 = UH2_0(v173, v215) │
00:03:24 #3682 [Verbose] > │ let v217 : UH2 = UH2_0(v174, v216) │
00:03:24 #3683 [Verbose] > │ v169.[int v172] <- struct (v217, v212) │
00:03:24 #3684 [Verbose] > │ let v218 : uint64 = v172 + 1UL │
00:03:24 #3685 [Verbose] > │ v170.l0 <- v218 │
00:03:24 #3686 [Verbose] > │ () │
00:03:24 #3687 [Verbose] > │ let v219 : string = "Input" │
00:03:24 #3688 [Verbose] > │ let v220 : string = "Expected" │
00:03:24 #3689 [Verbose] > │ let v221 : string = "Result" │
00:03:24 #3690 [Verbose] > │ let v222 : string = "Best" │
00:03:24 #3691 [Verbose] > │ let v223 : UH2 = UH2_1 │
00:03:24 #3692 [Verbose] > │ let v224 : UH2 = UH2_0(v222, v223) │
00:03:24 #3693 [Verbose] > │ let v225 : UH2 = UH2_0(v221, v224) │
00:03:24 #3694 [Verbose] > │ let v226 : UH2 = UH2_0(v220, v225) │
00:03:24 #3695 [Verbose] > │ let v227 : UH2 = UH2_0(v219, v226) │
00:03:24 #3696 [Verbose] > │ let v228 : US1 = US1_0 │
00:03:24 #3697 [Verbose] > │ let v229 : string = "---" │
00:03:24 #3698 [Verbose] > │ let v230 : UH2 = UH2_1 │
00:03:24 #3699 [Verbose] > │ let v231 : UH2 = UH2_0(v229, v230) │
00:03:24 #3700 [Verbose] > │ let v232 : UH2 = UH2_0(v229, v231) │
00:03:24 #3701 [Verbose] > │ let v233 : UH2 = UH2_0(v229, v232) │
00:03:24 #3702 [Verbose] > │ let v234 : UH2 = UH2_0(v229, v233) │
00:03:24 #3703 [Verbose] > │ let v235 : US1 = US1_0 │
00:03:24 #3704 [Verbose] > │ let v236 : UH4 = UH4_1 │
00:03:24 #3705 [Verbose] > │ let v237 : UH4 = UH4_0(v234, v235, v236) │
00:03:24 #3706 [Verbose] > │ let v238 : UH4 = UH4_0(v227, v228, v237) │
00:03:24 #3707 [Verbose] > │ let v239 : (struct (UH2 * US1) []) = method22(v238) │
00:03:24 #3708 [Verbose] > │ let v240 : uint64 = System.Convert.ToUInt64 v239.Length │
00:03:24 #3709 [Verbose] > │ let v241 : uint64 = System.Convert.ToUInt64 v169.Length │
00:03:24 #3710 [Verbose] > │ let v242 : uint64 = v240 + v241 │
00:03:24 #3711 [Verbose] > │ let v243 : (struct (UH2 * US1) []) = Array.zeroCreate<struct (UH2 * │
00:03:24 #3712 [Verbose] > │ US1)> (System.Convert.ToInt32(v242)) │
00:03:24 #3713 [Verbose] > │ let v244 : Mut1 = {l0 = 0UL} : Mut1 │
00:03:24 #3714 [Verbose] > │ while method6(v242, v244) do │
00:03:24 #3715 [Verbose] > │ let v246 : uint64 = v244.l0 │
00:03:24 #3716 [Verbose] > │ let v247 : bool = v246 < v240 │
00:03:24 #3717 [Verbose] > │ let struct (v253 : UH2, v254 : US1) = │
00:03:24 #3718 [Verbose] > │ if v247 then │
00:03:24 #3719 [Verbose] > │ let struct (v248 : UH2, v249 : US1) = v239.[int v246] │
00:03:24 #3720 [Verbose] > │ struct (v248, v249) │
00:03:24 #3721 [Verbose] > │ else │
00:03:24 #3722 [Verbose] > │ let v250 : uint64 = v246 - v240 │
00:03:24 #3723 [Verbose] > │ let struct (v251 : UH2, v252 : US1) = v169.[int v250] │
00:03:24 #3724 [Verbose] > │ struct (v251, v252) │
00:03:24 #3725 [Verbose] > │ v243.[int v246] <- struct (v253, v254) │
00:03:24 #3726 [Verbose] > │ let v255 : uint64 = v246 + 1UL │
00:03:24 #3727 [Verbose] > │ v244.l0 <- v255 │
00:03:24 #3728 [Verbose] > │ () │
00:03:24 #3729 [Verbose] > │ let v256 : uint64 = System.Convert.ToUInt64 v243.Length │
00:03:24 #3730 [Verbose] > │ let v257 : ((string []) []) = Array.zeroCreate<(string [])> │
00:03:24 #3731 [Verbose] > │ (System.Convert.ToInt32(v256)) │
00:03:24 #3732 [Verbose] > │ let v258 : Mut1 = {l0 = 0UL} : Mut1 │
00:03:24 #3733 [Verbose] > │ while method6(v256, v258) do │
00:03:24 #3734 [Verbose] > │ let v260 : uint64 = v258.l0 │
00:03:24 #3735 [Verbose] > │ let struct (v261 : UH2, v262 : US1) = v243.[int v260] │
00:03:24 #3736 [Verbose] > │ let v263 : (string []) = method25(v261) │
00:03:24 #3737 [Verbose] > │ v257.[int v260] <- v263 │
00:03:24 #3738 [Verbose] > │ let v264 : uint64 = v260 + 1UL │
00:03:24 #3739 [Verbose] > │ v258.l0 <- v264 │
00:03:24 #3740 [Verbose] > │ () │
00:03:24 #3741 [Verbose] > │ let v265 : ((string []) []) = v257 |> Array.transpose │
00:03:24 #3742 [Verbose] > │ let v266 : uint64 = System.Convert.ToUInt64 v265.Length │
00:03:24 #3743 [Verbose] > │ let v267 : (int64 []) = Array.zeroCreate<int64> │
00:03:24 #3744 [Verbose] > │ (System.Convert.ToInt32(v266)) │
00:03:24 #3745 [Verbose] > │ let v268 : Mut1 = {l0 = 0UL} : Mut1 │
00:03:24 #3746 [Verbose] > │ while method6(v266, v268) do │
00:03:24 #3747 [Verbose] > │ let v270 : uint64 = v268.l0 │
00:03:24 #3748 [Verbose] > │ let v271 : (string []) = v265.[int v270] │
00:03:24 #3749 [Verbose] > │ let v272 : uint64 = System.Convert.ToUInt64 v271.Length │
00:03:24 #3750 [Verbose] > │ let v273 : (int64 []) = Array.zeroCreate<int64> │
00:03:24 #3751 [Verbose] > │ (System.Convert.ToInt32(v272)) │
00:03:24 #3752 [Verbose] > │ let v274 : Mut1 = {l0 = 0UL} : Mut1 │
00:03:24 #3753 [Verbose] > │ while method6(v272, v274) do │
00:03:24 #3754 [Verbose] > │ let v276 : uint64 = v274.l0 │
00:03:24 #3755 [Verbose] > │ let v277 : string = v271.[int v276] │
00:03:24 #3756 [Verbose] > │ let v278 : int64 = System.Convert.ToInt64 v277.Length │
00:03:24 #3757 [Verbose] > │ v273.[int v276] <- v278 │
00:03:24 #3758 [Verbose] > │ let v279 : uint64 = v276 + 1UL │
00:03:24 #3759 [Verbose] > │ v274.l0 <- v279 │
00:03:24 #3760 [Verbose] > │ () │
00:03:24 #3761 [Verbose] > │ let v280 : (int64 []) = v273 |> Array.sortDescending │
00:03:24 #3762 [Verbose] > │ let v281 : int64 option = v280 |> Array.tryItem 0 │
00:03:24 #3763 [Verbose] > │ let v282 : (int64 -> US2) = closure7() │
00:03:24 #3764 [Verbose] > │ let v283 : US2 = US2_0 │
00:03:24 #3765 [Verbose] > │ let v284 : US2 = v281 |> Option.map v282 |> Option.defaultValue v283 │
00:03:24 #3766 [Verbose] > │ let v287 : int64 = │
00:03:24 #3767 [Verbose] > │ match v284 with │
00:03:24 #3768 [Verbose] > │ | US2_0 -> (* None *) │
00:03:24 #3769 [Verbose] > │ 0L │
00:03:24 #3770 [Verbose] > │ | US2_1(v285) -> (* Some *) │
00:03:24 #3771 [Verbose] > │ v285 │
00:03:24 #3772 [Verbose] > │ v267.[int v270] <- v287 │
00:03:24 #3773 [Verbose] > │ let v288 : uint64 = v270 + 1UL │
00:03:24 #3774 [Verbose] > │ v268.l0 <- v288 │
00:03:24 #3775 [Verbose] > │ () │
00:03:24 #3776 [Verbose] > │ let v289 : uint64 = System.Convert.ToUInt64 v267.Length │
00:03:24 #3777 [Verbose] > │ let v290 : UH5 = UH5_1 │
00:03:24 #3778 [Verbose] > │ let v291 : Mut3 = {l0 = 0UL; l1 = v290; l2 = 0} : Mut3 │
00:03:24 #3779 [Verbose] > │ while method28(v289, v291) do │
00:03:24 #3780 [Verbose] > │ let v293 : uint64 = v291.l0 │
00:03:24 #3781 [Verbose] > │ let struct (v294 : UH5, v295 : int32) = v291.l1, v291.l2 │
00:03:24 #3782 [Verbose] > │ let v296 : int64 = v267.[int v293] │
00:03:24 #3783 [Verbose] > │ let v297 : int32 = v295 + 1 │
00:03:24 #3784 [Verbose] > │ let v298 : uint64 = v293 + 1UL │
00:03:24 #3785 [Verbose] > │ let v299 : UH5 = UH5_0(v295, v296, v294) │
00:03:24 #3786 [Verbose] > │ v291.l0 <- v298 │
00:03:24 #3787 [Verbose] > │ v291.l1 <- v299 │
00:03:24 #3788 [Verbose] > │ v291.l2 <- v297 │
00:03:24 #3789 [Verbose] > │ () │
00:03:24 #3790 [Verbose] > │ let struct (v300 : UH5, v301 : int32) = v291.l1, v291.l2 │
00:03:24 #3791 [Verbose] > │ let v302 : UH5 = UH5_1 │
00:03:24 #3792 [Verbose] > │ let v303 : UH5 = method29(v300, v302) │
00:03:24 #3793 [Verbose] > │ let v304 : (struct (int32 * int64) []) = method30(v303) │
00:03:24 #3794 [Verbose] > │ let v305 : Map<int32, int64> = v304 |> Array.map (fun (struct (a, b)) -> │
00:03:24 #3795 [Verbose] > │ a, b) |> Map.ofArray │
00:03:24 #3796 [Verbose] > │ let v306 : (struct ((string []) * US1) []) = Array.zeroCreate<struct │
00:03:24 #3797 [Verbose] > │ ((string []) * US1)> (System.Convert.ToInt32(v256)) │
00:03:24 #3798 [Verbose] > │ let v307 : Mut1 = {l0 = 0UL} : Mut1 │
00:03:24 #3799 [Verbose] > │ while method6(v256, v307) do │
00:03:24 #3800 [Verbose] > │ let v309 : uint64 = v307.l0 │
00:03:24 #3801 [Verbose] > │ let struct (v310 : UH2, v311 : US1) = v243.[int v309] │
00:03:24 #3802 [Verbose] > │ let v312 : UH6 = UH6_1 │
00:03:24 #3803 [Verbose] > │ let v313 : int32 = 0 │
00:03:24 #3804 [Verbose] > │ let struct (v314 : UH6, v315 : int32) = method33(v310, v312, v313) │
00:03:24 #3805 [Verbose] > │ let v316 : UH6 = UH6_1 │
00:03:24 #3806 [Verbose] > │ let v317 : UH6 = method34(v314, v316) │
00:03:24 #3807 [Verbose] > │ let v318 : UH2 = UH2_1 │
00:03:24 #3808 [Verbose] > │ let v319 : UH2 = method35(v305, v317, v318) │
00:03:24 #3809 [Verbose] > │ let v320 : (string []) = method36(v319) │
00:03:24 #3810 [Verbose] > │ v306.[int v309] <- struct (v320, v311) │
00:03:24 #3811 [Verbose] > │ let v321 : uint64 = v309 + 1UL │
00:03:24 #3812 [Verbose] > │ v307.l0 <- v321 │
00:03:24 #3813 [Verbose] > │ () │
00:03:24 #3814 [Verbose] > │ System.Console.WriteLine v35 │
00:03:24 #3815 [Verbose] > │ let v322 : uint64 = System.Convert.ToUInt64 v306.Length │
00:03:24 #3816 [Verbose] > │ let v323 : Mut1 = {l0 = 0UL} : Mut1 │
00:03:24 #3817 [Verbose] > │ while method6(v322, v323) do │
00:03:24 #3818 [Verbose] > │ let v325 : uint64 = v323.l0 │
00:03:24 #3819 [Verbose] > │ let struct (v326 : (string []), v327 : US1) = v306.[int v325] │
00:03:24 #3820 [Verbose] > │ match v327 with │
00:03:24 #3821 [Verbose] > │ | US1_0 -> (* None *) │
00:03:24 #3822 [Verbose] > │ let mutable result = None │
00:03:24 #3823 [Verbose] > │ #if FABLE_COMPILER_RUST │
00:03:24 #3824 [Verbose] > │ #if !WASM │
00:03:24 #3825 [Verbose] > │ () │
00:03:24 #3826 [Verbose] > │ #else │
00:03:24 #3827 [Verbose] > │ () │
00:03:24 #3828 [Verbose] > │ #endif │
00:03:24 #3829 [Verbose] > │ #else │
00:03:24 #3830 [Verbose] > │ System.Console.ResetColor () │
00:03:24 #3831 [Verbose] > │ () │
00:03:24 #3832 [Verbose] > │ #endif │
00:03:24 #3833 [Verbose] > │ |> fun x -> result <- Some x │
00:03:24 #3834 [Verbose] > │ result |> Option.get │
00:03:24 #3835 [Verbose] > │ () │
00:03:24 #3836 [Verbose] > │ | US1_1(v328) -> (* Some *) │
00:03:24 #3837 [Verbose] > │ let mutable result = None │
00:03:24 #3838 [Verbose] > │ #if FABLE_COMPILER_RUST │
00:03:24 #3839 [Verbose] > │ #if !WASM │
00:03:24 #3840 [Verbose] > │ () │
00:03:24 #3841 [Verbose] > │ #else │
00:03:24 #3842 [Verbose] > │ () │
00:03:24 #3843 [Verbose] > │ #endif │
00:03:24 #3844 [Verbose] > │ #else │
00:03:24 #3845 [Verbose] > │ System.Console.ForegroundColor <- v328 │
00:03:24 #3846 [Verbose] > │ () │
00:03:24 #3847 [Verbose] > │ #endif │
00:03:24 #3848 [Verbose] > │ |> fun x -> result <- Some x │
00:03:24 #3849 [Verbose] > │ result |> Option.get │
00:03:24 #3850 [Verbose] > │ () │
00:03:24 #3851 [Verbose] > │ let v329 : string = "\t| " │
00:03:24 #3852 [Verbose] > │ let v330 : string = System.String.Join (v329, v326) │
00:03:24 #3853 [Verbose] > │ System.Console.WriteLine v330 │
00:03:24 #3854 [Verbose] > │ let mutable result = None │
00:03:24 #3855 [Verbose] > │ #if FABLE_COMPILER_RUST │
00:03:24 #3856 [Verbose] > │ #if !WASM │
00:03:24 #3857 [Verbose] > │ () │
00:03:24 #3858 [Verbose] > │ #else │
00:03:24 #3859 [Verbose] > │ () │
00:03:24 #3860 [Verbose] > │ #endif │
00:03:24 #3861 [Verbose] > │ #else │
00:03:24 #3862 [Verbose] > │ System.Console.ResetColor () │
00:03:24 #3863 [Verbose] > │ () │
00:03:24 #3864 [Verbose] > │ #endif │
00:03:24 #3865 [Verbose] > │ |> fun x -> result <- Some x │
00:03:24 #3866 [Verbose] > │ result |> Option.get │
00:03:24 #3867 [Verbose] > │ let v331 : uint64 = v325 + 1UL │
00:03:24 #3868 [Verbose] > │ v323.l0 <- v331 │
00:03:24 #3869 [Verbose] > │ () │
00:03:24 #3870 [Verbose] > │ let v332 : ((float []) []) = Array.zeroCreate<(float [])> │
00:03:24 #3871 [Verbose] > │ (System.Convert.ToInt32(v168)) │
00:03:24 #3872 [Verbose] > │ let v333 : Mut1 = {l0 = 0UL} : Mut1 │
00:03:24 #3873 [Verbose] > │ while method6(v168, v333) do │
00:03:24 #3874 [Verbose] > │ let v335 : uint64 = v333.l0 │
00:03:24 #3875 [Verbose] > │ let struct (v336 : string, v337 : string, v338 : string, v339 : │
00:03:24 #3876 [Verbose] > │ (int64 [])) = v83.[int v335] │
00:03:24 #3877 [Verbose] > │ let v340 : (int64 -> float) = float │
00:03:24 #3878 [Verbose] > │ let v341 : uint64 = System.Convert.ToUInt64 v339.Length │
00:03:24 #3879 [Verbose] > │ let v342 : (float []) = Array.zeroCreate<float> │
00:03:24 #3880 [Verbose] > │ (System.Convert.ToInt32(v341)) │
00:03:24 #3881 [Verbose] > │ let v343 : Mut1 = {l0 = 0UL} : Mut1 │
00:03:24 #3882 [Verbose] > │ while method6(v341, v343) do │
00:03:24 #3883 [Verbose] > │ let v345 : uint64 = v343.l0 │
00:03:24 #3884 [Verbose] > │ let v346 : int64 = v339.[int v345] │
00:03:24 #3885 [Verbose] > │ let v347 : float = v340 v346 │
00:03:24 #3886 [Verbose] > │ v342.[int v345] <- v347 │
00:03:24 #3887 [Verbose] > │ let v348 : uint64 = v345 + 1UL │
00:03:24 #3888 [Verbose] > │ v343.l0 <- v348 │
00:03:24 #3889 [Verbose] > │ () │
00:03:24 #3890 [Verbose] > │ v332.[int v335] <- v342 │
00:03:24 #3891 [Verbose] > │ let v349 : uint64 = v335 + 1UL │
00:03:24 #3892 [Verbose] > │ v333.l0 <- v349 │
00:03:24 #3893 [Verbose] > │ () │
00:03:24 #3894 [Verbose] > │ let v350 : ((float []) []) = v332 |> Array.transpose │
00:03:24 #3895 [Verbose] > │ let v351 : uint64 = System.Convert.ToUInt64 v350.Length │
00:03:24 #3896 [Verbose] > │ let v352 : (float []) = Array.zeroCreate<float> │
00:03:24 #3897 [Verbose] > │ (System.Convert.ToInt32(v351)) │
00:03:24 #3898 [Verbose] > │ let v353 : Mut1 = {l0 = 0UL} : Mut1 │
00:03:24 #3899 [Verbose] > │ while method6(v351, v353) do │
00:03:24 #3900 [Verbose] > │ let v355 : uint64 = v353.l0 │
00:03:24 #3901 [Verbose] > │ let v356 : (float []) = v350.[int v355] │
00:03:24 #3902 [Verbose] > │ let v357 : float = v356 |> Array.average │
00:03:24 #3903 [Verbose] > │ v352.[int v355] <- v357 │
00:03:24 #3904 [Verbose] > │ let v358 : uint64 = v355 + 1UL │
00:03:24 #3905 [Verbose] > │ v353.l0 <- v358 │
00:03:24 #3906 [Verbose] > │ () │
00:03:24 #3907 [Verbose] > │ let v359 : (float -> int64) = int64 │
00:03:24 #3908 [Verbose] > │ let v360 : uint64 = System.Convert.ToUInt64 v352.Length │
00:03:24 #3909 [Verbose] > │ let v361 : (int64 []) = Array.zeroCreate<int64> │
00:03:24 #3910 [Verbose] > │ (System.Convert.ToInt32(v360)) │
00:03:24 #3911 [Verbose] > │ let v362 : Mut1 = {l0 = 0UL} : Mut1 │
00:03:24 #3912 [Verbose] > │ while method6(v360, v362) do │
00:03:24 #3913 [Verbose] > │ let v364 : uint64 = v362.l0 │
00:03:24 #3914 [Verbose] > │ let v365 : float = v352.[int v364] │
00:03:24 #3915 [Verbose] > │ let v366 : int64 = v359 v365 │
00:03:24 #3916 [Verbose] > │ v361.[int v364] <- v366 │
00:03:24 #3917 [Verbose] > │ let v367 : uint64 = v364 + 1UL │
00:03:24 #3918 [Verbose] > │ v362.l0 <- v367 │
00:03:24 #3919 [Verbose] > │ () │
00:03:24 #3920 [Verbose] > │ let v368 : uint64 = System.Convert.ToUInt64 v361.Length │
00:03:24 #3921 [Verbose] > │ let v369 : UH5 = UH5_1 │
00:03:24 #3922 [Verbose] > │ let v370 : Mut3 = {l0 = 0UL; l1 = v369; l2 = 0} : Mut3 │
00:03:24 #3923 [Verbose] > │ while method28(v368, v370) do │
00:03:24 #3924 [Verbose] > │ let v372 : uint64 = v370.l0 │
00:03:24 #3925 [Verbose] > │ let struct (v373 : UH5, v374 : int32) = v370.l1, v370.l2 │
00:03:24 #3926 [Verbose] > │ let v375 : int64 = v361.[int v372] │
00:03:24 #3927 [Verbose] > │ let v376 : int32 = v374 + 1 │
00:03:24 #3928 [Verbose] > │ let v377 : uint64 = v372 + 1UL │
00:03:24 #3929 [Verbose] > │ let v378 : UH5 = UH5_0(v374, v375, v373) │
00:03:24 #3930 [Verbose] > │ v370.l0 <- v377 │
00:03:24 #3931 [Verbose] > │ v370.l1 <- v378 │
00:03:24 #3932 [Verbose] > │ v370.l2 <- v376 │
00:03:24 #3933 [Verbose] > │ () │
00:03:24 #3934 [Verbose] > │ let struct (v379 : UH5, v380 : int32) = v370.l1, v370.l2 │
00:03:24 #3935 [Verbose] > │ let v381 : UH5 = UH5_1 │
00:03:24 #3936 [Verbose] > │ let v382 : UH5 = method29(v379, v381) │
00:03:24 #3937 [Verbose] > │ let v383 : (struct (int32 * int64) []) = method39(v382) │
00:03:24 #3938 [Verbose] > │ System.Console.WriteLine v35 │
00:03:24 #3939 [Verbose] > │ let v384 : string = "Average Ranking " │
00:03:24 #3940 [Verbose] > │ System.Console.WriteLine v384 │
00:03:24 #3941 [Verbose] > │ let v385 : (struct (int32 * int64) -> int64) = closure8() │
00:03:24 #3942 [Verbose] > │ let v386 : (struct (int32 * int64) []) = v383 |> Array.sortBy v385 │
00:03:24 #3943 [Verbose] > │ let v387 : uint64 = System.Convert.ToUInt64 v386.Length │
00:03:24 #3944 [Verbose] > │ let v388 : Mut1 = {l0 = 0UL} : Mut1 │
00:03:24 #3945 [Verbose] > │ while method6(v387, v388) do │
00:03:24 #3946 [Verbose] > │ let v390 : uint64 = v388.l0 │
00:03:24 #3947 [Verbose] > │ let struct (v391 : int32, v392 : int64) = v386.[int v390] │
00:03:24 #3948 [Verbose] > │ let v393 : string = $"Test case %d{v391 + 1}. Average Time: %A{v392} │
00:03:24 #3949 [Verbose] > │ " │
00:03:24 #3950 [Verbose] > │ System.Console.WriteLine v393 │
00:03:24 #3951 [Verbose] > │ let v394 : uint64 = v390 + 1UL │
00:03:24 #3952 [Verbose] > │ v388.l0 <- v394 │
00:03:24 #3953 [Verbose] > │ () │
00:03:24 #3954 [Verbose] > │ () │
00:03:24 #3955 [Verbose] > │ and method0 () : unit = │
00:03:24 #3956 [Verbose] > │ let v0 : (int32 []) = [|1; 3; 4; 6; 8; 9; 11|] │
00:03:24 #3957 [Verbose] > │ let v1 : (int32 []) = method1(v0) │
00:03:24 #3958 [Verbose] > │ let v2 : int32 = v1.Length │
00:03:24 #3959 [Verbose] > │ let v3 : (int32 []) = [|1; 3; 4; 6; 8; 9; 11|] │
00:03:24 #3960 [Verbose] > │ let v4 : (int32 []) = method1(v3) │
00:03:24 #3961 [Verbose] > │ let v5 : int32 = v4.Length │
00:03:24 #3962 [Verbose] > │ let v6 : (int32 []) = [|1; 3; 4; 6; 8; 9; 11|] │
00:03:24 #3963 [Verbose] > │ let v7 : (int32 []) = method1(v6) │
00:03:24 #3964 [Verbose] > │ let v8 : int32 = v7.Length │
00:03:24 #3965 [Verbose] > │ let v9 : (int32 []) = [|1; 3; 4; 6; 8; 9; 11|] │
00:03:24 #3966 [Verbose] > │ let v10 : (int32 []) = method1(v9) │
00:03:24 #3967 [Verbose] > │ let v11 : int32 = v10.Length │
00:03:24 #3968 [Verbose] > │ let v12 : (int32 []) = Array.zeroCreate<int32> (100) │
00:03:24 #3969 [Verbose] > │ let v13 : Mut0 = {l0 = 0} : Mut0 │
00:03:24 #3970 [Verbose] > │ while method2(v13) do │
00:03:24 #3971 [Verbose] > │ let v15 : int32 = v13.l0 │
00:03:24 #3972 [Verbose] > │ let v16 : int32 = 1 + v15 │
00:03:24 #3973 [Verbose] > │ v12.[int v15] <- v16 │
00:03:24 #3974 [Verbose] > │ let v17 : int32 = v15 + 1 │
00:03:24 #3975 [Verbose] > │ v13.l0 <- v17 │
00:03:24 #3976 [Verbose] > │ () │
00:03:24 #3977 [Verbose] > │ let v18 : int32 = v12.Length │
00:03:24 #3978 [Verbose] > │ let v19 : (int32 []) = [|1; 3; 4; 6; 8; 9; 11|] │
00:03:24 #3979 [Verbose] > │ let v20 : (int32 []) = method1(v19) │
00:03:24 #3980 [Verbose] > │ let v21 : (int32 []) = [|1; 3; 4; 6; 8; 9; 11|] │
00:03:24 #3981 [Verbose] > │ let v22 : (int32 []) = method1(v21) │
00:03:24 #3982 [Verbose] > │ let v23 : (int32 []) = [|1; 3; 4; 6; 8; 9; 11|] │
00:03:24 #3983 [Verbose] > │ let v24 : (int32 []) = method1(v23) │
00:03:24 #3984 [Verbose] > │ let v25 : (int32 []) = [|1; 3; 4; 6; 8; 9; 11|] │
00:03:24 #3985 [Verbose] > │ let v26 : (int32 []) = method1(v25) │
00:03:24 #3986 [Verbose] > │ let v27 : (int32 []) = Array.zeroCreate<int32> (100) │
00:03:24 #3987 [Verbose] > │ let v28 : Mut0 = {l0 = 0} : Mut0 │
00:03:24 #3988 [Verbose] > │ while method2(v28) do │
00:03:24 #3989 [Verbose] > │ let v30 : int32 = v28.l0 │
00:03:24 #3990 [Verbose] > │ let v31 : int32 = 1 + v30 │
00:03:24 #3991 [Verbose] > │ v27.[int v30] <- v31 │
00:03:24 #3992 [Verbose] > │ let v32 : int32 = v30 + 1 │
00:03:24 #3993 [Verbose] > │ v28.l0 <- v32 │
00:03:24 #3994 [Verbose] > │ () │
00:03:24 #3995 [Verbose] > │ let v33 : (unit -> unit) = closure0() │
00:03:24 #3996 [Verbose] > │ let v34 : string = nameof v33 │
00:03:24 #3997 [Verbose] > │ let v35 : string = "" │
00:03:24 #3998 [Verbose] > │ System.Console.WriteLine v35 │
00:03:24 #3999 [Verbose] > │ System.Console.WriteLine v35 │
00:03:24 #4000 [Verbose] > │ let v36 : string = $"Test: {v34}" │
00:03:24 #4001 [Verbose] > │ System.Console.WriteLine v36 │
00:03:24 #4002 [Verbose] > │ let v37 : int32 = 6 │
00:03:24 #4003 [Verbose] > │ let v38 : int32 = 3 │
00:03:24 #4004 [Verbose] > │ let v39 : US0 = US0_1(v38) │
00:03:24 #4005 [Verbose] > │ let v40 : int32 = 1 │
00:03:24 #4006 [Verbose] > │ let v41 : int32 = 0 │
00:03:24 #4007 [Verbose] > │ let v42 : US0 = US0_1(v41) │
00:03:24 #4008 [Verbose] > │ let v43 : int32 = 11 │
00:03:24 #4009 [Verbose] > │ let v44 : int32 = 6 │
00:03:24 #4010 [Verbose] > │ let v45 : US0 = US0_1(v44) │
00:03:24 #4011 [Verbose] > │ let v46 : int32 = 12 │
00:03:24 #4012 [Verbose] > │ let v47 : US0 = US0_0 │
00:03:24 #4013 [Verbose] > │ let v48 : int32 = 60 │
00:03:24 #4014 [Verbose] > │ let v49 : int32 = 59 │
00:03:24 #4015 [Verbose] > │ let v50 : US0 = US0_1(v49) │
00:03:24 #4016 [Verbose] > │ let v51 : int32 = 6 │
00:03:24 #4017 [Verbose] > │ let v52 : int32 = 7 │
00:03:24 #4018 [Verbose] > │ let v53 : int32 = 3 │
00:03:24 #4019 [Verbose] > │ let v54 : US0 = US0_1(v53) │
00:03:24 #4020 [Verbose] > │ let v55 : int32 = 1 │
00:03:24 #4021 [Verbose] > │ let v56 : int32 = 7 │
00:03:24 #4022 [Verbose] > │ let v57 : int32 = 0 │
00:03:24 #4023 [Verbose] > │ let v58 : US0 = US0_1(v57) │
00:03:24 #4024 [Verbose] > │ let v59 : int32 = 11 │
00:03:24 #4025 [Verbose] > │ let v60 : int32 = 7 │
00:03:24 #4026 [Verbose] > │ let v61 : int32 = 6 │
00:03:24 #4027 [Verbose] > │ let v62 : US0 = US0_1(v61) │
00:03:24 #4028 [Verbose] > │ let v63 : int32 = 12 │
00:03:24 #4029 [Verbose] > │ let v64 : int32 = 7 │
00:03:24 #4030 [Verbose] > │ let v65 : US0 = US0_0 │
00:03:24 #4031 [Verbose] > │ let v66 : int32 = 60 │
00:03:24 #4032 [Verbose] > │ let v67 : int32 = 100 │
00:03:24 #4033 [Verbose] > │ let v68 : int32 = 59 │
00:03:24 #4034 [Verbose] > │ let v69 : US0 = US0_1(v68) │
00:03:24 #4035 [Verbose] > │ let v70 : UH0 = UH0_1 │
00:03:24 #4036 [Verbose] > │ let v71 : UH0 = UH0_0(v27, v66, v67, v69, v70) │
00:03:24 #4037 [Verbose] > │ let v72 : UH0 = UH0_0(v26, v63, v64, v65, v71) │
00:03:24 #4038 [Verbose] > │ let v73 : UH0 = UH0_0(v24, v59, v60, v62, v72) │
00:03:24 #4039 [Verbose] > │ let v74 : UH0 = UH0_0(v22, v55, v56, v58, v73) │
00:03:24 #4040 [Verbose] > │ let v75 : UH0 = UH0_0(v20, v51, v52, v54, v74) │
00:03:24 #4041 [Verbose] > │ let v76 : UH0 = UH0_0(v12, v48, v18, v50, v75) │
00:03:24 #4042 [Verbose] > │ let v77 : UH0 = UH0_0(v10, v46, v11, v47, v76) │
00:03:24 #4043 [Verbose] > │ let v78 : UH0 = UH0_0(v7, v43, v8, v45, v77) │
00:03:24 #4044 [Verbose] > │ let v79 : UH0 = UH0_0(v4, v40, v5, v42, v78) │
00:03:24 #4045 [Verbose] > │ let v80 : UH0 = UH0_0(v1, v37, v2, v39, v79) │
00:03:24 #4046 [Verbose] > │ let v81 : (struct ((int32 []) * int32 * int32 * US0) []) = method3(v80) │
00:03:24 #4047 [Verbose] > │ let v82 : uint64 = System.Convert.ToUInt64 v81.Length │
00:03:24 #4048 [Verbose] > │ let v83 : (struct (string * string * string * (int64 [])) []) = │
00:03:24 #4049 [Verbose] > │ Array.zeroCreate<struct (string * string * string * (int64 []))> │
00:03:24 #4050 [Verbose] > │ (System.Convert.ToInt32(v82)) │
00:03:24 #4051 [Verbose] > │ let v84 : Mut1 = {l0 = 0UL} : Mut1 │
00:03:24 #4052 [Verbose] > │ while method6(v82, v84) do │
00:03:24 #4053 [Verbose] > │ let v86 : uint64 = v84.l0 │
00:03:24 #4054 [Verbose] > │ let struct (v87 : (int32 []), v88 : int32, v89 : int32, v90 : US0) = │
00:03:24 #4055 [Verbose] > │ v81.[int v86] │
00:03:24 #4056 [Verbose] > │ let v91 : string = $"%A{struct (v87, v88, v89)}" │
00:03:24 #4057 [Verbose] > │ System.Console.WriteLine v35 │
00:03:24 #4058 [Verbose] > │ let v92 : string = $"Solution: {v91} " │
00:03:24 #4059 [Verbose] > │ System.Console.WriteLine v92 │
00:03:24 #4060 [Verbose] > │ let v93 : int32 = 0 │
00:03:24 #4061 [Verbose] > │ let v94 : string = "semi_open_1" │
00:03:24 #4062 [Verbose] > │ let v95 : (struct ((int32 []) * int32 * int32) -> US0) = closure1() │
00:03:24 #4063 [Verbose] > │ let v96 : int32 = 1 │
00:03:24 #4064 [Verbose] > │ let v97 : string = "closed_1" │
00:03:24 #4065 [Verbose] > │ let v98 : (struct ((int32 []) * int32 * int32) -> US0) = closure2() │
00:03:24 #4066 [Verbose] > │ let v99 : int32 = 2 │
00:03:24 #4067 [Verbose] > │ let v100 : string = "semi_open_2" │
00:03:24 #4068 [Verbose] > │ let v101 : (struct ((int32 []) * int32 * int32) -> US0) = closure3() │
00:03:24 #4069 [Verbose] > │ let v102 : int32 = 3 │
00:03:24 #4070 [Verbose] > │ let v103 : string = "closed_2" │
00:03:24 #4071 [Verbose] > │ let v104 : (struct ((int32 []) * int32 * int32) -> US0) = closure4() │
00:03:24 #4072 [Verbose] > │ let v105 : UH1 = UH1_1 │
00:03:24 #4073 [Verbose] > │ let v106 : UH1 = UH1_0(v102, v103, v104, v105) │
00:03:24 #4074 [Verbose] > │ let v107 : UH1 = UH1_0(v99, v100, v101, v106) │
00:03:24 #4075 [Verbose] > │ let v108 : UH1 = UH1_0(v96, v97, v98, v107) │
00:03:24 #4076 [Verbose] > │ let v109 : UH1 = UH1_0(v93, v94, v95, v108) │
00:03:24 #4077 [Verbose] > │ let v110 : (struct (int32 * string * (struct ((int32 []) * int32 * │
00:03:24 #4078 [Verbose] > │ int32) -> US0)) []) = method11(v109) │
00:03:24 #4079 [Verbose] > │ let v111 : uint64 = System.Convert.ToUInt64 v110.Length │
00:03:24 #4080 [Verbose] > │ let v112 : (struct (US0 * int64) []) = Array.zeroCreate<struct (US0 │
00:03:24 #4081 [Verbose] > │ * int64)> (System.Convert.ToInt32(v111)) │
00:03:24 #4082 [Verbose] > │ let v113 : Mut1 = {l0 = 0UL} : Mut1 │
00:03:24 #4083 [Verbose] > │ while method6(v111, v113) do │
00:03:24 #4084 [Verbose] > │ let v115 : uint64 = v113.l0 │
00:03:24 #4085 [Verbose] > │ let struct (v116 : int32, v117 : string, v118 : (struct ((int32 │
00:03:24 #4086 [Verbose] > │ []) * int32 * int32) -> US0)) = v110.[int v115] │
00:03:24 #4087 [Verbose] > │ let mutable result = None │
00:03:24 #4088 [Verbose] > │ #if FABLE_COMPILER_RUST │
00:03:24 #4089 [Verbose] > │ #if !WASM │
00:03:24 #4090 [Verbose] > │ () │
00:03:24 #4091 [Verbose] > │ #else │
00:03:24 #4092 [Verbose] > │ () │
00:03:24 #4093 [Verbose] > │ #endif │
00:03:24 #4094 [Verbose] > │ #else │
00:03:24 #4095 [Verbose] > │ System.GC.Collect () │
00:03:24 #4096 [Verbose] > │ () │
00:03:24 #4097 [Verbose] > │ #endif │
00:03:24 #4098 [Verbose] > │ |> fun x -> result <- Some x │
00:03:24 #4099 [Verbose] > │ result |> Option.get │
00:03:24 #4100 [Verbose] > │ let v119 : (unit -> System.Diagnostics.Stopwatch) = │
00:03:24 #4101 [Verbose] > │ System.Diagnostics.Stopwatch │
00:03:24 #4102 [Verbose] > │ let v120 : System.Diagnostics.Stopwatch = v119 () │
00:03:24 #4103 [Verbose] > │ v120.Start () │
00:03:24 #4104 [Verbose] > │ let v121 : int64 = v120.ElapsedMilliseconds │
00:03:24 #4105 [Verbose] > │ let v122 : (int32 []) = Array.zeroCreate<int32> (8000001) │
00:03:24 #4106 [Verbose] > │ let v123 : Mut0 = {l0 = 0} : Mut0 │
00:03:24 #4107 [Verbose] > │ while method14(v123) do │
00:03:24 #4108 [Verbose] > │ let v125 : int32 = v123.l0 │
00:03:24 #4109 [Verbose] > │ v122.[int v125] <- v125 │
00:03:24 #4110 [Verbose] > │ let v126 : int32 = v125 + 1 │
00:03:24 #4111 [Verbose] > │ v123.l0 <- v126 │
00:03:24 #4112 [Verbose] > │ () │
00:03:24 #4113 [Verbose] > │ let v127 : (int32 -> US0) = closure5(v87, v88, v89, v118) │
00:03:24 #4114 [Verbose] > │ let v128 : (US0 []) = v122 |> Array.Parallel.map v127 │
00:03:24 #4115 [Verbose] > │ let v129 : int32 = v128.Length │
00:03:24 #4116 [Verbose] > │ let v130 : int32 = v129 - 1 │
00:03:24 #4117 [Verbose] > │ let v131 : US0 = v128.[int v130] │
00:03:24 #4118 [Verbose] > │ let v132 : int64 = v120.ElapsedMilliseconds │
00:03:24 #4119 [Verbose] > │ let v133 : int64 = v132 - v121 │
00:03:24 #4120 [Verbose] > │ let v134 : string = $"Test case {v116 + 1}. {v117}. Time: {v133} │
00:03:24 #4121 [Verbose] > │ " │
00:03:24 #4122 [Verbose] > │ System.Console.WriteLine v134 │
00:03:24 #4123 [Verbose] > │ v112.[int v115] <- struct (v131, v133) │
00:03:24 #4124 [Verbose] > │ let v135 : uint64 = v115 + 1UL │
00:03:24 #4125 [Verbose] > │ v113.l0 <- v135 │
00:03:24 #4126 [Verbose] > │ () │
00:03:24 #4127 [Verbose] > │ let v136 : uint64 = System.Convert.ToUInt64 v112.Length │
00:03:24 #4128 [Verbose] > │ let v137 : (US0 []) = Array.zeroCreate<US0> │
00:03:24 #4129 [Verbose] > │ (System.Convert.ToInt32(v136)) │
00:03:24 #4130 [Verbose] > │ let v138 : Mut1 = {l0 = 0UL} : Mut1 │
00:03:24 #4131 [Verbose] > │ while method6(v136, v138) do │
00:03:24 #4132 [Verbose] > │ let v140 : uint64 = v138.l0 │
00:03:24 #4133 [Verbose] > │ let struct (v141 : US0, v142 : int64) = v112.[int v140] │
00:03:24 #4134 [Verbose] > │ v137.[int v140] <- v141 │
00:03:24 #4135 [Verbose] > │ let v143 : uint64 = v140 + 1UL │
00:03:24 #4136 [Verbose] > │ v138.l0 <- v143 │
00:03:24 #4137 [Verbose] > │ () │
00:03:24 #4138 [Verbose] > │ let v144 : uint64 = System.Convert.ToUInt64 v137.Length │
00:03:24 #4139 [Verbose] > │ let v145 : bool = v144 <= 1UL │
00:03:24 #4140 [Verbose] > │ if v145 then │
00:03:24 #4141 [Verbose] > │ () │
00:03:24 #4142 [Verbose] > │ else │
00:03:24 #4143 [Verbose] > │ let v146 : US0 = v137.[int 0UL] │
00:03:24 #4144 [Verbose] > │ let v147 : uint64 = 0UL │
00:03:24 #4145 [Verbose] > │ let v148 : bool = method15(v146, v137, v147) │
00:03:24 #4146 [Verbose] > │ if v148 then │
00:03:24 #4147 [Verbose] > │ () │
00:03:24 #4148 [Verbose] > │ else │
00:03:24 #4149 [Verbose] > │ let v149 : string = $"Challenge error: {v137}" │
00:03:24 #4150 [Verbose] > │ failwith<unit> v149 │
00:03:24 #4151 [Verbose] > │ let v150 : string = $"%A{v90}" │
00:03:24 #4152 [Verbose] > │ let v151 : (US0 []) = Array.zeroCreate<US0> │
00:03:24 #4153 [Verbose] > │ (System.Convert.ToInt32(v136)) │
00:03:24 #4154 [Verbose] > │ let v152 : Mut1 = {l0 = 0UL} : Mut1 │
00:03:24 #4155 [Verbose] > │ while method6(v136, v152) do │
00:03:24 #4156 [Verbose] > │ let v154 : uint64 = v152.l0 │
00:03:24 #4157 [Verbose] > │ let struct (v155 : US0, v156 : int64) = v112.[int v154] │
00:03:24 #4158 [Verbose] > │ v151.[int v154] <- v155 │
00:03:24 #4159 [Verbose] > │ let v157 : uint64 = v154 + 1UL │
00:03:24 #4160 [Verbose] > │ v152.l0 <- v157 │
00:03:24 #4161 [Verbose] > │ () │
00:03:24 #4162 [Verbose] > │ let v158 : US0 = v151.[int 0UL] │
00:03:24 #4163 [Verbose] > │ let v159 : string = $"%A{v158}" │
00:03:24 #4164 [Verbose] > │ let v160 : (int64 []) = Array.zeroCreate<int64> │
00:03:24 #4165 [Verbose] > │ (System.Convert.ToInt32(v136)) │
00:03:24 #4166 [Verbose] > │ let v161 : Mut1 = {l0 = 0UL} : Mut1 │
00:03:24 #4167 [Verbose] > │ while method6(v136, v161) do │
00:03:24 #4168 [Verbose] > │ let v163 : uint64 = v161.l0 │
00:03:24 #4169 [Verbose] > │ let struct (v164 : US0, v165 : int64) = v112.[int v163] │
00:03:24 #4170 [Verbose] > │ v160.[int v163] <- v165 │
00:03:24 #4171 [Verbose] > │ let v166 : uint64 = v163 + 1UL │
00:03:24 #4172 [Verbose] > │ v161.l0 <- v166 │
00:03:24 #4173 [Verbose] > │ () │
00:03:24 #4174 [Verbose] > │ v83.[int v86] <- struct (v150, v91, v159, v160) │
00:03:24 #4175 [Verbose] > │ let v167 : uint64 = v86 + 1UL │
00:03:24 #4176 [Verbose] > │ v84.l0 <- v167 │
00:03:24 #4177 [Verbose] > │ () │
00:03:24 #4178 [Verbose] > │ let v168 : uint64 = System.Convert.ToUInt64 v83.Length │
00:03:24 #4179 [Verbose] > │ let v169 : (struct (UH2 * US1) []) = Array.zeroCreate<struct (UH2 * │
00:03:24 #4180 [Verbose] > │ US1)> (System.Convert.ToInt32(v168)) │
00:03:24 #4181 [Verbose] > │ let v170 : Mut1 = {l0 = 0UL} : Mut1 │
00:03:24 #4182 [Verbose] > │ while method6(v168, v170) do │
00:03:24 #4183 [Verbose] > │ let v172 : uint64 = v170.l0 │
00:03:24 #4184 [Verbose] > │ let struct (v173 : string, v174 : string, v175 : string, v176 : │
00:03:24 #4185 [Verbose] > │ (int64 [])) = v83.[int v172] │
00:03:24 #4186 [Verbose] > │ let v177 : uint64 = System.Convert.ToUInt64 v176.Length │
00:03:24 #4187 [Verbose] > │ let v178 : UH3 = UH3_1 │
00:03:24 #4188 [Verbose] > │ let v179 : Mut2 = {l0 = 0UL; l1 = v178; l2 = 0L} : Mut2 │
00:03:24 #4189 [Verbose] > │ while method16(v177, v179) do │
00:03:24 #4190 [Verbose] > │ let v181 : uint64 = v179.l0 │
00:03:24 #4191 [Verbose] > │ let struct (v182 : UH3, v183 : int64) = v179.l1, v179.l2 │
00:03:24 #4192 [Verbose] > │ let v184 : int64 = v176.[int v181] │
00:03:24 #4193 [Verbose] > │ let v185 : int64 = v183 + 1L │
00:03:24 #4194 [Verbose] > │ let v186 : uint64 = v181 + 1UL │
00:03:24 #4195 [Verbose] > │ let v187 : UH3 = UH3_0(v183, v184, v182) │
00:03:24 #4196 [Verbose] > │ v179.l0 <- v186 │
00:03:24 #4197 [Verbose] > │ v179.l1 <- v187 │
00:03:24 #4198 [Verbose] > │ v179.l2 <- v185 │
00:03:24 #4199 [Verbose] > │ () │
00:03:24 #4200 [Verbose] > │ let struct (v188 : UH3, v189 : int64) = v179.l1, v179.l2 │
00:03:24 #4201 [Verbose] > │ let v190 : UH3 = UH3_1 │
00:03:24 #4202 [Verbose] > │ let v191 : UH3 = method17(v188, v190) │
00:03:24 #4203 [Verbose] > │ let v192 : (struct (int64 * int64) []) = method18(v191) │
00:03:24 #4204 [Verbose] > │ let v193 : int32 = v192.Length │
00:03:24 #4205 [Verbose] > │ let v194 : (struct (int64 * int64) []) = Array.zeroCreate<struct │
00:03:24 #4206 [Verbose] > │ (int64 * int64)> (v193) │
00:03:24 #4207 [Verbose] > │ let v195 : Mut0 = {l0 = 0} : Mut0 │
00:03:24 #4208 [Verbose] > │ while method21(v193, v195) do │
00:03:24 #4209 [Verbose] > │ let v197 : int32 = v195.l0 │
00:03:24 #4210 [Verbose] > │ let struct (v198 : int64, v199 : int64) = v192.[int v197] │
00:03:24 #4211 [Verbose] > │ let v200 : int64 = v198 + 1L │
00:03:24 #4212 [Verbose] > │ v194.[int v197] <- struct (v200, v199) │
00:03:24 #4213 [Verbose] > │ let v201 : int32 = v197 + 1 │
00:03:24 #4214 [Verbose] > │ v195.l0 <- v201 │
00:03:24 #4215 [Verbose] > │ () │
00:03:24 #4216 [Verbose] > │ let v202 : (struct (int64 * int64) -> int64) = closure6() │
00:03:24 #4217 [Verbose] > │ let v203 : (struct (int64 * int64) []) = v194 |> Array.sortBy v202 │
00:03:24 #4218 [Verbose] > │ let struct (v204 : int64, v205 : int64) = v203.[int 0] │
00:03:24 #4219 [Verbose] > │ let v206 : string = $"%A{struct (v204, v205)}" │
00:03:24 #4220 [Verbose] > │ let v207 : bool = v173 = v175 │
00:03:24 #4221 [Verbose] > │ let v212 : US1 = │
00:03:24 #4222 [Verbose] > │ if v207 then │
00:03:24 #4223 [Verbose] > │ let v208 : System.ConsoleColor = │
00:03:24 #4224 [Verbose] > │ System.ConsoleColor.DarkGreen │
00:03:24 #4225 [Verbose] > │ US1_1(v208) │
00:03:24 #4226 [Verbose] > │ else │
00:03:24 #4227 [Verbose] > │ let v210 : System.ConsoleColor = System.ConsoleColor.DarkRed │
00:03:24 #4228 [Verbose] > │ US1_1(v210) │
00:03:24 #4229 [Verbose] > │ let v213 : UH2 = UH2_1 │
00:03:24 #4230 [Verbose] > │ let v214 : UH2 = UH2_0(v206, v213) │
00:03:24 #4231 [Verbose] > │ let v215 : UH2 = UH2_0(v175, v214) │
00:03:24 #4232 [Verbose] > │ let v216 : UH2 = UH2_0(v173, v215) │
00:03:24 #4233 [Verbose] > │ let v217 : UH2 = UH2_0(v174, v216) │
00:03:24 #4234 [Verbose] > │ v169.[int v172] <- struct (v217, v212) │
00:03:24 #4235 [Verbose] > │ let v218 : uint64 = v172 + 1UL │
00:03:24 #4236 [Verbose] > │ v170.l0 <- v218 │
00:03:24 #4237 [Verbose] > │ () │
00:03:24 #4238 [Verbose] > │ let v219 : string = "Input" │
00:03:24 #4239 [Verbose] > │ let v220 : string = "Expected" │
00:03:24 #4240 [Verbose] > │ let v221 : string = "Result" │
00:03:24 #4241 [Verbose] > │ let v222 : string = "Best" │
00:03:24 #4242 [Verbose] > │ let v223 : UH2 = UH2_1 │
00:03:24 #4243 [Verbose] > │ let v224 : UH2 = UH2_0(v222, v223) │
00:03:24 #4244 [Verbose] > │ let v225 : UH2 = UH2_0(v221, v224) │
00:03:24 #4245 [Verbose] > │ let v226 : UH2 = UH2_0(v220, v225) │
00:03:24 #4246 [Verbose] > │ let v227 : UH2 = UH2_0(v219, v226) │
00:03:24 #4247 [Verbose] > │ let v228 : US1 = US1_0 │
00:03:24 #4248 [Verbose] > │ let v229 : string = "---" │
00:03:24 #4249 [Verbose] > │ let v230 : UH2 = UH2_1 │
00:03:24 #4250 [Verbose] > │ let v231 : UH2 = UH2_0(v229, v230) │
00:03:24 #4251 [Verbose] > │ let v232 : UH2 = UH2_0(v229, v231) │
00:03:24 #4252 [Verbose] > │ let v233 : UH2 = UH2_0(v229, v232) │
00:03:24 #4253 [Verbose] > │ let v234 : UH2 = UH2_0(v229, v233) │
00:03:24 #4254 [Verbose] > │ let v235 : US1 = US1_0 │
00:03:24 #4255 [Verbose] > │ let v236 : UH4 = UH4_1 │
00:03:24 #4256 [Verbose] > │ let v237 : UH4 = UH4_0(v234, v235, v236) │
00:03:24 #4257 [Verbose] > │ let v238 : UH4 = UH4_0(v227, v228, v237) │
00:03:24 #4258 [Verbose] > │ let v239 : (struct (UH2 * US1) []) = method22(v238) │
00:03:24 #4259 [Verbose] > │ let v240 : uint64 = System.Convert.ToUInt64 v239.Length │
00:03:24 #4260 [Verbose] > │ let v241 : uint64 = System.Convert.ToUInt64 v169.Length │
00:03:24 #4261 [Verbose] > │ let v242 : uint64 = v240 + v241 │
00:03:24 #4262 [Verbose] > │ let v243 : (struct (UH2 * US1) []) = Array.zeroCreate<struct (UH2 * │
00:03:24 #4263 [Verbose] > │ US1)> (System.Convert.ToInt32(v242)) │
00:03:24 #4264 [Verbose] > │ let v244 : Mut1 = {l0 = 0UL} : Mut1 │
00:03:24 #4265 [Verbose] > │ while method6(v242, v244) do │
00:03:24 #4266 [Verbose] > │ let v246 : uint64 = v244.l0 │
00:03:24 #4267 [Verbose] > │ let v247 : bool = v246 < v240 │
00:03:24 #4268 [Verbose] > │ let struct (v253 : UH2, v254 : US1) = │
00:03:24 #4269 [Verbose] > │ if v247 then │
00:03:24 #4270 [Verbose] > │ let struct (v248 : UH2, v249 : US1) = v239.[int v246] │
00:03:24 #4271 [Verbose] > │ struct (v248, v249) │
00:03:24 #4272 [Verbose] > │ else │
00:03:24 #4273 [Verbose] > │ let v250 : uint64 = v246 - v240 │
00:03:24 #4274 [Verbose] > │ let struct (v251 : UH2, v252 : US1) = v169.[int v250] │
00:03:24 #4275 [Verbose] > │ struct (v251, v252) │
00:03:24 #4276 [Verbose] > │ v243.[int v246] <- struct (v253, v254) │
00:03:24 #4277 [Verbose] > │ let v255 : uint64 = v246 + 1UL │
00:03:24 #4278 [Verbose] > │ v244.l0 <- v255 │
00:03:24 #4279 [Verbose] > │ () │
00:03:24 #4280 [Verbose] > │ let v256 : uint64 = System.Convert.ToUInt64 v243.Length │
00:03:24 #4281 [Verbose] > │ let v257 : ((string []) []) = Array.zeroCreate<(string [])> │
00:03:24 #4282 [Verbose] > │ (System.Convert.ToInt32(v256)) │
00:03:24 #4283 [Verbose] > │ let v258 : Mut1 = {l0 = 0UL} : Mut1 │
00:03:24 #4284 [Verbose] > │ while method6(v256, v258) do │
00:03:24 #4285 [Verbose] > │ let v260 : uint64 = v258.l0 │
00:03:24 #4286 [Verbose] > │ let struct (v261 : UH2, v262 : US1) = v243.[int v260] │
00:03:24 #4287 [Verbose] > │ let v263 : (string []) = method25(v261) │
00:03:24 #4288 [Verbose] > │ v257.[int v260] <- v263 │
00:03:24 #4289 [Verbose] > │ let v264 : uint64 = v260 + 1UL │
00:03:24 #4290 [Verbose] > │ v258.l0 <- v264 │
00:03:24 #4291 [Verbose] > │ () │
00:03:24 #4292 [Verbose] > │ let v265 : ((string []) []) = v257 |> Array.transpose │
00:03:24 #4293 [Verbose] > │ let v266 : uint64 = System.Convert.ToUInt64 v265.Length │
00:03:24 #4294 [Verbose] > │ let v267 : (int64 []) = Array.zeroCreate<int64> │
00:03:24 #4295 [Verbose] > │ (System.Convert.ToInt32(v266)) │
00:03:24 #4296 [Verbose] > │ let v268 : Mut1 = {l0 = 0UL} : Mut1 │
00:03:24 #4297 [Verbose] > │ while method6(v266, v268) do │
00:03:24 #4298 [Verbose] > │ let v270 : uint64 = v268.l0 │
00:03:24 #4299 [Verbose] > │ let v271 : (string []) = v265.[int v270] │
00:03:24 #4300 [Verbose] > │ let v272 : uint64 = System.Convert.ToUInt64 v271.Length │
00:03:24 #4301 [Verbose] > │ let v273 : (int64 []) = Array.zeroCreate<int64> │
00:03:24 #4302 [Verbose] > │ (System.Convert.ToInt32(v272)) │
00:03:24 #4303 [Verbose] > │ let v274 : Mut1 = {l0 = 0UL} : Mut1 │
00:03:24 #4304 [Verbose] > │ while method6(v272, v274) do │
00:03:24 #4305 [Verbose] > │ let v276 : uint64 = v274.l0 │
00:03:24 #4306 [Verbose] > │ let v277 : string = v271.[int v276] │
00:03:24 #4307 [Verbose] > │ let v278 : int64 = System.Convert.ToInt64 v277.Length │
00:03:24 #4308 [Verbose] > │ v273.[int v276] <- v278 │
00:03:24 #4309 [Verbose] > │ let v279 : uint64 = v276 + 1UL │
00:03:24 #4310 [Verbose] > │ v274.l0 <- v279 │
00:03:24 #4311 [Verbose] > │ () │
00:03:24 #4312 [Verbose] > │ let v280 : (int64 []) = v273 |> Array.sortDescending │
00:03:24 #4313 [Verbose] > │ let v281 : int64 option = v280 |> Array.tryItem 0 │
00:03:24 #4314 [Verbose] > │ let v282 : (int64 -> US2) = closure7() │
00:03:24 #4315 [Verbose] > │ let v283 : US2 = US2_0 │
00:03:24 #4316 [Verbose] > │ let v284 : US2 = v281 |> Option.map v282 |> Option.defaultValue v283 │
00:03:24 #4317 [Verbose] > │ let v287 : int64 = │
00:03:24 #4318 [Verbose] > │ match v284 with │
00:03:24 #4319 [Verbose] > │ | US2_0 -> (* None *) │
00:03:24 #4320 [Verbose] > │ 0L │
00:03:24 #4321 [Verbose] > │ | US2_1(v285) -> (* Some *) │
00:03:24 #4322 [Verbose] > │ v285 │
00:03:24 #4323 [Verbose] > │ v267.[int v270] <- v287 │
00:03:24 #4324 [Verbose] > │ let v288 : uint64 = v270 + 1UL │
00:03:24 #4325 [Verbose] > │ v268.l0 <- v288 │
00:03:24 #4326 [Verbose] > │ () │
00:03:24 #4327 [Verbose] > │ let v289 : uint64 = System.Convert.ToUInt64 v267.Length │
00:03:24 #4328 [Verbose] > │ let v290 : UH5 = UH5_1 │
00:03:24 #4329 [Verbose] > │ let v291 : Mut3 = {l0 = 0UL; l1 = v290; l2 = 0} : Mut3 │
00:03:24 #4330 [Verbose] > │ while method28(v289, v291) do │
00:03:24 #4331 [Verbose] > │ let v293 : uint64 = v291.l0 │
00:03:24 #4332 [Verbose] > │ let struct (v294 : UH5, v295 : int32) = v291.l1, v291.l2 │
00:03:24 #4333 [Verbose] > │ let v296 : int64 = v267.[int v293] │
00:03:24 #4334 [Verbose] > │ let v297 : int32 = v295 + 1 │
00:03:24 #4335 [Verbose] > │ let v298 : uint64 = v293 + 1UL │
00:03:24 #4336 [Verbose] > │ let v299 : UH5 = UH5_0(v295, v296, v294) │
00:03:24 #4337 [Verbose] > │ v291.l0 <- v298 │
00:03:24 #4338 [Verbose] > │ v291.l1 <- v299 │
00:03:24 #4339 [Verbose] > │ v291.l2 <- v297 │
00:03:24 #4340 [Verbose] > │ () │
00:03:24 #4341 [Verbose] > │ let struct (v300 : UH5, v301 : int32) = v291.l1, v291.l2 │
00:03:24 #4342 [Verbose] > │ let v302 : UH5 = UH5_1 │
00:03:24 #4343 [Verbose] > │ let v303 : UH5 = method29(v300, v302) │
00:03:24 #4344 [Verbose] > │ let v304 : (struct (int32 * int64) []) = method30(v303) │
00:03:24 #4345 [Verbose] > │ let v305 : Map<int32, int64> = v304 |> Array.map (fun (struct (a, b)) -> │
00:03:24 #4346 [Verbose] > │ a, b) |> Map.ofArray │
00:03:24 #4347 [Verbose] > │ let v306 : (struct ((string []) * US1) []) = Array.zeroCreate<struct │
00:03:24 #4348 [Verbose] > │ ((string []) * US1)> (System.Convert.ToInt32(v256)) │
00:03:24 #4349 [Verbose] > │ let v307 : Mut1 = {l0 = 0UL} : Mut1 │
00:03:24 #4350 [Verbose] > │ while method6(v256, v307) do │
00:03:24 #4351 [Verbose] > │ let v309 : uint64 = v307.l0 │
00:03:24 #4352 [Verbose] > │ let struct (v310 : UH2, v311 : US1) = v243.[int v309] │
00:03:24 #4353 [Verbose] > │ let v312 : UH6 = UH6_1 │
00:03:24 #4354 [Verbose] > │ let v313 : int32 = 0 │
00:03:24 #4355 [Verbose] > │ let struct (v314 : UH6, v315 : int32) = method33(v310, v312, v313) │
00:03:24 #4356 [Verbose] > │ let v316 : UH6 = UH6_1 │
00:03:24 #4357 [Verbose] > │ let v317 : UH6 = method34(v314, v316) │
00:03:24 #4358 [Verbose] > │ let v318 : UH2 = UH2_1 │
00:03:24 #4359 [Verbose] > │ let v319 : UH2 = method35(v305, v317, v318) │
00:03:24 #4360 [Verbose] > │ let v320 : (string []) = method36(v319) │
00:03:24 #4361 [Verbose] > │ v306.[int v309] <- struct (v320, v311) │
00:03:24 #4362 [Verbose] > │ let v321 : uint64 = v309 + 1UL │
00:03:24 #4363 [Verbose] > │ v307.l0 <- v321 │
00:03:24 #4364 [Verbose] > │ () │
00:03:24 #4365 [Verbose] > │ System.Console.WriteLine v35 │
00:03:24 #4366 [Verbose] > │ let v322 : uint64 = System.Convert.ToUInt64 v306.Length │
00:03:24 #4367 [Verbose] > │ let v323 : Mut1 = {l0 = 0UL} : Mut1 │
00:03:24 #4368 [Verbose] > │ while method6(v322, v323) do │
00:03:24 #4369 [Verbose] > │ let v325 : uint64 = v323.l0 │
00:03:24 #4370 [Verbose] > │ let struct (v326 : (string []), v327 : US1) = v306.[int v325] │
00:03:24 #4371 [Verbose] > │ match v327 with │
00:03:24 #4372 [Verbose] > │ | US1_0 -> (* None *) │
00:03:24 #4373 [Verbose] > │ let mutable result = None │
00:03:24 #4374 [Verbose] > │ #if FABLE_COMPILER_RUST │
00:03:24 #4375 [Verbose] > │ #if !WASM │
00:03:24 #4376 [Verbose] > │ () │
00:03:24 #4377 [Verbose] > │ #else │
00:03:24 #4378 [Verbose] > │ () │
00:03:24 #4379 [Verbose] > │ #endif │
00:03:24 #4380 [Verbose] > │ #else │
00:03:24 #4381 [Verbose] > │ System.Console.ResetColor () │
00:03:24 #4382 [Verbose] > │ () │
00:03:24 #4383 [Verbose] > │ #endif │
00:03:24 #4384 [Verbose] > │ |> fun x -> result <- Some x │
00:03:24 #4385 [Verbose] > │ result |> Option.get │
00:03:24 #4386 [Verbose] > │ () │
00:03:24 #4387 [Verbose] > │ | US1_1(v328) -> (* Some *) │
00:03:24 #4388 [Verbose] > │ let mutable result = None │
00:03:24 #4389 [Verbose] > │ #if FABLE_COMPILER_RUST │
00:03:24 #4390 [Verbose] > │ #if !WASM │
00:03:24 #4391 [Verbose] > │ () │
00:03:24 #4392 [Verbose] > │ #else │
00:03:24 #4393 [Verbose] > │ () │
00:03:24 #4394 [Verbose] > │ #endif │
00:03:24 #4395 [Verbose] > │ #else │
00:03:24 #4396 [Verbose] > │ System.Console.ForegroundColor <- v328 │
00:03:24 #4397 [Verbose] > │ () │
00:03:24 #4398 [Verbose] > │ #endif │
00:03:24 #4399 [Verbose] > │ |> fun x -> result <- Some x │
00:03:24 #4400 [Verbose] > │ result |> Option.get │
00:03:24 #4401 [Verbose] > │ () │
00:03:24 #4402 [Verbose] > │ let v329 : string = "\t| " │
00:03:24 #4403 [Verbose] > │ let v330 : string = System.String.Join (v329, v326) │
00:03:24 #4404 [Verbose] > │ System.Console.WriteLine v330 │
00:03:24 #4405 [Verbose] > │ let mutable result = None │
00:03:24 #4406 [Verbose] > │ #if FABLE_COMPILER_RUST │
00:03:24 #4407 [Verbose] > │ #if !WASM │
00:03:24 #4408 [Verbose] > │ () │
00:03:24 #4409 [Verbose] > │ #else │
00:03:24 #4410 [Verbose] > │ () │
00:03:24 #4411 [Verbose] > │ #endif │
00:03:24 #4412 [Verbose] > │ #else │
00:03:24 #4413 [Verbose] > │ System.Console.ResetColor () │
00:03:24 #4414 [Verbose] > │ () │
00:03:24 #4415 [Verbose] > │ #endif │
00:03:24 #4416 [Verbose] > │ |> fun x -> result <- Some x │
00:03:24 #4417 [Verbose] > │ result |> Option.get │
00:03:24 #4418 [Verbose] > │ let v331 : uint64 = v325 + 1UL │
00:03:24 #4419 [Verbose] > │ v323.l0 <- v331 │
00:03:24 #4420 [Verbose] > │ () │
00:03:24 #4421 [Verbose] > │ let v332 : ((float []) []) = Array.zeroCreate<(float [])> │
00:03:24 #4422 [Verbose] > │ (System.Convert.ToInt32(v168)) │
00:03:24 #4423 [Verbose] > │ let v333 : Mut1 = {l0 = 0UL} : Mut1 │
00:03:24 #4424 [Verbose] > │ while method6(v168, v333) do │
00:03:24 #4425 [Verbose] > │ let v335 : uint64 = v333.l0 │
00:03:24 #4426 [Verbose] > │ let struct (v336 : string, v337 : string, v338 : string, v339 : │
00:03:24 #4427 [Verbose] > │ (int64 [])) = v83.[int v335] │
00:03:24 #4428 [Verbose] > │ let v340 : (int64 -> float) = float │
00:03:24 #4429 [Verbose] > │ let v341 : uint64 = System.Convert.ToUInt64 v339.Length │
00:03:24 #4430 [Verbose] > │ let v342 : (float []) = Array.zeroCreate<float> │
00:03:24 #4431 [Verbose] > │ (System.Convert.ToInt32(v341)) │
00:03:24 #4432 [Verbose] > │ let v343 : Mut1 = {l0 = 0UL} : Mut1 │
00:03:24 #4433 [Verbose] > │ while method6(v341, v343) do │
00:03:24 #4434 [Verbose] > │ let v345 : uint64 = v343.l0 │
00:03:24 #4435 [Verbose] > │ let v346 : int64 = v339.[int v345] │
00:03:24 #4436 [Verbose] > │ let v347 : float = v340 v346 │
00:03:24 #4437 [Verbose] > │ v342.[int v345] <- v347 │
00:03:24 #4438 [Verbose] > │ let v348 : uint64 = v345 + 1UL │
00:03:24 #4439 [Verbose] > │ v343.l0 <- v348 │
00:03:24 #4440 [Verbose] > │ () │
00:03:24 #4441 [Verbose] > │ v332.[int v335] <- v342 │
00:03:24 #4442 [Verbose] > │ let v349 : uint64 = v335 + 1UL │
00:03:24 #4443 [Verbose] > │ v333.l0 <- v349 │
00:03:24 #4444 [Verbose] > │ () │
00:03:24 #4445 [Verbose] > │ let v350 : ((float []) []) = v332 |> Array.transpose │
00:03:24 #4446 [Verbose] > │ let v351 : uint64 = System.Convert.ToUInt64 v350.Length │
00:03:24 #4447 [Verbose] > │ let v352 : (float []) = Array.zeroCreate<float> │
00:03:24 #4448 [Verbose] > │ (System.Convert.ToInt32(v351)) │
00:03:24 #4449 [Verbose] > │ let v353 : Mut1 = {l0 = 0UL} : Mut1 │
00:03:24 #4450 [Verbose] > │ while method6(v351, v353) do │
00:03:24 #4451 [Verbose] > │ let v355 : uint64 = v353.l0 │
00:03:24 #4452 [Verbose] > │ let v356 : (float []) = v350.[int v355] │
00:03:24 #4453 [Verbose] > │ let v357 : float = v356 |> Array.average │
00:03:24 #4454 [Verbose] > │ v352.[int v355] <- v357 │
00:03:24 #4455 [Verbose] > │ let v358 : uint64 = v355 + 1UL │
00:03:24 #4456 [Verbose] > │ v353.l0 <- v358 │
00:03:24 #4457 [Verbose] > │ () │
00:03:24 #4458 [Verbose] > │ let v359 : (float -> int64) = int64 │
00:03:24 #4459 [Verbose] > │ let v360 : uint64 = System.Convert.ToUInt64 v352.Length │
00:03:24 #4460 [Verbose] > │ let v361 : (int64 []) = Array.zeroCreate<int64> │
00:03:24 #4461 [Verbose] > │ (System.Convert.ToInt32(v360)) │
00:03:24 #4462 [Verbose] > │ let v362 : Mut1 = {l0 = 0UL} : Mut1 │
00:03:24 #4463 [Verbose] > │ while method6(v360, v362) do │
00:03:24 #4464 [Verbose] > │ let v364 : uint64 = v362.l0 │
00:03:24 #4465 [Verbose] > │ let v365 : float = v352.[int v364] │
00:03:24 #4466 [Verbose] > │ let v366 : int64 = v359 v365 │
00:03:24 #4467 [Verbose] > │ v361.[int v364] <- v366 │
00:03:24 #4468 [Verbose] > │ let v367 : uint64 = v364 + 1UL │
00:03:24 #4469 [Verbose] > │ v362.l0 <- v367 │
00:03:24 #4470 [Verbose] > │ () │
00:03:24 #4471 [Verbose] > │ let v368 : uint64 = System.Convert.ToUInt64 v361.Length │
00:03:24 #4472 [Verbose] > │ let v369 : UH5 = UH5_1 │
00:03:24 #4473 [Verbose] > │ let v370 : Mut3 = {l0 = 0UL; l1 = v369; l2 = 0} : Mut3 │
00:03:24 #4474 [Verbose] > │ while method28(v368, v370) do │
00:03:24 #4475 [Verbose] > │ let v372 : uint64 = v370.l0 │
00:03:24 #4476 [Verbose] > │ let struct (v373 : UH5, v374 : int32) = v370.l1, v370.l2 │
00:03:24 #4477 [Verbose] > │ let v375 : int64 = v361.[int v372] │
00:03:24 #4478 [Verbose] > │ let v376 : int32 = v374 + 1 │
00:03:24 #4479 [Verbose] > │ let v377 : uint64 = v372 + 1UL │
00:03:24 #4480 [Verbose] > │ let v378 : UH5 = UH5_0(v374, v375, v373) │
00:03:24 #4481 [Verbose] > │ v370.l0 <- v377 │
00:03:24 #4482 [Verbose] > │ v370.l1 <- v378 │
00:03:24 #4483 [Verbose] > │ v370.l2 <- v376 │
00:03:24 #4484 [Verbose] > │ () │
00:03:24 #4485 [Verbose] > │ let struct (v379 : UH5, v380 : int32) = v370.l1, v370.l2 │
00:03:24 #4486 [Verbose] > │ let v381 : UH5 = UH5_1 │
00:03:24 #4487 [Verbose] > │ let v382 : UH5 = method29(v379, v381) │
00:03:24 #4488 [Verbose] > │ let v383 : (struct (int32 * int64) []) = method39(v382) │
00:03:24 #4489 [Verbose] > │ System.Console.WriteLine v35 │
00:03:24 #4490 [Verbose] > │ let v384 : string = "Average Ranking " │
00:03:24 #4491 [Verbose] > │ System.Console.WriteLine v384 │
00:03:24 #4492 [Verbose] > │ let v385 : (struct (int32 * int64) -> int64) = closure8() │
00:03:24 #4493 [Verbose] > │ let v386 : (struct (int32 * int64) []) = v383 |> Array.sortBy v385 │
00:03:24 #4494 [Verbose] > │ let v387 : uint64 = System.Convert.ToUInt64 v386.Length │
00:03:24 #4495 [Verbose] > │ let v388 : Mut1 = {l0 = 0UL} : Mut1 │
00:03:24 #4496 [Verbose] > │ while method6(v387, v388) do │
00:03:24 #4497 [Verbose] > │ let v390 : uint64 = v388.l0 │
00:03:24 #4498 [Verbose] > │ let struct (v391 : int32, v392 : int64) = v386.[int v390] │
00:03:24 #4499 [Verbose] > │ let v393 : string = $"Test case %d{v391 + 1}. Average Time: %A{v392} │
00:03:24 #4500 [Verbose] > │ " │
00:03:24 #4501 [Verbose] > │ System.Console.WriteLine v393 │
00:03:24 #4502 [Verbose] > │ let v394 : uint64 = v390 + 1UL │
00:03:24 #4503 [Verbose] > │ v388.l0 <- v394 │
00:03:24 #4504 [Verbose] > │ () │
00:03:24 #4505 [Verbose] > │ () │
00:03:24 #4506 [Verbose] > │ method0() │
00:03:24 #4507 [Verbose] > │ │
00:03:24 #4508 [Verbose] > │ │
00:03:24 #4509 [Verbose] > │ │
00:03:24 #4510 [Verbose] > │ Test: v33 │
00:03:24 #4511 [Verbose] > │ │
00:03:24 #4512 [Verbose] > │ Solution: struct ([|1; 3; 4; 6; 8; 9; 11|], 6, 7) │
00:03:24 #4513 [Verbose] > │ Test case 1. semi_open_1. Time: 198 │
00:03:24 #4514 [Verbose] > │ Test case 2. closed_1. Time: 199 │
00:03:24 #4515 [Verbose] > │ Test case 3. semi_open_2. Time: 137 │
00:03:24 #4516 [Verbose] > │ Test case 4. closed_2. Time: 147 │
00:03:24 #4517 [Verbose] > │ │
00:03:24 #4518 [Verbose] > │ Solution: struct ([|1; 3; 4; 6; 8; 9; 11|], 1, 7) │
00:03:24 #4519 [Verbose] > │ Test case 1. semi_open_1. Time: 213 │
00:03:24 #4520 [Verbose] > │ Test case 2. closed_1. Time: 81 │
00:03:24 #4521 [Verbose] > │ Test case 3. semi_open_2. Time: 79 │
00:03:24 #4522 [Verbose] > │ Test case 4. closed_2. Time: 84 │
00:03:24 #4523 [Verbose] > │ │
00:03:24 #4524 [Verbose] > │ Solution: struct ([|1; 3; 4; 6; 8; 9; 11|], 11, 7) │
00:03:24 #4525 [Verbose] > │ Test case 1. semi_open_1. Time: 66 │
00:03:24 #4526 [Verbose] > │ Test case 2. closed_1. Time: 68 │
00:03:24 #4527 [Verbose] > │ Test case 3. semi_open_2. Time: 67 │
00:03:24 #4528 [Verbose] > │ Test case 4. closed_2. Time: 67 │
00:03:24 #4529 [Verbose] > │ │
00:03:24 #4530 [Verbose] > │ Solution: struct ([|1; 3; 4; 6; 8; 9; 11|], 12, 7) │
00:03:24 #4531 [Verbose] > │ Test case 1. semi_open_1. Time: 65 │
00:03:24 #4532 [Verbose] > │ Test case 2. closed_1. Time: 66 │
00:03:24 #4533 [Verbose] > │ Test case 3. semi_open_2. Time: 66 │
00:03:24 #4534 [Verbose] > │ Test case 4. closed_2. Time: 68 │
00:03:24 #4535 [Verbose] > │ │
00:03:24 #4536 [Verbose] > │ Solution: struct ([|1; 2; 3; 4; 5; 6; 7; 8; 9; 10; 11; 12; 13; 14; 15; 16; │
00:03:24 #4537 [Verbose] > │ 17; 18; 19; 20; │
00:03:24 #4538 [Verbose] > │ 21; 22; 23; 24; 25; 26; 27; 28; 29; 30; 31; 32; 33; 34; 35; 36; │
00:03:24 #4539 [Verbose] > │ 37; 38; │
00:03:24 #4540 [Verbose] > │ 39; 40; 41; 42; 43; 44; 45; 46; 47; 48; 49; 50; 51; 52; 53; 54; │
00:03:24 #4541 [Verbose] > │ 55; 56; │
00:03:24 #4542 [Verbose] > │ 57; 58; 59; 60; 61; 62; 63; 64; 65; 66; 67; 68; 69; 70; 71; 72; │
00:03:24 #4543 [Verbose] > │ 73; 74; │
00:03:24 #4544 [Verbose] > │ 75; 76; 77; 78; 79; 80; 81; 82; 83; 84; 85; 86; 87; 88; 89; 90; │
00:03:24 #4545 [Verbose] > │ 91; 92; │
00:03:24 #4546 [Verbose] > │ 93; 94; 95; 96; 97; 98; 99; 100|], 60, 100) │
00:03:24 #4547 [Verbose] > │ Test case 1. semi_open_1. Time: 84 │
00:03:24 #4548 [Verbose] > │ Test case 2. closed_1. Time: 86 │
00:03:24 #4549 [Verbose] > │ Test case 3. semi_open_2. Time: 79 │
00:03:24 #4550 [Verbose] > │ Test case 4. closed_2. Time: 80 │
00:03:24 #4551 [Verbose] > │ │
00:03:24 #4552 [Verbose] > │ Solution: struct ([|1; 3; 4; 6; 8; 9; 11|], 6, 7) │
00:03:24 #4553 [Verbose] > │ Test case 1. semi_open_1. Time: 62 │
00:03:24 #4554 [Verbose] > │ Test case 2. closed_1. Time: 62 │
00:03:24 #4555 [Verbose] > │ Test case 3. semi_open_2. Time: 58 │
00:03:24 #4556 [Verbose] > │ Test case 4. closed_2. Time: 58 │
00:03:24 #4557 [Verbose] > │ │
00:03:24 #4558 [Verbose] > │ Solution: struct ([|1; 3; 4; 6; 8; 9; 11|], 1, 7) │
00:03:24 #4559 [Verbose] > │ Test case 1. semi_open_1. Time: 79 │
00:03:24 #4560 [Verbose] > │ Test case 2. closed_1. Time: 84 │
00:03:24 #4561 [Verbose] > │ Test case 3. semi_open_2. Time: 79 │
00:03:24 #4562 [Verbose] > │ Test case 4. closed_2. Time: 80 │
00:03:24 #4563 [Verbose] > │ │
00:03:24 #4564 [Verbose] > │ Solution: struct ([|1; 3; 4; 6; 8; 9; 11|], 11, 7) │
00:03:24 #4565 [Verbose] > │ Test case 1. semi_open_1. Time: 81 │
00:03:24 #4566 [Verbose] > │ Test case 2. closed_1. Time: 81 │
00:03:24 #4567 [Verbose] > │ Test case 3. semi_open_2. Time: 80 │
00:03:24 #4568 [Verbose] > │ Test case 4. closed_2. Time: 81 │
00:03:24 #4569 [Verbose] > │ │
00:03:24 #4570 [Verbose] > │ Solution: struct ([|1; 3; 4; 6; 8; 9; 11|], 12, 7) │
00:03:24 #4571 [Verbose] > │ Test case 1. semi_open_1. Time: 73 │
00:03:24 #4572 [Verbose] > │ Test case 2. closed_1. Time: 74 │
00:03:24 #4573 [Verbose] > │ Test case 3. semi_open_2. Time: 76 │
00:03:24 #4574 [Verbose] > │ Test case 4. closed_2. Time: 74 │
00:03:24 #4575 [Verbose] > │ │
00:03:24 #4576 [Verbose] > │ Solution: struct ([|1; 2; 3; 4; 5; 6; 7; 8; 9; 10; 11; 12; 13; 14; 15; 16; │
00:03:24 #4577 [Verbose] > │ 17; 18; 19; 20; │
00:03:24 #4578 [Verbose] > │ 21; 22; 23; 24; 25; 26; 27; 28; 29; 30; 31; 32; 33; 34; 35; 36; │
00:03:24 #4579 [Verbose] > │ 37; 38; │
00:03:24 #4580 [Verbose] > │ 39; 40; 41; 42; 43; 44; 45; 46; 47; 48; 49; 50; 51; 52; 53; 54; │
00:03:24 #4581 [Verbose] > │ 55; 56; │
00:03:24 #4582 [Verbose] > │ 57; 58; 59; 60; 61; 62; 63; 64; 65; 66; 67; 68; 69; 70; 71; 72; │
00:03:24 #4583 [Verbose] > │ 73; 74; │
00:03:24 #4584 [Verbose] > │ 75; 76; 77; 78; 79; 80; 81; 82; 83; 84; 85; 86; 87; 88; 89; 90; │
00:03:24 #4585 [Verbose] > │ 91; 92; │
00:03:24 #4586 [Verbose] > │ 93; 94; 95; 96; 97; 98; 99; 100|], 60, 100) │
00:03:24 #4587 [Verbose] > │ Test case 1. semi_open_1. Time: 95 │
00:03:24 #4588 [Verbose] > │ Test case 2. closed_1. Time: 98 │
00:03:24 #4589 [Verbose] > │ Test case 3. semi_open_2. Time: 95 │
00:03:24 #4590 [Verbose] > │ Test case 4. closed_2. Time: 99 │
00:03:24 #4591 [Verbose] > │ │
00:03:24 #4592 [Verbose] > │ Input │
00:03:24 #4593 [Verbose] > │ │
00:03:24 #4594 [Verbose] > │ │
00:03:24 #4595 [Verbose] > │ │
00:03:24 #4596 [Verbose] > │ | Expected | Result | Best │
00:03:24 #4597 [Verbose] > │ --- │
00:03:24 #4598 [Verbose] > │ │
00:03:24 #4599 [Verbose] > │ │
00:03:24 #4600 [Verbose] > │ │
00:03:24 #4601 [Verbose] > │ | --- | --- | --- │
00:03:24 #4602 [Verbose] > │ struct ([|1; 3; 4; 6; 8; 9; 11|], 6, 7) │
00:03:24 #4603 [Verbose] > │ │
00:03:24 #4604 [Verbose] > │ │
00:03:24 #4605 [Verbose] > │ │
00:03:24 #4606 [Verbose] > │ | US0_1 3 | US0_1 3 | struct (3L, 137L) │
00:03:24 #4607 [Verbose] > │ struct ([|1; 3; 4; 6; 8; 9; 11|], 1, 7) │
00:03:24 #4608 [Verbose] > │ │
00:03:24 #4609 [Verbose] > │ │
00:03:24 #4610 [Verbose] > │ │
00:03:24 #4611 [Verbose] > │ | US0_1 0 | US0_1 0 | struct (3L, 79L) │
00:03:24 #4612 [Verbose] > │ struct ([|1; 3; 4; 6; 8; 9; 11|], 11, 7) │
00:03:24 #4613 [Verbose] > │ │
00:03:24 #4614 [Verbose] > │ │
00:03:24 #4615 [Verbose] > │ │
00:03:24 #4616 [Verbose] > │ | US0_1 6 | US0_1 6 | struct (1L, 66L) │
00:03:24 #4617 [Verbose] > │ struct ([|1; 3; 4; 6; 8; 9; 11|], 12, 7) │
00:03:24 #4618 [Verbose] > │ │
00:03:24 #4619 [Verbose] > │ │
00:03:24 #4620 [Verbose] > │ │
00:03:24 #4621 [Verbose] > │ | US0_0 | US0_0 | struct (1L, 65L) │
00:03:24 #4622 [Verbose] > │ struct ([|1; 2; 3; 4; 5; 6; 7; 8; 9; 10; 11; 12; 13; 14; 15; 16; 17; 18; 19; │
00:03:24 #4623 [Verbose] > │ 20; │
00:03:24 #4624 [Verbose] > │ 21; 22; 23; 24; 25; 26; 27; 28; 29; 30; 31; 32; 33; 34; 35; 36; │
00:03:24 #4625 [Verbose] > │ 37; 38; │
00:03:24 #4626 [Verbose] > │ 39; 40; 41; 42; 43; 44; 45; 46; 47; 48; 49; 50; 51; 52; 53; 54; │
00:03:24 #4627 [Verbose] > │ 55; 56; │
00:03:24 #4628 [Verbose] > │ 57; 58; 59; 60; 61; 62; 63; 64; 65; 66; 67; 68; 69; 70; 71; 72; │
00:03:24 #4629 [Verbose] > │ 73; 74; │
00:03:24 #4630 [Verbose] > │ 75; 76; 77; 78; 79; 80; 81; 82; 83; 84; 85; 86; 87; 88; 89; 90; │
00:03:24 #4631 [Verbose] > │ 91; 92; │
00:03:24 #4632 [Verbose] > │ 93; 94; 95; 96; 97; 98; 99; 100|], 60, 100) | US0_1 59 | US0_1 59 | │
00:03:24 #4633 [Verbose] > │ struct (3L, 79L) │
00:03:24 #4634 [Verbose] > │ struct ([|1; 3; 4; 6; 8; 9; 11|], 6, 7) │
00:03:24 #4635 [Verbose] > │ │
00:03:24 #4636 [Verbose] > │ │
00:03:24 #4637 [Verbose] > │ │
00:03:24 #4638 [Verbose] > │ | US0_1 3 | US0_1 3 | struct (3L, 58L) │
00:03:24 #4639 [Verbose] > │ struct ([|1; 3; 4; 6; 8; 9; 11|], 1, 7) │
00:03:24 #4640 [Verbose] > │ │
00:03:24 #4641 [Verbose] > │ │
00:03:24 #4642 [Verbose] > │ │
00:03:24 #4643 [Verbose] > │ | US0_1 0 | US0_1 0 | struct (1L, 79L) │
00:03:24 #4644 [Verbose] > │ struct ([|1; 3; 4; 6; 8; 9; 11|], 11, 7) │
00:03:24 #4645 [Verbose] > │ │
00:03:24 #4646 [Verbose] > │ │
00:03:24 #4647 [Verbose] > │ │
00:03:24 #4648 [Verbose] > │ | US0_1 6 | US0_1 6 | struct (3L, 80L) │
00:03:24 #4649 [Verbose] > │ struct ([|1; 3; 4; 6; 8; 9; 11|], 12, 7) │
00:03:24 #4650 [Verbose] > │ │
00:03:24 #4651 [Verbose] > │ │
00:03:24 #4652 [Verbose] > │ │
00:03:24 #4653 [Verbose] > │ | US0_0 | US0_0 | struct (1L, 73L) │
00:03:24 #4654 [Verbose] > │ struct ([|1; 2; 3; 4; 5; 6; 7; 8; 9; 10; 11; 12; 13; 14; 15; 16; 17; 18; 19; │
00:03:24 #4655 [Verbose] > │ 20; │
00:03:24 #4656 [Verbose] > │ 21; 22; 23; 24; 25; 26; 27; 28; 29; 30; 31; 32; 33; 34; 35; 36; │
00:03:24 #4657 [Verbose] > │ 37; 38; │
00:03:24 #4658 [Verbose] > │ 39; 40; 41; 42; 43; 44; 45; 46; 47; 48; 49; 50; 51; 52; 53; 54; │
00:03:24 #4659 [Verbose] > │ 55; 56; │
00:03:24 #4660 [Verbose] > │ 57; 58; 59; 60; 61; 62; 63; 64; 65; 66; 67; 68; 69; 70; 71; 72; │
00:03:24 #4661 [Verbose] > │ 73; 74; │
00:03:24 #4662 [Verbose] > │ 75; 76; 77; 78; 79; 80; 81; 82; 83; 84; 85; 86; 87; 88; 89; 90; │
00:03:24 #4663 [Verbose] > │ 91; 92; │
00:03:24 #4664 [Verbose] > │ 93; 94; 95; 96; 97; 98; 99; 100|], 60, 100) | US0_1 59 | US0_1 59 | │
00:03:24 #4665 [Verbose] > │ struct (1L, 95L) │
00:03:24 #4666 [Verbose] > │ │
00:03:24 #4667 [Verbose] > │ Average Ranking │
00:03:24 #4668 [Verbose] > │ Test case 3. Average Time: 81L │
00:03:24 #4669 [Verbose] > │ Test case 4. Average Time: 83L │
00:03:24 #4670 [Verbose] > │ Test case 2. Average Time: 89L │
00:03:24 #4671 [Verbose] > │ Test case 1. Average Time: 101L │
00:03:24 #4672 [Verbose] > │ │
00:03:24 #4673 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:24 #4674 [Verbose] >
00:03:24 #4675 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:03:24 #4676 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:24 #4677 [Verbose] > │ ## returnLettersWithOddCountTests │
00:03:24 #4678 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:24 #4679 [Verbose] >
00:03:24 #4680 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:03:24 #4681 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:24 #4682 [Verbose] > │ Test: ReturnLettersWithOddCount │
00:03:24 #4683 [Verbose] > │ │
00:03:24 #4684 [Verbose] > │ Solution: 1 │
00:03:24 #4685 [Verbose] > │ Test case 1. A. Time: 645L │
00:03:24 #4686 [Verbose] > │ │
00:03:24 #4687 [Verbose] > │ Solution: 2 │
00:03:24 #4688 [Verbose] > │ Test case 1. A. Time: 663L │
00:03:24 #4689 [Verbose] > │ │
00:03:24 #4690 [Verbose] > │ Solution: 3 │
00:03:24 #4691 [Verbose] > │ Test case 1. A. Time: 680L │
00:03:24 #4692 [Verbose] > │ │
00:03:24 #4693 [Verbose] > │ Solution: 9 │
00:03:24 #4694 [Verbose] > │ Test case 1. A. Time: 730L │
00:03:24 #4695 [Verbose] > │ │
00:03:24 #4696 [Verbose] > │ Solution: 10 │
00:03:24 #4697 [Verbose] > │ Test case 1. A. Time: 815L │
00:03:24 #4698 [Verbose] > │ │
00:03:24 #4699 [Verbose] > │ Input | Expected | Result | Best │
00:03:24 #4700 [Verbose] > │ --- | --- | --- | --- │
00:03:24 #4701 [Verbose] > │ 1 | a | a | (1, 645) │
00:03:24 #4702 [Verbose] > │ 2 | ba | ba | (1, 663) │
00:03:24 #4703 [Verbose] > │ 3 | aaa | aaa | (1, 680) │
00:03:24 #4704 [Verbose] > │ 9 | aaaaaaaaa | aaaaaaaaa | (1, 730) │
00:03:24 #4705 [Verbose] > │ 10 | baaaaaaaaa | baaaaaaaaa | (1, 815) │
00:03:24 #4706 [Verbose] > │ │
00:03:24 #4707 [Verbose] > │ Averages │
00:03:24 #4708 [Verbose] > │ Test case 1. Average Time: 706L │
00:03:24 #4709 [Verbose] > │ │
00:03:24 #4710 [Verbose] > │ Ranking │
00:03:24 #4711 [Verbose] > │ Test case 1. Average Time: 706L │
00:03:24 #4712 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:24 #4713 [Verbose] >
00:03:24 #4714 [Verbose] > ── fsharp ──────────────────────────────────────────────────────────────────────
00:03:24 #4715 [Verbose] > //// test
00:03:24 #4716 [Verbose] >
00:03:24 #4717 [Verbose] > let solutions = [[
00:03:24 #4718 [Verbose] > "A",
00:03:24 #4719 [Verbose] > fun n ->
00:03:24 #4720 [Verbose] > let mutable _builder = StringBuilder (new string('a', n))
00:03:24 #4721 [Verbose] > if n % 2 = 0 then
00:03:24 #4722 [Verbose] > _builder.[[0]] <- 'b'
00:03:24 #4723 [Verbose] >
00:03:24 #4724 [Verbose] > _builder.ToString ()
00:03:24 #4725 [Verbose] > ]]
00:03:24 #4726 [Verbose] > let testCases = seq {
00:03:24 #4727 [Verbose] > 1, "a"
00:03:24 #4728 [Verbose] > 2, "ba"
00:03:24 #4729 [Verbose] > 3, "aaa"
00:03:24 #4730 [Verbose] > 9, "aaaaaaaaa"
00:03:24 #4731 [Verbose] > 10, "baaaaaaaaa"
00:03:24 #4732 [Verbose] > }
00:03:24 #4733 [Verbose] > let rec returnLettersWithOddCountTests =
00:03:24 #4734 [Verbose] > runAll (nameof returnLettersWithOddCountTests) _count solutions testCases
00:03:24 #4735 [Verbose] > returnLettersWithOddCountTests
00:03:24 #4736 [Verbose] > |> sortResultList
00:03:27 #4737 [Verbose] >
00:03:27 #4738 [Verbose] > ╭─[ 2.56s - stdout ]───────────────────────────────────────────────────────────╮
00:03:27 #4739 [Verbose] > │ │
00:03:27 #4740 [Verbose] > │ │
00:03:27 #4741 [Verbose] > │ Test: returnLettersWithOddCountTests │
00:03:27 #4742 [Verbose] > │ │
00:03:27 #4743 [Verbose] > │ Solution: 1 │
00:03:27 #4744 [Verbose] > │ Test case 1. A. Time: 334L │
00:03:27 #4745 [Verbose] > │ │
00:03:27 #4746 [Verbose] > │ Solution: 2 │
00:03:27 #4747 [Verbose] > │ Test case 1. A. Time: 397L │
00:03:27 #4748 [Verbose] > │ │
00:03:27 #4749 [Verbose] > │ Solution: 3 │
00:03:27 #4750 [Verbose] > │ Test case 1. A. Time: 387L │
00:03:27 #4751 [Verbose] > │ │
00:03:27 #4752 [Verbose] > │ Solution: 9 │
00:03:27 #4753 [Verbose] > │ Test case 1. A. Time: 371L │
00:03:27 #4754 [Verbose] > │ │
00:03:27 #4755 [Verbose] > │ Solution: 10 │
00:03:27 #4756 [Verbose] > │ Test case 1. A. Time: 365L │
00:03:27 #4757 [Verbose] > │ │
00:03:27 #4758 [Verbose] > │ Input | Expected | Result | Best │
00:03:27 #4759 [Verbose] > │ --- | --- | --- | --- │
00:03:27 #4760 [Verbose] > │ 1 | a | a | (1, 334) │
00:03:27 #4761 [Verbose] > │ 2 | ba | ba | (1, 397) │
00:03:27 #4762 [Verbose] > │ 3 | aaa | aaa | (1, 387) │
00:03:27 #4763 [Verbose] > │ 9 | aaaaaaaaa | aaaaaaaaa | (1, 371) │
00:03:27 #4764 [Verbose] > │ 10 | baaaaaaaaa | baaaaaaaaa | (1, 365) │
00:03:27 #4765 [Verbose] > │ │
00:03:27 #4766 [Verbose] > │ Average Ranking │
00:03:27 #4767 [Verbose] > │ Test case 1. Average Time: 370L │
00:03:27 #4768 [Verbose] > │ │
00:03:27 #4769 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:27 #4770 [Verbose] >
00:03:27 #4771 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:03:27 #4772 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:27 #4773 [Verbose] > │ ## hasAnyPairCloseToEachotherTests │
00:03:27 #4774 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:27 #4775 [Verbose] >
00:03:27 #4776 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:03:27 #4777 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:27 #4778 [Verbose] > │ Test: HasAnyPairCloseToEachother │
00:03:27 #4779 [Verbose] > │ │
00:03:27 #4780 [Verbose] > │ Solution: 0 │
00:03:27 #4781 [Verbose] > │ Test case 1. A. Time: 137L │
00:03:27 #4782 [Verbose] > │ │
00:03:27 #4783 [Verbose] > │ Solution: 1,2 │
00:03:27 #4784 [Verbose] > │ Test case 1. A. Time: 186L │
00:03:27 #4785 [Verbose] > │ │
00:03:27 #4786 [Verbose] > │ Solution: 3,5 │
00:03:27 #4787 [Verbose] > │ Test case 1. A. Time: 206L │
00:03:27 #4788 [Verbose] > │ │
00:03:27 #4789 [Verbose] > │ Solution: 3,4,6 │
00:03:27 #4790 [Verbose] > │ Test case 1. A. Time: 149L │
00:03:27 #4791 [Verbose] > │ │
00:03:27 #4792 [Verbose] > │ Solution: 2,4,6 │
00:03:27 #4793 [Verbose] > │ Test case 1. A. Time: 150L │
00:03:27 #4794 [Verbose] > │ │
00:03:27 #4795 [Verbose] > │ Input | Expected | Result | Best │
00:03:27 #4796 [Verbose] > │ --- | --- | --- | --- │
00:03:27 #4797 [Verbose] > │ 0 | False | False | (1, 137) │
00:03:27 #4798 [Verbose] > │ 1,2 | True | True | (1, 186) │
00:03:27 #4799 [Verbose] > │ 3,5 | False | False | (1, 206) │
00:03:27 #4800 [Verbose] > │ 3,4,6 | True | True | (1, 149) │
00:03:27 #4801 [Verbose] > │ 2,4,6 | False | False | (1, 150) │
00:03:27 #4802 [Verbose] > │ │
00:03:27 #4803 [Verbose] > │ Averages │
00:03:27 #4804 [Verbose] > │ Test case 1. Average Time: 165L │
00:03:27 #4805 [Verbose] > │ │
00:03:27 #4806 [Verbose] > │ Ranking │
00:03:27 #4807 [Verbose] > │ Test case 1. Average Time: 165L │
00:03:27 #4808 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:27 #4809 [Verbose] >
00:03:27 #4810 [Verbose] > ── fsharp ──────────────────────────────────────────────────────────────────────
00:03:27 #4811 [Verbose] > //// test
00:03:27 #4812 [Verbose] >
00:03:27 #4813 [Verbose] > let solutions = [[
00:03:27 #4814 [Verbose] > "A",
00:03:27 #4815 [Verbose] > fun (a: int[[]]) ->
00:03:27 #4816 [Verbose] > let indices = System.Linq.Enumerable.Range(0, a.Length) |>
00:03:27 #4817 [Verbose] > System.Linq.Enumerable.ToArray
00:03:27 #4818 [Verbose] > System.Array.Sort (a, indices)
00:03:27 #4819 [Verbose] >
00:03:27 #4820 [Verbose] > indices
00:03:27 #4821 [Verbose] > |> Array.take (a.Length - 1)
00:03:27 #4822 [Verbose] > |> Array.exists (fun i -> a.[[i + 1]] - a.[[i]] = 1)
00:03:27 #4823 [Verbose] > ]]
00:03:27 #4824 [Verbose] > let testCases = seq {
00:03:27 #4825 [Verbose] > [[| 0 |]], false
00:03:27 #4826 [Verbose] > [[| 1; 2 |]], true
00:03:27 #4827 [Verbose] > [[| 3; 5 |]], false
00:03:27 #4828 [Verbose] > [[| 3; 4; 6 |]], true
00:03:27 #4829 [Verbose] > [[| 2; 4; 6 |]], false
00:03:27 #4830 [Verbose] > }
00:03:27 #4831 [Verbose] > let rec hasAnyPairCloseToEachotherTests =
00:03:27 #4832 [Verbose] > runAll (nameof hasAnyPairCloseToEachotherTests) _count solutions testCases
00:03:27 #4833 [Verbose] > hasAnyPairCloseToEachotherTests
00:03:27 #4834 [Verbose] > |> sortResultList
00:03:28 #4835 [Verbose] >
00:03:28 #4836 [Verbose] > ╭─[ 1.10s - stdout ]───────────────────────────────────────────────────────────╮
00:03:28 #4837 [Verbose] > │ │
00:03:28 #4838 [Verbose] > │ │
00:03:28 #4839 [Verbose] > │ Test: hasAnyPairCloseToEachotherTests │
00:03:28 #4840 [Verbose] > │ │
00:03:28 #4841 [Verbose] > │ Solution: 0 │
00:03:28 #4842 [Verbose] > │ Test case 1. A. Time: 138L │
00:03:28 #4843 [Verbose] > │ │
00:03:28 #4844 [Verbose] > │ Solution: 1,2 │
00:03:28 #4845 [Verbose] > │ Test case 1. A. Time: 166L │
00:03:28 #4846 [Verbose] > │ │
00:03:28 #4847 [Verbose] > │ Solution: 3,5 │
00:03:28 #4848 [Verbose] > │ Test case 1. A. Time: 60L │
00:03:28 #4849 [Verbose] > │ │
00:03:28 #4850 [Verbose] > │ Solution: 3,4,6 │
00:03:28 #4851 [Verbose] > │ Test case 1. A. Time: 64L │
00:03:28 #4852 [Verbose] > │ │
00:03:28 #4853 [Verbose] > │ Solution: 2,4,6 │
00:03:28 #4854 [Verbose] > │ Test case 1. A. Time: 65L │
00:03:28 #4855 [Verbose] > │ │
00:03:28 #4856 [Verbose] > │ Input | Expected | Result | Best │
00:03:28 #4857 [Verbose] > │ --- | --- | --- | --- │
00:03:28 #4858 [Verbose] > │ 0 | False | False | (1, 138) │
00:03:28 #4859 [Verbose] > │ 1,2 | True | True | (1, 166) │
00:03:28 #4860 [Verbose] > │ 3,5 | False | False | (1, 60) │
00:03:28 #4861 [Verbose] > │ 3,4,6 | True | True | (1, 64) │
00:03:28 #4862 [Verbose] > │ 2,4,6 | False | False | (1, 65) │
00:03:28 #4863 [Verbose] > │ │
00:03:28 #4864 [Verbose] > │ Average Ranking │
00:03:28 #4865 [Verbose] > │ Test case 1. Average Time: 98L │
00:03:28 #4866 [Verbose] > │ │
00:03:28 #4867 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:28 #4868 [Verbose] >
00:03:28 #4869 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:28 #4870 [Verbose] > // // test
00:03:28 #4871 [Verbose] >
00:03:28 #4872 [Verbose] > ()
00:03:28 #4873 [Verbose] > Building /tmp/!dotnet-repl/20240320-1239-0808-0875-09e89564d25c/main.spi
00:03:28 #4874 [Verbose] >
00:03:28 #4875 [Verbose] > ╭─[ 135.20ms - stdout ]────────────────────────────────────────────────────────╮
00:03:28 #4876 [Verbose] > │ let rec method0 () : unit = │
00:03:28 #4877 [Verbose] > │ () │
00:03:28 #4878 [Verbose] > │ method0() │
00:03:28 #4879 [Verbose] > │ │
00:03:28 #4880 [Verbose] > │ │
00:03:28 #4881 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:29 #4882 [Verbose] > [NbConvertApp] Converting notebook Perf.dib.ipynb to html
00:03:29 #4883 [Verbose] > /opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:03:29 #4884 [Verbose] > validate(nb)
00:03:29 #4885 [Verbose] > /opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:03:29 #4886 [Verbose] > return _pygments_highlight(
00:03:30 #4887 [Verbose] > [NbConvertApp] Writing 555878 bytes to Perf.dib.html
00:03:30 #4888 [Debug] executeAsync / exitCode: 0 / output.Length: 447153
00:03:30 #4889 [Debug] main / executeCommand / exitCode: 0
00:00:00 #1 [Debug] writeDibCode / output: Fs / path: Perf.dib
00:00:00 #2 [Debug] parseDibCode / output: Fs / file: Perf.dib
In [ ]:
{ . "$ScriptDir/../apps/dir-tree-html/build.ps1" } | Invoke-Block
── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ # DirTreeHtml (Polyglot) │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── #!import ../../lib/fsharp/Notebooks.dib #!import ../../lib/fsharp/Testing.dib ── fsharp - import ───────────────────────────────────────────────────────────── #r "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Asp NetCore.Html.Abstractions.dll" #r "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot Net.Interactive.dll" #r "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot Net.Interactive.FSharp.dll" #r "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot Net.Interactive.Formatting.dll" open System open System.IO open System.Text open Microsoft.DotNet.Interactive.Formatting ── fsharp - import ───────────────────────────────────────────────────────────── #r "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot Net.Interactive.FSharp.dll" open Microsoft.DotNet.Interactive.FSharp.FSharpKernelHelpers #r "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot Net.Interactive.dll" open type Microsoft.DotNet.Interactive.Kernel ── fsharp - import ───────────────────────────────────────────────────────────── //// test Formatter.ListExpansionLimit <- 100 ── fsharp - import ───────────────────────────────────────────────────────────── #r @"../../../../../../../.nuget/packages/expecto/10.1.0/lib/net6.0/Expecto.dll" ── fsharp - import ───────────────────────────────────────────────────────────── //// test type AssertExceptionFormatter (ex) = member _.Text = ex.ToString() .Replace("32m", "<span style=\"color: green;\">") .Replace("36m", "</span>") .Replace("31m", "<span style=\"color: red;\">") .Replace("\n", "<br/>\n") Formatter.Register<AssertExceptionFormatter> ((fun (x : AssertExceptionFormatter) -> x.Text), "text/html") ── fsharp - import ───────────────────────────────────────────────────────────── //// test let inline __expect fn log expected actual = if log then printfn $"{actual.ToDisplayString ()}" try "Testing.__expect" |> fn actual expected with :? Expecto.AssertException as ex -> AssertExceptionFormatter(ex).Display () |> ignore failwith (ex.GetType().FullName) let inline __contains log expected actual = __expect Expecto.Expect.contains log expected actual let inline _contains expected actual = __contains true expected actual let inline __assert_eq log expected actual = __expect Expecto.Expect.equal log expected actual let inline _assert_eq expected actual = __assert_eq true expected actual let inline __isGreaterThan log expected actual = __expect Expecto.Expect.isGreaterThan log expected... ── fsharp - import ───────────────────────────────────────────────────────────── //// test let inline __isBetween log a b actual = let inline isBetween actual (a, b) _ = __isGreaterThanOrEqual log a actual __isLessThanOrEqual log b actual __expect isBetween log (a, b) actual let inline _isBetween a b actual = __isBetween true a b actual ── fsharp ────────────────────────────────────────────────────────────────────── #r @"../../../../../../../.nuget/packages/fsharp.control.asyncseq/3.2.1/lib/netstan dard2.1/FSharp.Control.AsyncSeq.dll" #r @"../../../../../../../.nuget/packages/system.reactive/6.0.1-preview.1/lib/net6. 0/System.Reactive.dll" #r @"../../../../../../../.nuget/packages/system.reactive.linq/6.0.1-preview.1/lib/ netstandard2.0/System.Reactive.Linq.dll" #r @"../../../../../../../.nuget/packages/argu/6.2.2/lib/netstandard2.0/Argu.dll" #r @"../../../../../../../.nuget/packages/system.commandline/2.0.0-beta4.22272.1/li b/net6.0/System.CommandLine.dll" #r @"../../../../../../../.nuget/packages/falco.markup/1.0.2/lib/netstandard2.0/Fal co.Markup.dll" ── fsharp ────────────────────────────────────────────────────────────────────── #!import ../../lib/fsharp/Common.fs #!import ../../lib/fsharp/CommonFSharp.fs #!import ../../lib/fsharp/Async.fs #!import ../../lib/fsharp/AsyncSeq.fs #!import ../../lib/fsharp/Networking.fs #!import ../../lib/fsharp/Runtime.fs #!import ../../lib/fsharp/FileSystem.fs ── fsharp - import ───────────────────────────────────────────────────────────── #if !INTERACTIVE namespace Polyglot #endif module Common = let nl = System.Environment.NewLine let q = @"""" let inline cons head tail = head :: tail module String = let inline contains (value : string) (input : string) = input.Contains value let inline endsWith (value : string) (input : string) = input.EndsWith value let inline padLeft totalWidth paddingChar (input : string) = input.PadLeft (totalWidth, paddingChar) let inline replace (oldValue : string) (newValue : string) (input : string) = input.Replace (oldValue, newValue) let inline split separator (input : string) = input.Split separator let inline spli... ── fsharp - import ───────────────────────────────────────────────────────────── #if !INTERACTIVE namespace Polyglot #endif module CommonFSharp = open Common /// ## getUnionCaseName let inline getUnionCaseName<'T> (x: 'T) = match Reflection.FSharpValue.GetUnionFields(x, typeof<'T>) with | case, _ -> case.Name ── fsharp - import ───────────────────────────────────────────────────────────── #if !INTERACTIVE namespace Polyglot #endif module Async = open Common /// ## choice let inline choice asyncs = async { let e = Event<_> () use cts = new System.Threading.CancellationTokenSource () let fn = asyncs |> Seq.map (fun a -> async { let! x = a e.Trigger x }) |> Async.Parallel |> Async.Ignore Async.Start (fn, cts.Token) let! result = Async.AwaitEvent e.Publish cts.Cancel () return result } /// ## map let inline map fn a = async { let! x = a return fn x } /// ## catch let inline catch a = a |> Async.Catch ... ── fsharp - import ───────────────────────────────────────────────────────────── #if !INTERACTIVE namespace Polyglot #endif module AsyncSeq = open Common /// ## subscribeEvent let inline subscribeEvent (event: IEvent<'H, 'A>) map = let observable = System.Reactive.Linq.Observable.FromEventPattern<'H, 'A>(event.AddHandler, event.RemoveHandler) System.Reactive.Linq.Observable.Select (observable, fun event -> map event.EventArgs) |> FSharp.Control.AsyncSeq.ofObservableBuffered let subscribeToken (token : System.Threading.CancellationToken) = let tcs = new System.Threading.Tasks.TaskCompletionSource () System.Action tcs.SetResult |> token.Register |> ignore let start = System.DateTime.Now.Ticks FSharp.Control.AsyncSeq.unfoldAsync (fun (... ── fsharp - import ───────────────────────────────────────────────────────────── #if !INTERACTIVE namespace Polyglot #endif module Networking = open Common /// ## testPortOpen let inline testPortOpen port = async { let! ct = Async.CancellationToken use client = new System.Net.Sockets.TcpClient () try do! client.ConnectAsync ("127.0.0.1", port, ct) |> Async.awaitValueTaskUnit return true with ex -> trace Verbose (fun () -> $"testPortOpen / ex: {ex |> printException}") getLocals return false } let inline testPortOpenTimeout timeout port = async { let! result = testPortOpen port |> Async.runWithTimeoutAsync timeout return match result with | None -> false ... ── fsharp - import ───────────────────────────────────────────────────────────── #if !INTERACTIVE namespace Polyglot #endif module Runtime = open Common /// ## isWindows let isWindows = fun () -> System.Runtime.InteropServices.RuntimeInformation.IsOSPlatform System.Runtime.InteropServices.OSPlatform.Windows |> memoize /// ## getExecutableSuffix let inline getExecutableSuffix () = if isWindows () then ".exe" else "" /// ## splitCommand type private CommandParseStep = | Start | Path of quoted: bool | Arguments let splitCommand (command: string) = let rec loop (path, args) chars step = match chars, step with | ('"' | '\'') :: tail, _ when path = "" -> loop (pat... ── fsharp - import ───────────────────────────────────────────────────────────── #if !INTERACTIVE namespace Polyglot #endif module FileSystem = open Common /// ## Operators module Operators = let inline (</>) a b = System.IO.Path.Combine (a, b) open Operators /// ## createTempDirectoryName let inline createTempDirectoryName () = let root = System.Reflection.Assembly.GetEntryAssembly().GetName().Name System.IO.Path.GetTempPath () </> $"!{root}" </> string (newGuidFromDateTime System.DateTime.Now) /// ## createTempDirectory let inline createTempDirectory () = let tempFolder = createTempDirectoryName () let result = System.IO.Directory.CreateDirectory tempFolder if not result.Exists then let ge... ── fsharp ────────────────────────────────────────────────────────────────────── open FileSystem.Operators open Falco.Markup ── fsharp ────────────────────────────────────────────────────────────────────── type FileSystemNode = | File of string * string * int64 | Folder of string * string * FileSystemNode list | Root of FileSystemNode list let rec scanDirectory isRoot (basePath : string) (path : string) = let relativePath = path.Replace(basePath, "").Replace("\\", "/").Replace("//", "/").TrimStart '/' let directories = path |> System.IO.Directory.GetDirectories |> Array.toList |> List.sort |> List.map (scanDirectory false basePath) let files = path |> System.IO.Directory.GetFiles |> Array.toList |> List.sort |> List.map (fun f -> File (System.IO.Path.GetFileName f, relativePath, System.IO.FileInfo(f).Length)) let children = directories @ files if isRoot then Root children else Folder (path |> System.IO.Path.GetFileName, relativePath, children) let rec generateHtml fsNode = let sizeLabel size = match float size with | size when size > 1024.0 * 1024.0 -> $"%.2f{size / 1024.0 / 1024.0} MB" | size when size > 1024.0 -> $"%.2f{size / 1024.0} KB" | size -> $"%.2f{size} B" match fsNode with | File (fileName, relativePath, size) -> Elem.div [[]] [[ Text.raw "📄 " Elem.a [[ Attr.href $"""{relativePath}{if relativePath = "" then "" else "/"}{fileName}""" ]] [[ Text.raw fileName ]] Elem.span [[]] [[ Text.raw $" ({size |> sizeLabel})" ]] ]] | Folder (folderName, relativePath, children) -> let size = let rec loop children = children |> List.sumBy (function | File (_, _, size) -> size | Folder (_, _, children) | Root children -> loop children ) loop children Elem.details [[ Attr.open' "true" ]] [[ Elem.summary [[]] [[ Text.raw "📂 " Elem.a [[ Attr.href relativePath ]] [[ Text.raw folderName ]] Elem.span [[]] [[ Text.raw $" ({size |> sizeLabel})" ]] ]] Elem.div [[]] [[ yield! children |> List.map generateHtml ]] ]] | Root children -> Elem.div [[]] [[ yield! children |> List.map generateHtml ]] let generateHtmlForFileSystem root = $"""<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <style> body {{ background-color: #222; color: #ccc; }} a {{ color: #777; font-size: 15px; }} span {{ font-size: 11px; }} div > div {{ padding-left: 10px; }} details > div {{ padding-left: 19px; }} </style> </head> <body> {root |> generateHtml |> renderNode} </body> </html> """ ── fsharp ────────────────────────────────────────────────────────────────────── //// test let tempFolder = FileSystem.createTempDirectory () let rec loop d n = async { if n >= 0 then tempFolder </> d |> System.IO.Directory.CreateDirectory |> ignore do! n |> string |> String.replicate (n + 1) |> FileSystem.writeAllTextAsync (tempFolder </> d </> $"file.txt") do! loop $"{d}/{n}" (n - 1) } loop "_.root" 3 |> Async.RunSynchronously let html = scanDirectory true tempFolder tempFolder |> generateHtmlForFileSystem html |> _assert_eq """<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <style> body { background-color: #222; color: #ccc; } a { color: #777; font-size: 15px; } span { font-size: 11px; } div > div { padding-left: 10px; } details > div { padding-left: 19px; } </style> </head> <body> <div><details open="true"><summary>📂 <a href="_.root">_.root</a><span> (10.00 B)</span></summary><div><details open="true"><summary>📂 <a href="_.root/3">3</a><span> (6.00 B)</span></summary><div><details open="true"><summary>📂 <a href="_.root/3/2">2</a><span> (3.00 B)</span></summary><div><details open="true"><summary>📂 <a href="_.root/3/2/1">1</a><span> (1.00 B)</span></summary><div><div>📄 <a href="_.root/3/2/1/file.txt">file.txt</a><span> (1.00 B)</span></div></div></details><div>📄 <a href="_.root/3/2/file.txt">file.txt</a><span> (2.00 B)</span></div></div></details><div>📄 <a href="_.root/3/file.txt">file.txt</a><span> (3.00 B)</span></div></div></details><div>📄 <a href="_.root/file.txt">file.txt</a><span> (4.00 B)</span></div></div></details></div> </body> </html> """ html |> Microsoft.DotNet.Interactive.Formatting.Html.ToHtmlContent ╭─[ 116.73ms - return value ]──────────────────────────────────────────────────╮ │ <!DOCTYPE html> │ │ <html lang="en"> │ │ <head> │ │ <meta charset="UTF-8"> │ │ <style> │ │ body { │ │ background-color: #222; │ │ color: #ccc; │ │ } │ │ a { │ │ color: #777; │ │ font-size: 15px; │ │ } │ │ span { │ │ font-size: 11px; │ │ } │ │ div > div { │ │ padding-left: 10px; │ │ } │ │ details > div { │ │ padding-left: 19px; │ │ } │ │ </style> │ │ </head> │ │ <body> │ │ <div><details open="true"><summary>📂 <a │ │ href="_.root">_.root</a><span> (10.00 B)</span></summary><div><details │ │ open="true"><summary>📂 <a href="_.root/3">3</a><span> (6.00 │ │ B)</span></summary><div><details open="true"><summary>📂 <a │ │ href="_.root/3/2">2</a><span> (3.00 B)</span></summary><div><details │ │ open="true"><summary>📂 <a href="_.root/3/2/1">1</a><span> (1.00 │ │ B)</span></summary><div><div>📄 <a href="_.root... │ ╰──────────────────────────────────────────────────────────────────────────────╯ ╭─[ 120.24ms - stdout ]────────────────────────────────────────────────────────╮ │ <!DOCTYPE html> │ │ <html lang="en"> │ │ <head> │ │ <meta charset="UTF-8"> │ │ <style> │ │ body { │ │ background-color: #222; │ │ color: #ccc; │ │ } │ │ a { │ │ color: #777; │ │ font-size: 15px; │ │ } │ │ span { │ │ font-size: 11px; │ │ } │ │ div > div { │ │ padding-left: 10px; │ │ } │ │ details > div { │ │ padding-left: 19px; │ │ } │ │ </style> │ │ </head> │ │ <body> │ │ <div><details open="true"><summary>📂 <a │ │ href="_.root">_.root</a><span> (10.00 B)</span></summary><div><details │ │ open="true"><summary>📂 <a href="_.root/3">3</a><span> (6.00 │ │ B)</span></summary><div><details open="true"><summary>📂 <a │ │ href="_.root/3/2">2</a><span> (3.00 B)</span></summary><div><details │ │ open="true"><summary>📂 <a href="_.root/3/2/1">1</a><span> (1.00 │ │ B)</span></summary><div><div>📄 <a │ │ href="_.root/3/2/1/file.txt">file.txt</a><span> (1.00 │ │ B)</span></div></div></details><div>📄 <a │ │ href="_.root/3/2/file.txt">file.txt</a><span> (2.00 │ │ B)</span></div></div></details><div>📄 <a │ │ href="_.root/3/file.txt">file.txt</a><span> (3.00 │ │ B)</span></div></div></details><div>📄 <a │ │ href="_.root/file.txt">file.txt</a><span> (4.00 │ │ B)</span></div></div></details></div> │ │ </body> │ │ </html> │ │ │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## Arguments │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── [[<RequireQualifiedAccess>]] type Arguments = | [[<Argu.ArguAttributes.ExactlyOnce>]] Dir of string | [[<Argu.ArguAttributes.ExactlyOnce>]] Html of string interface Argu.IArgParserTemplate with member s.Usage = match s with | Dir _ -> nameof Dir | Html _ -> nameof Html ── fsharp ────────────────────────────────────────────────────────────────────── //// test Argu.ArgumentParser.Create<Arguments>().PrintUsage () ╭─[ 73.55ms - return value ]───────────────────────────────────────────────────╮ │ USAGE: dotnet-repl [--help] --dir <string> --html <string> │ │ │ │ OPTIONS: │ │ │ │ --dir <string> Dir │ │ --html <string> Html │ │ --help display this list of options. │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## main │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let main args = let argsMap = args |> Runtime.parseArgsMap<Arguments> let dir = match argsMap.[[nameof Arguments.Dir]] with | [[ Arguments.Dir dir ]] -> Some dir | _ -> None |> Option.get let htmlPath = match argsMap.[[nameof Arguments.Html]] with | [[ Arguments.Html html ]] -> Some html | _ -> None |> Option.get let fileSystem = scanDirectory true dir dir let html = generateHtmlForFileSystem fileSystem html |> FileSystem.writeAllTextAsync htmlPath |> Async.runWithTimeout 30000 |> function | Some () -> 0 | None -> 1 ── fsharp ────────────────────────────────────────────────────────────────────── //// test let args = System.Environment.GetEnvironmentVariable "ARGS" |> Runtime.splitArgs |> Seq.toArray match args with | [[||]] -> 0 | args -> if main args = 0 then 0 else failwith "main failed" ╭─[ 47.62ms - return value ]───────────────────────────────────────────────────╮ │ <div class="dni-plaintext"><pre>0</pre></div><style> │ │ .dni-code-hint { │ │ font-style: italic; │ │ overflow: hidden; │ │ white-space: nowrap; │ │ } │ │ .dni-treeview { │ │ white-space: nowrap; │ │ } │ │ .dni-treeview td { │ │ vertical-align: top; │ │ text-align: start; │ │ } │ │ details.dni-treeview { │ │ padding-left: 1em; │ │ } │ │ table td { │ │ text-align: start; │ │ } │ │ table tr { │ │ vertical-align: top; │ │ margin: 0em 0px; │ │ } │ │ table tr td pre │ │ { │ │ vertical-align: top !important; │ │ margin: 0em 0px !important; │ │ } │ │ table th { │ │ text-align: start; │ │ } │ │ </style> │ ╰──────────────────────────────────────────────────────────────────────────────╯ [NbConvertApp] Converting notebook DirTreeHtml.dib.ipynb to html /opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. validate(nb) /opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 return _pygments_highlight( [NbConvertApp] Writing 308646 bytes to DirTreeHtml.dib.html 00:00:00 #1 [Debug] writeDibCode / output: Fs / path: DirTreeHtml.dib 00:00:00 #2 [Debug] parseDibCode / output: Fs / file: DirTreeHtml.dib 00:00:00 #1 [Debug] persistCodeProject / packages: [Argu; Falco.Markup; FSharp.Control.AsyncSeq; ... ] / modules: [lib/fsharp/Common.fs; lib/fsharp/CommonFSharp.fs; lib/fsharp/Async.fs; ... ] / name: DirTreeHtml / code.Length: 4478 00:00:00 #2 [Debug] buildProject / fullPath: /home/runner/work/polyglot/polyglot/target/polyglot/builder/DirTreeHtml/DirTreeHtml.fsproj 00:00:00 #3 [Debug] executeAsync / options: { Command = "dotnet publish "/home/runner/work/polyglot/polyglot/target/polyglot/builder/DirTreeHtml/DirTreeHtml.fsproj" --configuration Release --output "/home/runner/work/polyglot/polyglot/apps/dir-tree-html/dist" --runtime linux-x64" WorkingDirectory = Some "/home/runner/work/polyglot/polyglot/target/polyglot/builder/DirTreeHtml" CancellationToken = None OnLine = None } 00:00:00 #4 [Verbose] > MSBuild version 17.10.0-preview-24101-01+07fd5d51f for .NET 00:00:00 #5 [Verbose] > Determining projects to restore... 00:00:00 #6 [Verbose] > Paket version 8.1.0-alpha001+27cb9f111f156e8b68d08dc293857425c0ade23d 00:00:00 #7 [Verbose] > The last full restore is still up to date. Nothing left to do. 00:00:00 #8 [Verbose] > Total time taken: 0 milliseconds 00:00:01 #9 [Verbose] > Paket version 8.1.0-alpha001+27cb9f111f156e8b68d08dc293857425c0ade23d 00:00:01 #10 [Verbose] > Restoring /home/runner/work/polyglot/polyglot/target/polyglot/builder/DirTreeHtml/DirTreeHtml.fsproj 00:00:01 #11 [Verbose] > Starting restore process. 00:00:01 #12 [Verbose] > Total time taken: 0 milliseconds 00:00:02 #13 [Verbose] > Restored /home/runner/work/polyglot/polyglot/target/polyglot/builder/DirTreeHtml/DirTreeHtml.fsproj (in 294 ms). 00:00:02 #14 [Verbose] > /usr/share/dotnet/sdk/9.0.100-preview.1.24101.2/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.RuntimeIdentifierInference.targets(313,5): message NETSDK1057: You are using a preview version of .NET. See: https://aka.ms/dotnet-support-policy [/home/runner/work/polyglot/polyglot/target/polyglot/builder/DirTreeHtml/DirTreeHtml.fsproj] 00:00:06 #15 [Verbose] > DirTreeHtml -> /home/runner/work/polyglot/polyglot/target/polyglot/builder/DirTreeHtml/bin/Release/net9.0/linux-x64/DirTreeHtml.dll 00:00:06 #16 [Verbose] > DirTreeHtml -> /home/runner/work/polyglot/polyglot/apps/dir-tree-html/dist 00:00:06 #17 [Debug] executeAsync / exitCode: 0 / output.Length: 1165 00:00:06 #18 [Debug] executeAsync / options: { Command = "dotnet publish "/home/runner/work/polyglot/polyglot/target/polyglot/builder/DirTreeHtml/DirTreeHtml.fsproj" --configuration Release --output "/home/runner/work/polyglot/polyglot/apps/dir-tree-html/dist" --runtime win-x64" WorkingDirectory = Some "/home/runner/work/polyglot/polyglot/target/polyglot/builder/DirTreeHtml" CancellationToken = None OnLine = None } 00:00:07 #19 [Verbose] > MSBuild version 17.10.0-preview-24101-01+07fd5d51f for .NET 00:00:07 #20 [Verbose] > Determining projects to restore... 00:00:08 #21 [Verbose] > Restored /home/runner/work/polyglot/polyglot/target/polyglot/builder/DirTreeHtml/DirTreeHtml.fsproj (in 310 ms). 00:00:08 #22 [Verbose] > /usr/share/dotnet/sdk/9.0.100-preview.1.24101.2/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.RuntimeIdentifierInference.targets(313,5): message NETSDK1057: You are using a preview version of .NET. See: https://aka.ms/dotnet-support-policy [/home/runner/work/polyglot/polyglot/target/polyglot/builder/DirTreeHtml/DirTreeHtml.fsproj] 00:00:11 #23 [Verbose] > DirTreeHtml -> /home/runner/work/polyglot/polyglot/target/polyglot/builder/DirTreeHtml/bin/Release/net9.0/win-x64/DirTreeHtml.dll 00:00:12 #24 [Verbose] > DirTreeHtml -> /home/runner/work/polyglot/polyglot/apps/dir-tree-html/dist 00:00:12 #25 [Debug] executeAsync / exitCode: 0 / output.Length: 753
In [ ]:
{ . "$ScriptDir/../apps/ipfs/build.ps1" } | Invoke-Block
Lockfile is up to date, resolution step is skipped Progress: resolved 1, reused 0, downloaded 0, added 0 Packages: +495 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Progress: resolved 495, reused 304, downloaded 137, added 442 Progress: resolved 495, reused 304, downloaded 190, added 495, done .../node_modules/protobufjs postinstall$ node scripts/postinstall .../node_modules/protobufjs postinstall: Done .../esbuild@0.19.12/node_modules/esbuild postinstall$ node install.js .../esbuild@0.19.12/node_modules/esbuild postinstall: Done dependencies: + nft.storage 7.1.1 devDependencies: + @types/node 20.11.10 + npm-check-updates 16.14.11 + tsx 4.7.0 + typescript 5.4.0-dev.20231129 Done in 2.7s
In [ ]:
{ . "$ScriptDir/outdated.ps1" } | Invoke-Block
Paket version 8.1.0-alpha001+27cb9f111f156e8b68d08dc293857425c0ade23d
Resolving dependency graph...
Outdated packages found:
Group: Main
* Expecto 10.1 -> 10.2.1
* Expecto.FsCheck 10.1.0-fscheck3 -> 10.2.1
* FsCheck 3.0.0-rc3 -> 2.16.6
* FSharp.Core 8.0.300-beta.24080.5 -> 8.0.300-beta.24154.4
* Microsoft.AspNetCore.Connections.Abstractions 7.0 -> 9.0.0-preview.2.24128.4
* Microsoft.AspNetCore.Http.Connections.Client 7.0 -> 9.0.0-preview.2.24128.4
* Microsoft.AspNetCore.Http.Connections.Common 7.0 -> 9.0.0-preview.2.24128.4
* Microsoft.AspNetCore.SignalR.Client 7.0 -> 9.0.0-preview.2.24128.4
* Microsoft.AspNetCore.SignalR.Client.Core 7.0 -> 9.0.0-preview.2.24128.4
* Microsoft.AspNetCore.SignalR.Common 7.0 -> 9.0.0-preview.2.24128.4
* Microsoft.AspNetCore.SignalR.Protocols.Json 7.0 -> 9.0.0-preview.2.24128.4
* Microsoft.Extensions.DependencyInjection 8.0 -> 9.0.0-preview.2.24128.5
* Microsoft.Extensions.DependencyInjection.Abstractions 8.0.1 -> 9.0.0-preview.2.24128.5
* Microsoft.Extensions.Features 7.0 -> 9.0.0-preview.2.24128.4
* Microsoft.Extensions.Logging 8.0 -> 9.0.0-preview.2.24128.5
* Microsoft.Extensions.Logging.Abstractions 8.0.1 -> 9.0.0-preview.2.24128.5
* Microsoft.Extensions.Options 8.0.2 -> 9.0.0-preview.2.24128.5
* Microsoft.Extensions.Primitives 8.0 -> 9.0.0-preview.2.24128.5
* System.IO.Pipelines 8.0 -> 9.0.0-preview.2.24128.5
* System.Threading.Channels 8.0 -> 9.0.0-preview.2.24128.5
Total time taken: 3 seconds
CheckToml / toml: /home/runner/work/polyglot/polyglot/Cargo.toml
chat_contract_tests
================
Name Project Compat Latest Kind Platform
---- ------- ------ ------ ---- --------
ahash 0.7.8 0.8.11 --- Normal ---
ahash 0.8.11 --- 0.7.8 Normal ---
allocator-api2 0.2.16 --- Removed Normal ---
autocfg 1.1.0 Removed --- Build ---
bumpalo 3.15.4 Removed --- Normal ---
cfg-if 1.0.0 --- Removed Normal ---
cfg-if 1.0.0 Removed --- Normal ---
equivalent 1.0.1 --- Removed Normal ---
getrandom 0.2.12 Removed --- Normal cfg(any(target_os = "linux", target_os = "android", target_os = "windows", target_os = "macos", target_os = "ios", target_os = "freebsd", target_os = "openbsd", target_os = "netbsd", target_os = "dragonfly", target_os = "solaris", target_os = "illumos", target_os = "fuchsia", target_os = "redox", target_os = "cloudabi", target_os = "haiku", target_os = "vxworks", target_os = "emscripten", target_os = "wasi"))
hashbrown 0.12.3 0.14.3 --- Normal ---
hashbrown 0.14.3 --- 0.12.3 Normal ---
indexmap 1.9.3 2.2.5 --- Normal ---
indexmap 2.2.5 --- 1.9.3 Normal ---
js-sys 0.3.69 Removed --- Normal cfg(all(any(target_arch = "wasm32", target_arch = "wasm64"), target_os = "unknown"))
libc 0.2.153 Removed --- Normal cfg(unix)
log 0.4.21 Removed --- Normal ---
once_cell 1.19.0 Removed --- Normal ---
proc-macro2 1.0.79 --- Removed Normal ---
proc-macro2 1.0.79 Removed --- Normal ---
quote 1.0.35 --- Removed Normal ---
quote 1.0.35 Removed --- Normal ---
syn 2.0.53 --- Removed Normal ---
syn 2.0.53 Removed --- Normal ---
unicode-ident 1.0.12 --- Removed Normal ---
unicode-ident 1.0.12 Removed --- Normal ---
wasi 0.11.0+wasi-snapshot-preview1 Removed --- Normal cfg(target_os = "wasi")
wasm-bindgen 0.2.92 Removed --- Normal ---
wasm-bindgen 0.2.92 Removed --- Normal cfg(all(any(target_arch = "wasm32", target_arch = "wasm64"), target_os = "unknown"))
wasm-bindgen-backend 0.2.92 Removed --- Normal ---
wasm-bindgen-macro 0.2.92 Removed --- Normal ---
wasm-bindgen-macro-support 0.2.92 Removed --- Normal ---
wasm-bindgen-shared 0.2.92 Removed --- Normal ---
zerocopy 0.7.32 --- Removed Normal ---
zerocopy-derive 0.7.32 --- Removed Normal ---
spiral_temp_extension
================
Name Project Compat Latest Kind Platform
---- ------- ------ ------ ---- --------
uuid 1.7.0 --- 1.8.0 Normal ---
fable_library_rust
================
Name Project Compat Latest Kind Platform
---- ------- ------ ------ ---- --------
uuid 1.7.0 --- 1.8.0 Normal ---
CheckToml / toml: /home/runner/work/polyglot/polyglot/apps/chat/contract/Cargo.toml
Name Project Compat Latest Kind Platform
---- ------- ------ ------ ---- --------
near-sdk->bs58 0.5.0 0.5.1 0.5.1 Normal ---
CheckToml / toml: /home/runner/work/polyglot/polyglot/apps/chat/contract/tests/Cargo.toml
Name Project Compat Latest Kind Platform
---- ------- ------ ------ ---- --------
actix->bitflags 2.4.2 2.5.0 2.5.0 Normal ---
ahash->cfg-if 1.0.0 Removed Removed Normal ---
ahash->zerocopy 0.7.32 Removed Removed Normal ---
curve25519-dalek->fiat-crypto 0.2.6 0.2.7 0.2.7 Normal cfg(curve25519_dalek_backend = "fiat")
hashbrown->ahash 0.8.11 0.7.8 0.7.8 Normal ---
hashbrown->allocator-api2 0.2.16 Removed Removed Normal ---
indexmap->equivalent 1.0.1 Removed Removed Normal ---
indexmap->hashbrown 0.14.3 0.12.3 0.12.3 Normal ---
libredox->bitflags 2.4.2 2.5.0 2.5.0 Normal ---
near-jsonrpc-client->reqwest 0.11.26 0.11.27 0.11.27 Normal ---
near-workspaces->bs58 0.5.0 0.5.1 0.5.1 Normal ---
near-workspaces->reqwest 0.11.26 0.11.27 0.11.27 Normal ---
openssl->bitflags 2.4.2 2.5.0 2.5.0 Normal ---
proc-macro2->unicode-ident 1.0.12 Removed Removed Normal ---
quote->proc-macro2 1.0.79 Removed Removed Normal ---
regex->aho-corasick 1.1.2 1.1.3 1.1.3 Normal ---
regex-automata->aho-corasick 1.1.2 1.1.3 1.1.3 Normal ---
rustix->bitflags 2.4.2 2.5.0 2.5.0 Normal ---
serde_with->indexmap 2.2.5 1.9.3 1.9.3 Normal ---
syn->proc-macro2 1.0.79 Removed Removed Normal ---
syn->quote 1.0.35 Removed Removed Normal ---
syn->unicode-ident 1.0.12 Removed Removed Normal ---
tempfile->rustix 0.38.31 0.38.32 0.38.32 Normal cfg(any(unix, target_os = "wasi"))
which->rustix 0.38.31 0.38.32 0.38.32 Normal ---
xattr->rustix 0.38.31 0.38.32 0.38.32 Normal ---
zerocopy->zerocopy-derive 0.7.32 Removed Removed Normal ---
zerocopy-derive->proc-macro2 1.0.79 Removed Removed Normal ---
zerocopy-derive->quote 1.0.35 Removed Removed Normal ---
zerocopy-derive->syn 2.0.53 Removed Removed Normal ---
CheckToml / toml: /home/runner/work/polyglot/polyglot/apps/plot/Cargo.toml
All dependencies are up to date, yay!
/home/runner/work/polyglot/polyglot
> polyglot@ outdated-pre /home/runner/work/polyglot/polyglot
> npm-check-updates --target greatest
Using pnpm
Checking /home/runner/work/polyglot/polyglot/package.json
npm-check-updates ~16.14 → ~17.0-1
Run ncu --target greatest -u to upgrade package.json
/home/runner/work/polyglot/polyglot/apps/ipfs
> ipfs@ outdated-pre /home/runner/work/polyglot/polyglot/apps/ipfs
> npm-check-updates --target greatest
Using pnpm
Checking /home/runner/work/polyglot/polyglot/apps/ipfs/package.json
npm-check-updates ~16.14 → ~17.0-1
Run ncu --target greatest -u to upgrade package.json
/home/runner/work/polyglot/polyglot/apps/spiral/temp/extension
> polyglot@ outdated-pre /home/runner/work/polyglot/polyglot/apps/spiral/temp/extension
> npm-check-updates --target greatest
Using pnpm
Checking /home/runner/work/polyglot/polyglot/apps/spiral/temp/extension/package.json
@playwright/test 1.42.1 → 1.43.0-beta-1709675102000
npm-check-updates ~16.14 → ~17.0-1
Run ncu --target greatest -u to upgrade package.json